diff options
-rw-r--r-- | ChangeLog | 28 | ||||
-rw-r--r-- | inet/getaliasent_r.c | 13 | ||||
-rw-r--r-- | inet/getaliasname_r.c | 13 | ||||
-rw-r--r-- | inet/getnetbyad_r.c | 17 | ||||
-rw-r--r-- | inet/getnetbynm_r.c | 17 | ||||
-rw-r--r-- | inet/getnetent_r.c | 21 | ||||
-rw-r--r-- | inet/getproto_r.c | 13 | ||||
-rw-r--r-- | inet/getprtent_r.c | 17 | ||||
-rw-r--r-- | inet/getprtname_r.c | 13 | ||||
-rw-r--r-- | inet/getrpcbyname_r.c | 13 | ||||
-rw-r--r-- | inet/getrpcbynumber_r.c | 13 | ||||
-rw-r--r-- | inet/getrpcent_r.c | 17 | ||||
-rw-r--r-- | inet/getservent_r.c | 17 | ||||
-rw-r--r-- | inet/getsrvbynm_r.c | 13 | ||||
-rw-r--r-- | inet/getsrvbypt_r.c | 13 | ||||
-rw-r--r-- | malloc/thread-m.h | 4 | ||||
-rw-r--r-- | nss/getXXbyYY_r.c | 6 | ||||
-rw-r--r-- | nss/getXXent_r.c | 6 | ||||
-rw-r--r-- | shadow/getspent_r.c | 15 | ||||
-rw-r--r-- | shadow/getspnam_r.c | 15 | ||||
-rw-r--r-- | sysdeps/i386/elf/bsd-setjmp.S | 13 | ||||
-rw-r--r-- | sysdeps/i386/elf/setjmp.S | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 16 |
23 files changed, 193 insertions, 132 deletions
@@ -1,5 +1,33 @@ 2002-04-07 Ulrich Drepper <drepper@redhat.com> + * nss/getXXbyYY_r.c: If NSS_attribute_hidden is defined use it with the + DB_LOOKUP_FCT prototype. + * nss/getXXent_r.c: Likewise. + * inet/getaliasent_r.c: Define NSS_attribute_hidden. + * inet/getaliasname_r.c: Likewise. + * inet/getnetbyad_r.c: Likewise. + * inet/getnetbynm_r.c: Likewise. + * inet/getnetent_r.c: Likewise. + * inet/getproto_r.c: Likewise. + * inet/getprtent_r.c: Likewise. + * inet/getprtname_r.c: Likewise. + * inet/getrpcbyname_r.c: Likewise. + * inet/getrpcbynumber_r.c: Likewise. + * inet/getrpcent_r.c: Likewise. + * inet/getservent_r.c: Likewise. + * inet/getsrvbynm_r.c: Likewise. + * inet/getsrvbypt_r.c: Likewise. + * shadow/getspent_r.c: Likewise. + * shadow/getspnam_r.c: Likewise. + + * malloc/thread-m.h: Define __libc_tsd_MALLOC_data as static. + + * sysdeps/i386/elf/bsd-setjmp.S: Use GOTOFF for __sigjmp_save access. + Use i686-friendly PIC code. + * sysdeps/i386/elf/setjmp.S: Likewise. + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Use i686-friendly PIC code. + * sysdeps/mach/hurd/Versions: Add _dl_init_first to libc and ld export list. * elf/Versions: Remove it here. diff --git a/inet/getaliasent_r.c b/inet/getaliasent_r.c index 03612444d6..6bb0e15281 100644 --- a/inet/getaliasent_r.c +++ b/inet/getaliasent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <aliases.h> -#define LOOKUP_TYPE struct aliasent -#define SETFUNC_NAME setaliasent -#define GETFUNC_NAME getaliasent -#define ENDFUNC_NAME endaliasent -#define DATABASE_NAME aliases +#define LOOKUP_TYPE struct aliasent +#define SETFUNC_NAME setaliasent +#define GETFUNC_NAME getaliasent +#define ENDFUNC_NAME endaliasent +#define DATABASE_NAME aliases +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXent_r.c" diff --git a/inet/getaliasname_r.c b/inet/getaliasname_r.c index c10e4efcba..73078fac87 100644 --- a/inet/getaliasname_r.c +++ b/inet/getaliasname_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <aliases.h> -#define LOOKUP_TYPE struct aliasent -#define FUNCTION_NAME getaliasbyname -#define DATABASE_NAME aliases -#define ADD_PARAMS const char *name -#define ADD_VARIABLES name +#define LOOKUP_TYPE struct aliasent +#define FUNCTION_NAME getaliasbyname +#define DATABASE_NAME aliases +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getnetbyad_r.c b/inet/getnetbyad_r.c index b81481c7ad..4d41786cde 100644 --- a/inet/getnetbyad_r.c +++ b/inet/getnetbyad_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -21,12 +21,13 @@ #include <stdint.h> -#define LOOKUP_TYPE struct netent -#define FUNCTION_NAME getnetbyaddr -#define DATABASE_NAME networks -#define ADD_PARAMS uint32_t net, int type -#define ADD_VARIABLES net, type -#define NEED__RES 1 -#define NEED_H_ERRNO 1 +#define LOOKUP_TYPE struct netent +#define FUNCTION_NAME getnetbyaddr +#define DATABASE_NAME networks +#define ADD_PARAMS uint32_t net, int type +#define ADD_VARIABLES net, type +#define NEED__RES 1 +#define NEED_H_ERRNO 1 +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getnetbynm_r.c b/inet/getnetbynm_r.c index 7685e95cdb..0b7f273749 100644 --- a/inet/getnetbynm_r.c +++ b/inet/getnetbynm_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,12 +20,13 @@ #include <netdb.h> -#define LOOKUP_TYPE struct netent -#define FUNCTION_NAME getnetbyname -#define DATABASE_NAME networks -#define ADD_PARAMS const char *name -#define ADD_VARIABLES name -#define NEED__RES 1 -#define NEED_H_ERRNO 1 +#define LOOKUP_TYPE struct netent +#define FUNCTION_NAME getnetbyname +#define DATABASE_NAME networks +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name +#define NEED__RES 1 +#define NEED_H_ERRNO 1 +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getnetent_r.c b/inet/getnetent_r.c index 7cdede24b0..7657d51d45 100644 --- a/inet/getnetent_r.c +++ b/inet/getnetent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,14 +19,15 @@ #include <netdb.h> -#define LOOKUP_TYPE struct netent -#define SETFUNC_NAME setnetent -#define GETFUNC_NAME getnetent -#define ENDFUNC_NAME endnetent -#define DATABASE_NAME networks -#define STAYOPEN int stayopen -#define STAYOPEN_VAR stayopen -#define NEED__RES 1 -#define NEED_H_ERRNO 1 +#define LOOKUP_TYPE struct netent +#define SETFUNC_NAME setnetent +#define GETFUNC_NAME getnetent +#define ENDFUNC_NAME endnetent +#define DATABASE_NAME networks +#define STAYOPEN int stayopen +#define STAYOPEN_VAR stayopen +#define NEED__RES 1 +#define NEED_H_ERRNO 1 +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXent_r.c" diff --git a/inet/getproto_r.c b/inet/getproto_r.c index ec57a14826..66432a798a 100644 --- a/inet/getproto_r.c +++ b/inet/getproto_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <netdb.h> -#define LOOKUP_TYPE struct protoent -#define FUNCTION_NAME getprotobynumber -#define DATABASE_NAME protocols -#define ADD_PARAMS int proto -#define ADD_VARIABLES proto +#define LOOKUP_TYPE struct protoent +#define FUNCTION_NAME getprotobynumber +#define DATABASE_NAME protocols +#define ADD_PARAMS int proto +#define ADD_VARIABLES proto +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getprtent_r.c b/inet/getprtent_r.c index 2350c25678..ce502bb243 100644 --- a/inet/getprtent_r.c +++ b/inet/getprtent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,12 +19,13 @@ #include <netdb.h> -#define LOOKUP_TYPE struct protoent -#define SETFUNC_NAME setprotoent -#define GETFUNC_NAME getprotoent -#define ENDFUNC_NAME endprotoent -#define DATABASE_NAME protocols -#define STAYOPEN int stayopen -#define STAYOPEN_VAR stayopen +#define LOOKUP_TYPE struct protoent +#define SETFUNC_NAME setprotoent +#define GETFUNC_NAME getprotoent +#define ENDFUNC_NAME endprotoent +#define DATABASE_NAME protocols +#define STAYOPEN int stayopen +#define STAYOPEN_VAR stayopen +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXent_r.c" diff --git a/inet/getprtname_r.c b/inet/getprtname_r.c index cac6607f2d..579f255886 100644 --- a/inet/getprtname_r.c +++ b/inet/getprtname_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <netdb.h> -#define LOOKUP_TYPE struct protoent -#define FUNCTION_NAME getprotobyname -#define DATABASE_NAME protocols -#define ADD_PARAMS const char *name -#define ADD_VARIABLES name +#define LOOKUP_TYPE struct protoent +#define FUNCTION_NAME getprotobyname +#define DATABASE_NAME protocols +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getrpcbyname_r.c b/inet/getrpcbyname_r.c index e7328c703f..e28e59e82e 100644 --- a/inet/getrpcbyname_r.c +++ b/inet/getrpcbyname_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <rpc/netdb.h> -#define LOOKUP_TYPE struct rpcent -#define FUNCTION_NAME getrpcbyname -#define DATABASE_NAME rpc -#define ADD_PARAMS const char *name -#define ADD_VARIABLES name +#define LOOKUP_TYPE struct rpcent +#define FUNCTION_NAME getrpcbyname +#define DATABASE_NAME rpc +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getrpcbynumber_r.c b/inet/getrpcbynumber_r.c index a30a839b45..73e6c5052b 100644 --- a/inet/getrpcbynumber_r.c +++ b/inet/getrpcbynumber_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <rpc/netdb.h> -#define LOOKUP_TYPE struct rpcent -#define FUNCTION_NAME getrpcbynumber -#define DATABASE_NAME rpc -#define ADD_PARAMS int number -#define ADD_VARIABLES number +#define LOOKUP_TYPE struct rpcent +#define FUNCTION_NAME getrpcbynumber +#define DATABASE_NAME rpc +#define ADD_PARAMS int number +#define ADD_VARIABLES number +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getrpcent_r.c b/inet/getrpcent_r.c index 7f8d55e3cd..aa0817da02 100644 --- a/inet/getrpcent_r.c +++ b/inet/getrpcent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,12 +19,13 @@ #include <netdb.h> -#define LOOKUP_TYPE struct rpcent -#define SETFUNC_NAME setrpcent -#define GETFUNC_NAME getrpcent -#define ENDFUNC_NAME endrpcent -#define DATABASE_NAME rpc -#define STAYOPEN int stayopen -#define STAYOPEN_VAR stayopen +#define LOOKUP_TYPE struct rpcent +#define SETFUNC_NAME setrpcent +#define GETFUNC_NAME getrpcent +#define ENDFUNC_NAME endrpcent +#define DATABASE_NAME rpc +#define STAYOPEN int stayopen +#define STAYOPEN_VAR stayopen +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXent_r.c" diff --git a/inet/getservent_r.c b/inet/getservent_r.c index b762421c7e..25cbf322c1 100644 --- a/inet/getservent_r.c +++ b/inet/getservent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,12 +19,13 @@ #include <netdb.h> -#define LOOKUP_TYPE struct servent -#define SETFUNC_NAME setservent -#define GETFUNC_NAME getservent -#define ENDFUNC_NAME endservent -#define DATABASE_NAME services -#define STAYOPEN int stayopen -#define STAYOPEN_VAR stayopen +#define LOOKUP_TYPE struct servent +#define SETFUNC_NAME setservent +#define GETFUNC_NAME getservent +#define ENDFUNC_NAME endservent +#define DATABASE_NAME services +#define STAYOPEN int stayopen +#define STAYOPEN_VAR stayopen +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXent_r.c" diff --git a/inet/getsrvbynm_r.c b/inet/getsrvbynm_r.c index b36dd4caa1..cb716eb6f3 100644 --- a/inet/getsrvbynm_r.c +++ b/inet/getsrvbynm_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <netdb.h> -#define LOOKUP_TYPE struct servent -#define FUNCTION_NAME getservbyname -#define DATABASE_NAME services -#define ADD_PARAMS const char *name, const char *proto -#define ADD_VARIABLES name, proto +#define LOOKUP_TYPE struct servent +#define FUNCTION_NAME getservbyname +#define DATABASE_NAME services +#define ADD_PARAMS const char *name, const char *proto +#define ADD_VARIABLES name, proto +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/inet/getsrvbypt_r.c b/inet/getsrvbypt_r.c index d86a70b0c0..bbba6b0c55 100644 --- a/inet/getsrvbypt_r.c +++ b/inet/getsrvbypt_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,10 +20,11 @@ #include <netdb.h> -#define LOOKUP_TYPE struct servent -#define FUNCTION_NAME getservbyport -#define DATABASE_NAME services -#define ADD_PARAMS int port, const char *proto -#define ADD_VARIABLES port, proto +#define LOOKUP_TYPE struct servent +#define FUNCTION_NAME getservbyport +#define DATABASE_NAME services +#define ADD_PARAMS int port, const char *proto +#define ADD_VARIABLES port, proto +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/malloc/thread-m.h b/malloc/thread-m.h index 9cbfb497b8..3fec10afad 100644 --- a/malloc/thread-m.h +++ b/malloc/thread-m.h @@ -1,6 +1,6 @@ /* Basic platform-independent macro definitions for mutexes and thread-specific data. - Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Wolfram Gloger <wg@malloc.de>, 2001. @@ -103,7 +103,7 @@ typedef pthread_mutex_t mutex_t; #include <bits/libc-tsd.h> typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */ -__libc_tsd_define (, MALLOC) /* declaration/common definition */ +__libc_tsd_define (static, MALLOC) /* declaration/common definition */ #define tsd_key_create(key, destr) ((void) (key)) #define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data)) #define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC)) diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c index ecd28ad2c2..12d3cd6705 100644 --- a/nss/getXXbyYY_r.c +++ b/nss/getXXbyYY_r.c @@ -107,13 +107,17 @@ # define AF_VAR_P NULL #endif +#ifndef NSS_attribute_hidden +# define NSS_attribute_hidden +#endif + /* Type of the lookup function we need here. */ typedef enum nss_status (*lookup_function) (ADD_PARAMS, LOOKUP_TYPE *, char *, size_t, int * H_ERRNO_PARM); /* The lookup function for the first entry of this service. */ extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp) - internal_function; + internal_function NSS_attribute_hidden; /* Interval in which we transfer retry to contact the NSCD. */ #define NSS_NSCD_RETRY 100 diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c index e1a2236009..c2ea5b57af 100644 --- a/nss/getXXent_r.c +++ b/nss/getXXent_r.c @@ -92,6 +92,10 @@ # define NEED__RES 0 #endif +#ifndef NSS_attribute_hidden +# define NSS_attribute_hidden +#endif + /* This handle for the NSS data base is shared between all set/get/endXXXent functions. */ static service_user *nip; @@ -112,7 +116,7 @@ __libc_lock_define_initialized (static, lock) /* The lookup function for the first entry of this service. */ extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp) - internal_function; + internal_function NSS_attribute_hidden; void SETFUNC_NAME (STAYOPEN) diff --git a/shadow/getspent_r.c b/shadow/getspent_r.c index ad1bd036fc..074b5cd1fb 100644 --- a/shadow/getspent_r.c +++ b/shadow/getspent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,11 +20,12 @@ #include <shadow.h> -#define LOOKUP_TYPE struct spwd -#define SETFUNC_NAME setspent -#define GETFUNC_NAME getspent -#define ENDFUNC_NAME endspent -#define DATABASE_NAME shadow -#define BUFLEN 1024 +#define LOOKUP_TYPE struct spwd +#define SETFUNC_NAME setspent +#define GETFUNC_NAME getspent +#define ENDFUNC_NAME endspent +#define DATABASE_NAME shadow +#define BUFLEN 1024 +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXent_r.c" diff --git a/shadow/getspnam_r.c b/shadow/getspnam_r.c index bb7fcfac3d..fe1428d3fc 100644 --- a/shadow/getspnam_r.c +++ b/shadow/getspnam_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -20,11 +20,12 @@ #include <shadow.h> -#define LOOKUP_TYPE struct spwd -#define FUNCTION_NAME getspnam -#define DATABASE_NAME shadow -#define ADD_PARAMS const char *name -#define ADD_VARIABLES name -#define BUFLEN 1024 +#define LOOKUP_TYPE struct spwd +#define FUNCTION_NAME getspnam +#define DATABASE_NAME shadow +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name +#define BUFLEN 1024 +#define NSS_attribute_hidden attribute_hidden #include "../nss/getXXbyYY_r.c" diff --git a/sysdeps/i386/elf/bsd-setjmp.S b/sysdeps/i386/elf/bsd-setjmp.S index 690dcb1a81..c1a833ac1c 100644 --- a/sysdeps/i386/elf/bsd-setjmp.S +++ b/sysdeps/i386/elf/bsd-setjmp.S @@ -1,5 +1,5 @@ /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version. - Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,2000,2001,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -56,10 +56,9 @@ ENTRY (BP_SYM (setjmp)) we can't save and restore our caller's value. Instead, we do an indirect jump through the GOT, using for the temporary register %ecx, which is call-clobbered. */ - call here2 -here2: popl %ecx - addl $_GLOBAL_OFFSET_TABLE_+[.-here2], %ecx - movl C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOT)(%ecx), %ecx + call 1f + addl $_GLOBAL_OFFSET_TABLE_, %ecx + leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx call *%ecx #else call BP_SYM (__sigjmp_save) @@ -67,4 +66,8 @@ here2: popl %ecx popl %ecx popl %edx ret +#ifdef PIC +1: movl (%esp), %ecx + ret +#endif END (BP_SYM (setjmp)) diff --git a/sysdeps/i386/elf/setjmp.S b/sysdeps/i386/elf/setjmp.S index 6e1df17a1f..3f52195017 100644 --- a/sysdeps/i386/elf/setjmp.S +++ b/sysdeps/i386/elf/setjmp.S @@ -1,5 +1,5 @@ /* setjmp for i386, ELF version. - Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,2000,2001,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -51,12 +51,12 @@ ENTRY (BP_SYM (__sigsetjmp)) we can't save and restore our caller's value. Instead, we do an indirect jump through the GOT, using for the temporary register %ecx, which is call-clobbered. */ - call L(here) -L(here): - popl %ecx - addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ecx - movl C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOT)(%ecx), %ecx + call 1f + addl $_GLOBAL_OFFSET_TABLE_, %ecx + leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx jmp *%ecx +1: movl (%esp), %ecx + ret #else jmp BP_SYM (__sigjmp_save) #endif diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 884dbd5431..2cc39d69cd 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 93, 95, 96, 97, 98, 99, 00 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1993, 1995-2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, <drepper@gnu.org>, August 1995. @@ -79,9 +79,12 @@ #define SYSCALL_ERROR_HANDLER \ 0:pushl %ebx; \ call 1f; \ -1:popl %ebx; \ + .subsection 1; \ +1:movl (%esp), %ebx; \ + ret; \ + .previous; \ + addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ xorl %edx, %edx; \ - addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx; \ subl %eax, %edx; \ pushl %edx; \ PUSH_ERRNO_LOCATION_RETURN; \ @@ -97,9 +100,12 @@ #else #define SYSCALL_ERROR_HANDLER \ 0:call 1f; \ -1:popl %ecx; \ + .subsection 1; \ +1:movl (%esp), %ecx; \ + ret; \ + .previous; \ + addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ xorl %edx, %edx; \ - addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx; \ subl %eax, %edx; \ movl errno@GOT(%ecx), %ecx; \ movl %edx, (%ecx); \ |