This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
FD_ZERO problem description changes in EGCS FAQ.
- To: pfeifer at dbai dot tuwien dot ac dot at, egcs-patches at cygnus dot com
- Subject: FD_ZERO problem description changes in EGCS FAQ.
- From: Vladimir Makarov <vmakarov at cygnus dot com>
- Date: Thu, 18 Mar 1999 17:23:10 -0500
Hello, Gerald.
Jeff Law wrote me that you are maintainer EGCS FAQ. I would change the
following entry
---------------------------------------------------------------------------
FD_ZERO macro
The FD_ZERO macro in (e.g.) libc-5.4.46 is incorrect. It uses invalid
asm clobbers. The following rewrite by Ulrich Drepper
<drepper@cygnus.com> should fix this for glibc 2.0:
# define __FD_ZERO(fdsetp) \
do { \
int __d0, __d1; \
__asm__ __volatile__ ("cld; rep; stosl" \
: "=m" (((__fd_mask *) \
(fdsetp))[__FDELT (__FD_SETSIZE)]), \
"=&c" (__d0), "=&D" (__d1) \
: "a" (0), "1" (sizeof (__fd_set) \
/ sizeof (__fd_mask)), \
"2" ((__fd_mask *) (fdsetp)) \
: "memory"); \
} while (0)
---------------------------------------------------------------------------
onto
---------------------------------------------------------------------------
FD_ZERO macro
The FD_ZERO macro in (e.g.) libc-5.4.46 is incorrect. It uses invalid
asm clobbers. The following rewrite by Ulrich Drepper
<drepper@cygnus.com> should fix this for glibc 2.0:
# define __FD_ZERO(fdsetp) \
do { \
int __d0, __d1; \
__asm__ __volatile__ ("cld; rep; stosl" \
: "=m" (((__fd_mask *) \
(fdsetp))[__FDELT (__FD_SETSIZE)]), \
"=&c" (__d0), "=&D" (__d1) \
: "a" (0), "1" (sizeof (__fd_set) \
/ sizeof (__fd_mask)), \
"2" ((__fd_mask *) (fdsetp)) \
: "memory"); \
} while (0)
Currently egcs has a wrap solution of the problem for all version of
libc. The solution will also work if you install a new version of libc
or an older one even without reinstalling egcs after that. Egcs use the
correct FD_ZERO macro instead of incorrect one. You can see details how
egcs makes this in file gcc/fixinc.x86-linux-gnu.
-------------------------------------------------------------------------
You may want to change something in my addition. Please, feel free.
English is not my native language.
Best reagrds,
Vladimir Makarov