[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Error in libfetish.a

From: Bob Proulx
Subject: Re: Error in libfetish.a
Date: Wed, 4 Feb 2004 10:11:00 -0700
User-agent: Mutt/1.3.28i

>   if (inexact_style != human_round_to_nearest && value <    4294967295u l
> )

I think the space in the above is the problem.  "4294967295u l" with
your machine.  But 18446744073709551615ull with my 10.20 machine.

> Actually, I'm not certain which software I have on this system.  I just
> started in this position a bit more than a year ago, so I'm not sure how
> complete some of the packages are...  I do have the ANSI C compiler
> installed, though.  Is there something I should be specifying to force the
> install to use that package instead of gcc?

You can force the compiler by setting CC and CFLAGS.

  make clean
  ./configure CC=cc CFLAGS='-Ae -O'

That will set -Ae and turn the HP compiler into ANSI mode with
extensions enabled.  This is the mode you want.  Configure should
automatically detect the -Ae for this compiler.  But not wanting to
take too many turns at this please force it so there is no doubt.
Of course the -O turns on the optimizer.

> I see the following values:
> #define HAVE_INTTYPES_H 1
> /* #undef HAVE_STDINT_H */
> /* #undef uintmax_t */
> >From inttypes.h:
> >grep -i uintmax_t inttypes.h
> ** intmax_t and uintmax_t are to be the largest signed and unsigned integer
> /* The following macros define I/O formats for intmax_t and uintmax_t.
> extern uintmax_t __strtoull (const char *, char**, int);
> extern uintmax_t __wcstoull(const wchar_t *, wchar_t **, int);
> extern uintmax_t __strtoull ();
> extern uintmax_t __wcstoull();
> #define strtoumax(__a, __b, __c) (uintmax_t)strtoul(__a, __b, __c)
> #define wcstoumax(__a, __b, __c) (uintmax_t)wcstoul(__a, __b, __c)
> And:
> > grep UINTMAX_MAX inttypes.h
> ** and UINTMAX_MAX (maximum value of the largest supported unsigned integer

Among other things the HP compiler is using cpp token pasting to build
up the value.  My guess is that your gcc installation does not take
this into account, is trying to use the native header files, and the
token pasting is failing.

#ifdef __STDC__
#define __CONCAT__(_A,_B) _A ## _B
#define __CONCAT_U__(_A) _A ## u
#if defined(__STDC_EXT__) && !defined(__LP64__) /* LP64 takes
#precedence */
#define __CONCAT_L__(_A,_B) _A ## _B ## l        /* extra l for long
#long  */
#define __CONCAT_L__(_A,_B) _A ## _B
#define __CONCAT__(_A,_B) _A/**/_B
#define __CONCAT_U__(_A) _A                      /* K&R C does not
#support u */
#define __CONCAT_L__(_A,_B) _A/**/_B/**/l

I am seeing the UINT64_MAX definition.

#define UINT64_MAX     UINT64_C(18446744073709551615)
#define UINT64_C(__c)                    __CONCAT_L__(__c,ul)

What version of gcc are you using?

  gcc --version

For C code on 10.20 the gcc-2.95 compiler would be a well known good

> I didn't find a stdint.h... Which seems wrong, somehow. :)

HP-UX 10.20 never had that, too old.  10.20 released in 1996.

> Usually I look for the last stable release, but since I am having so much
> fun with this I went ahead and grabbed the alpha release you pointed to.

Actually the test release looks pretty good right now.

Try the native ansi compiler.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]