This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Double backslashes in fixed header(__FD_ZERO macro)


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, frank@g-n-u.de
http://fjf.gnu.de/
GnuPG and PGP keys: http://fjf.gnu.de/plan (7977168E)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]