gcc-3.4.3 contains an incorrect header fix for "the __FD_ZERO macro present in glibc 1.x". The file installed in <prefix>/lib/gcc/i686-pc-linux-gnulibc1/3.4.3/include/gnu/types.h contains the following, with spurious double-backslashes:
/* DO NOT EDIT THIS FILE. It has been auto-edited by fixincludes from: "/usr/include/gnu/types.h" This had to be done to correct non-standard usages in the original, manufacturer supplied header file. */ /* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */ #ifndef _TYPES_H_WRAPPER #include <features.h> #include_next <gnu/types.h> #if defined(__FD_ZERO) && !defined(__GLIBC__) #undef __FD_ZERO # define __FD_ZERO(fdsetp) \\ do { \\ int __d0, __d1; \\ __asm__ __volatile__("cld ; rep ; stosl" \\ : "=&c" (__d0), "=&D" (__d1) \\ : "a" (0), "0" (__FDSET_LONGS), \\ "1" ((__fd_set *) (fdsetp)) :"memory"); \\ } while (0) #endif #define _TYPES_H_WRAPPER #endif /* _TYPES_H_WRAPPER */ This patch fixes the issue for me: --- gcc-3.4.3/gcc/fixinc/fixincl.x.orig Sat Aug 14 18:38:10 2004 +++ gcc-3.4.3/gcc/fixinc/fixincl.x Thu May 5 02:28:20 2005 @@ -124,13 +124,13 @@ #include_next <gnu/types.h>\n\n\ #if defined(__FD_ZERO) && !defined(__GLIBC__)\n\ #undef __FD_ZERO\n\ -# define __FD_ZERO(fdsetp) \\\\\n\ - do { \\\\\n\ - int __d0, __d1; \\\\\n\ -__asm__ __volatile__(\"cld ; rep ; stosl\" \\\\\n\ - \t: \"=&c\" (__d0), \"=&D\" (__d1) \\\\\n\ - \t: \"a\" (0), \"0\" (__FDSET_LONGS), \\\\\n\ - \"1\" ((__fd_set *) (fdsetp)) :\"memory\"); \\\\\n\ +# define __FD_ZERO(fdsetp) \\\n\ + do { \\\n\ + int __d0, __d1; \\\n\ +__asm__ __volatile__(\"cld ; rep ; stosl\" \\\n\ + \t: \"=&c\" (__d0), \"=&D\" (__d1) \\\n\ + \t: \"a\" (0), \"0\" (__FDSET_LONGS), \\\n\ + \"1\" ((__fd_set *) (fdsetp)) :\"memory\"); \\\n\ } while (0)\n\ #endif\n\n\ #define _TYPES_H_WRAPPER\n\ The following is probably the correct patch (which I can't readily check as I don't have autogen installed): --- gcc-3.4.3/gcc/fixinc/inclhack.def.orig Sat Aug 14 18:38:10 2004 +++ gcc-3.4.3/gcc/fixinc/inclhack.def Thu May 5 02:46:20 2005 @@ -82,13 +82,13 @@ #if defined(__FD_ZERO) && !defined(__GLIBC__) #undef __FD_ZERO - # define __FD_ZERO(fdsetp) \\ - do { \\ - int __d0, __d1; \\ - __asm__ __volatile__("cld ; rep ; stosl" \\ - : "=&c" (__d0), "=&D" (__d1) \\ - : "a" (0), "0" (__FDSET_LONGS), \\ - "1" ((__fd_set *) (fdsetp)) :"memory"); \\ + # define __FD_ZERO(fdsetp) \ + do { \ + int __d0, __d1; \ + __asm__ __volatile__("cld ; rep ; stosl" \ + : "=&c" (__d0), "=&D" (__d1) \ + : "a" (0), "0" (__FDSET_LONGS), \ + "1" ((__fd_set *) (fdsetp)) :"memory"); \ } while (0) #endif The same issue might affect "the __FD_ZERO macro present in glibc 2.0.x." and other places, but I can't readily test them. Frank -- Frank Heckenbach, [EMAIL PROTECTED] http://fjf.gnu.de/ GnuPG and PGP keys: http://fjf.gnu.de/plan (7977168E)