This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Double backslashes in fixed header(__FD_ZERO macro)
- From: Frank Heckenbach <frank at g-n-u dot de>
- To: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, bkorb at gnu dot org
- Date: Thu, 5 May 2005 02:55:31 +0200
- Subject: Double backslashes in fixed header(__FD_ZERO macro)
- Reply-to: frank at g-n-u dot de
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)