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