gcc4.5.0/libiberty/pex-common.h missing pid_t on vms
Jay K
jay.krell@cornell.edu
Mon May 3 11:05:00 GMT 2010
In file included from /src/gcc-4.5.0/libiberty/pex-common.c:23:0:
/src/gcc-4.5.0/libiberty/pex-common.h:73:3: error: expected specifier-qualifier-list before 'pid_t'
the code:
/* pid_t is may defined by config.h or sys/types.h needs to be
included. */
#if !defined(pid_t) && defined(HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
proposed/tested fix:
#ifdef __vms
#include <unistd.h>
#endif
or similar.
This then hits:
/usr/local/lib/gcc/alpha-dec-vms/4_5_0/../../../../alpha-dec-vms/include/unistd.h:475:22: error: macro "geteuid" passed 1 arguments, but takes just 0
/usr/local/lib/gcc/alpha-dec-vms/4_5_0/../../../../alpha-dec-vms/include/unistd.h:476:22: error: macro "getuid" passed 1 arguments, but takes just 0
make[2]: *** [pex-common.o] Error 1
But I say that's a bug in the VMS headers and I patch it:
#if __USE_LONG_GID_T
# pragma __extern_prefix __save
# pragma __extern_prefix "__long_gid_"
#elif __CRTL_VER>= 70000000 && !defined(_VMS_V6_SOURCE)
# if __CAN_USE_EXTERN_PREFIX
# pragma __extern_prefix __save
# pragma __extern_prefix "__unix_"
# else
-# define geteuid() __unix_geteuid()
-# define getuid() __unix_getuid()
+# define geteuid __unix_geteuid
+# define getuid __unix_getuid
# endif
#endif
__uid_t geteuid (void);
__uid_t getuid (void);
I did the same thing in the VMS header unixlib.h.
Maybe something for fixincludes? (along with #define __NEW_STARLET, #define __int64 long long...)
(Alternate interpretation is that gcc should implement __CAN_USE_EXTERN_PREFIX
and the #pragmas. I'd be willing to #define __USE_LONG_GID_T but I assume the pragmas are a problem.)
- Jay
More information about the Gcc
mailing list