Hi Bruno,

Am 07.07.2011 um 19:40 schrieb Bruno Haible:
> Dagobert Michelsen wrote:
>> Maybe the test in awk.h is too strict and should be something like this?
> 
> Do you mean that 'cc' on Solaris cannot be put into a mode where it
>  1) Accepts C99 syntax (declarations after statements and the like),
>  2) Defines __STDC__ to 1, and
>  3) Has a working <ucontext.h> file?
> 
> No combination of command-line options can achieve this? That would seem
> to be a pretty serious deficiency for the vendor compiler on a POSIX like
> platform.

The problem exists only on Solaris 9 i386 as there is no uint64_t needed in
  /usr/include/ia32/sys/reg.h
which is included from <ucontext.h>. At some places the usage of uint64_t is
shielded like this:

> #if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))
> typedef uint64_t        creg64_t;
> #else
> typedef upad64_t        creg64_t;
> #endif

Whereas at some places it isn't:

>         union {
>                 uint16_t fpr_16[5];     /* 80-bits of x87 state */
>                 uint64_t fpr_mmx;       /* 64-bit mmx register */
>                 uint32_t __fpr_pad[4];  /* (pad out to 128-bits) */
>         } fx_st[8];

The compilation seems to work cleanly on Solaris 9/10 Sparc and Solaris 10 i386 
with
  -Xc -D_XPG4_2
as the headers have been modified in Solaris 10.

I am inclined to think the header file for Solaris 9 i386 is buggy as gawk 
compiles
cleanly with
  -Xc -D_XPG4_2 -Duint64_t=upad64_t


Best regards

  -- Dago

Reply via email to