* 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.
This commit is contained in:
Ulrich Drepper 2002-04-07 19:46:16 +00:00
parent af5fac2f3b
commit b44e30163d
23 changed files with 193 additions and 132 deletions

View File

@ -1,5 +1,33 @@
2002-04-07 Ulrich Drepper <drepper@redhat.com> 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 * sysdeps/mach/hurd/Versions: Add _dl_init_first to libc and ld export
list. list.
* elf/Versions: Remove it here. * elf/Versions: Remove it here.

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <aliases.h> #include <aliases.h>
#define LOOKUP_TYPE struct aliasent #define LOOKUP_TYPE struct aliasent
#define SETFUNC_NAME setaliasent #define SETFUNC_NAME setaliasent
#define GETFUNC_NAME getaliasent #define GETFUNC_NAME getaliasent
#define ENDFUNC_NAME endaliasent #define ENDFUNC_NAME endaliasent
#define DATABASE_NAME aliases #define DATABASE_NAME aliases
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXent_r.c" #include "../nss/getXXent_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <aliases.h> #include <aliases.h>
#define LOOKUP_TYPE struct aliasent #define LOOKUP_TYPE struct aliasent
#define FUNCTION_NAME getaliasbyname #define FUNCTION_NAME getaliasbyname
#define DATABASE_NAME aliases #define DATABASE_NAME aliases
#define ADD_PARAMS const char *name #define ADD_PARAMS const char *name
#define ADD_VARIABLES name #define ADD_VARIABLES name
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -21,12 +21,13 @@
#include <stdint.h> #include <stdint.h>
#define LOOKUP_TYPE struct netent #define LOOKUP_TYPE struct netent
#define FUNCTION_NAME getnetbyaddr #define FUNCTION_NAME getnetbyaddr
#define DATABASE_NAME networks #define DATABASE_NAME networks
#define ADD_PARAMS uint32_t net, int type #define ADD_PARAMS uint32_t net, int type
#define ADD_VARIABLES net, type #define ADD_VARIABLES net, type
#define NEED__RES 1 #define NEED__RES 1
#define NEED_H_ERRNO 1 #define NEED_H_ERRNO 1
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,12 +20,13 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct netent #define LOOKUP_TYPE struct netent
#define FUNCTION_NAME getnetbyname #define FUNCTION_NAME getnetbyname
#define DATABASE_NAME networks #define DATABASE_NAME networks
#define ADD_PARAMS const char *name #define ADD_PARAMS const char *name
#define ADD_VARIABLES name #define ADD_VARIABLES name
#define NEED__RES 1 #define NEED__RES 1
#define NEED_H_ERRNO 1 #define NEED_H_ERRNO 1
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -19,14 +19,15 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct netent #define LOOKUP_TYPE struct netent
#define SETFUNC_NAME setnetent #define SETFUNC_NAME setnetent
#define GETFUNC_NAME getnetent #define GETFUNC_NAME getnetent
#define ENDFUNC_NAME endnetent #define ENDFUNC_NAME endnetent
#define DATABASE_NAME networks #define DATABASE_NAME networks
#define STAYOPEN int stayopen #define STAYOPEN int stayopen
#define STAYOPEN_VAR stayopen #define STAYOPEN_VAR stayopen
#define NEED__RES 1 #define NEED__RES 1
#define NEED_H_ERRNO 1 #define NEED_H_ERRNO 1
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXent_r.c" #include "../nss/getXXent_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct protoent #define LOOKUP_TYPE struct protoent
#define FUNCTION_NAME getprotobynumber #define FUNCTION_NAME getprotobynumber
#define DATABASE_NAME protocols #define DATABASE_NAME protocols
#define ADD_PARAMS int proto #define ADD_PARAMS int proto
#define ADD_VARIABLES proto #define ADD_VARIABLES proto
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -19,12 +19,13 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct protoent #define LOOKUP_TYPE struct protoent
#define SETFUNC_NAME setprotoent #define SETFUNC_NAME setprotoent
#define GETFUNC_NAME getprotoent #define GETFUNC_NAME getprotoent
#define ENDFUNC_NAME endprotoent #define ENDFUNC_NAME endprotoent
#define DATABASE_NAME protocols #define DATABASE_NAME protocols
#define STAYOPEN int stayopen #define STAYOPEN int stayopen
#define STAYOPEN_VAR stayopen #define STAYOPEN_VAR stayopen
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXent_r.c" #include "../nss/getXXent_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct protoent #define LOOKUP_TYPE struct protoent
#define FUNCTION_NAME getprotobyname #define FUNCTION_NAME getprotobyname
#define DATABASE_NAME protocols #define DATABASE_NAME protocols
#define ADD_PARAMS const char *name #define ADD_PARAMS const char *name
#define ADD_VARIABLES name #define ADD_VARIABLES name
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <rpc/netdb.h> #include <rpc/netdb.h>
#define LOOKUP_TYPE struct rpcent #define LOOKUP_TYPE struct rpcent
#define FUNCTION_NAME getrpcbyname #define FUNCTION_NAME getrpcbyname
#define DATABASE_NAME rpc #define DATABASE_NAME rpc
#define ADD_PARAMS const char *name #define ADD_PARAMS const char *name
#define ADD_VARIABLES name #define ADD_VARIABLES name
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <rpc/netdb.h> #include <rpc/netdb.h>
#define LOOKUP_TYPE struct rpcent #define LOOKUP_TYPE struct rpcent
#define FUNCTION_NAME getrpcbynumber #define FUNCTION_NAME getrpcbynumber
#define DATABASE_NAME rpc #define DATABASE_NAME rpc
#define ADD_PARAMS int number #define ADD_PARAMS int number
#define ADD_VARIABLES number #define ADD_VARIABLES number
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -19,12 +19,13 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct rpcent #define LOOKUP_TYPE struct rpcent
#define SETFUNC_NAME setrpcent #define SETFUNC_NAME setrpcent
#define GETFUNC_NAME getrpcent #define GETFUNC_NAME getrpcent
#define ENDFUNC_NAME endrpcent #define ENDFUNC_NAME endrpcent
#define DATABASE_NAME rpc #define DATABASE_NAME rpc
#define STAYOPEN int stayopen #define STAYOPEN int stayopen
#define STAYOPEN_VAR stayopen #define STAYOPEN_VAR stayopen
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXent_r.c" #include "../nss/getXXent_r.c"

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -19,12 +19,13 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct servent #define LOOKUP_TYPE struct servent
#define SETFUNC_NAME setservent #define SETFUNC_NAME setservent
#define GETFUNC_NAME getservent #define GETFUNC_NAME getservent
#define ENDFUNC_NAME endservent #define ENDFUNC_NAME endservent
#define DATABASE_NAME services #define DATABASE_NAME services
#define STAYOPEN int stayopen #define STAYOPEN int stayopen
#define STAYOPEN_VAR stayopen #define STAYOPEN_VAR stayopen
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXent_r.c" #include "../nss/getXXent_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct servent #define LOOKUP_TYPE struct servent
#define FUNCTION_NAME getservbyname #define FUNCTION_NAME getservbyname
#define DATABASE_NAME services #define DATABASE_NAME services
#define ADD_PARAMS const char *name, const char *proto #define ADD_PARAMS const char *name, const char *proto
#define ADD_VARIABLES name, proto #define ADD_VARIABLES name, proto
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,10 +20,11 @@
#include <netdb.h> #include <netdb.h>
#define LOOKUP_TYPE struct servent #define LOOKUP_TYPE struct servent
#define FUNCTION_NAME getservbyport #define FUNCTION_NAME getservbyport
#define DATABASE_NAME services #define DATABASE_NAME services
#define ADD_PARAMS int port, const char *proto #define ADD_PARAMS int port, const char *proto
#define ADD_VARIABLES port, proto #define ADD_VARIABLES port, proto
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -1,6 +1,6 @@
/* Basic platform-independent macro definitions for mutexes and /* Basic platform-independent macro definitions for mutexes and
thread-specific data. 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. This file is part of the GNU C Library.
Contributed by Wolfram Gloger <wg@malloc.de>, 2001. Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
@ -103,7 +103,7 @@ typedef pthread_mutex_t mutex_t;
#include <bits/libc-tsd.h> #include <bits/libc-tsd.h>
typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */ 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_key_create(key, destr) ((void) (key))
#define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data)) #define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data))
#define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC)) #define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC))

View File

@ -107,13 +107,17 @@
# define AF_VAR_P NULL # define AF_VAR_P NULL
#endif #endif
#ifndef NSS_attribute_hidden
# define NSS_attribute_hidden
#endif
/* Type of the lookup function we need here. */ /* Type of the lookup function we need here. */
typedef enum nss_status (*lookup_function) (ADD_PARAMS, LOOKUP_TYPE *, char *, typedef enum nss_status (*lookup_function) (ADD_PARAMS, LOOKUP_TYPE *, char *,
size_t, int * H_ERRNO_PARM); size_t, int * H_ERRNO_PARM);
/* The lookup function for the first entry of this service. */ /* The lookup function for the first entry of this service. */
extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp) 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. */ /* Interval in which we transfer retry to contact the NSCD. */
#define NSS_NSCD_RETRY 100 #define NSS_NSCD_RETRY 100

View File

@ -92,6 +92,10 @@
# define NEED__RES 0 # define NEED__RES 0
#endif #endif
#ifndef NSS_attribute_hidden
# define NSS_attribute_hidden
#endif
/* This handle for the NSS data base is shared between all /* This handle for the NSS data base is shared between all
set/get/endXXXent functions. */ set/get/endXXXent functions. */
static service_user *nip; static service_user *nip;
@ -112,7 +116,7 @@ __libc_lock_define_initialized (static, lock)
/* The lookup function for the first entry of this service. */ /* The lookup function for the first entry of this service. */
extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp) extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp)
internal_function; internal_function NSS_attribute_hidden;
void void
SETFUNC_NAME (STAYOPEN) SETFUNC_NAME (STAYOPEN)

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,11 +20,12 @@
#include <shadow.h> #include <shadow.h>
#define LOOKUP_TYPE struct spwd #define LOOKUP_TYPE struct spwd
#define SETFUNC_NAME setspent #define SETFUNC_NAME setspent
#define GETFUNC_NAME getspent #define GETFUNC_NAME getspent
#define ENDFUNC_NAME endspent #define ENDFUNC_NAME endspent
#define DATABASE_NAME shadow #define DATABASE_NAME shadow
#define BUFLEN 1024 #define BUFLEN 1024
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXent_r.c" #include "../nss/getXXent_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -20,11 +20,12 @@
#include <shadow.h> #include <shadow.h>
#define LOOKUP_TYPE struct spwd #define LOOKUP_TYPE struct spwd
#define FUNCTION_NAME getspnam #define FUNCTION_NAME getspnam
#define DATABASE_NAME shadow #define DATABASE_NAME shadow
#define ADD_PARAMS const char *name #define ADD_PARAMS const char *name
#define ADD_VARIABLES name #define ADD_VARIABLES name
#define BUFLEN 1024 #define BUFLEN 1024
#define NSS_attribute_hidden attribute_hidden
#include "../nss/getXXbyYY_r.c" #include "../nss/getXXbyYY_r.c"

View File

@ -1,5 +1,5 @@
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 we can't save and restore our caller's value. Instead, we do an
indirect jump through the GOT, using for the temporary register indirect jump through the GOT, using for the temporary register
%ecx, which is call-clobbered. */ %ecx, which is call-clobbered. */
call here2 call 1f
here2: popl %ecx addl $_GLOBAL_OFFSET_TABLE_, %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-here2], %ecx leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx
movl C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOT)(%ecx), %ecx
call *%ecx call *%ecx
#else #else
call BP_SYM (__sigjmp_save) call BP_SYM (__sigjmp_save)
@ -67,4 +66,8 @@ here2: popl %ecx
popl %ecx popl %ecx
popl %edx popl %edx
ret ret
#ifdef PIC
1: movl (%esp), %ecx
ret
#endif
END (BP_SYM (setjmp)) END (BP_SYM (setjmp))

View File

@ -1,5 +1,5 @@
/* setjmp for i386, ELF version. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 we can't save and restore our caller's value. Instead, we do an
indirect jump through the GOT, using for the temporary register indirect jump through the GOT, using for the temporary register
%ecx, which is call-clobbered. */ %ecx, which is call-clobbered. */
call L(here) call 1f
L(here): addl $_GLOBAL_OFFSET_TABLE_, %ecx
popl %ecx leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ecx
movl C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOT)(%ecx), %ecx
jmp *%ecx jmp *%ecx
1: movl (%esp), %ecx
ret
#else #else
jmp BP_SYM (__sigjmp_save) jmp BP_SYM (__sigjmp_save)
#endif #endif

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.org>, August 1995. Contributed by Ulrich Drepper, <drepper@gnu.org>, August 1995.
@ -79,9 +79,12 @@
#define SYSCALL_ERROR_HANDLER \ #define SYSCALL_ERROR_HANDLER \
0:pushl %ebx; \ 0:pushl %ebx; \
call 1f; \ call 1f; \
1:popl %ebx; \ .subsection 1; \
1:movl (%esp), %ebx; \
ret; \
.previous; \
addl $_GLOBAL_OFFSET_TABLE_, %ebx; \
xorl %edx, %edx; \ xorl %edx, %edx; \
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx; \
subl %eax, %edx; \ subl %eax, %edx; \
pushl %edx; \ pushl %edx; \
PUSH_ERRNO_LOCATION_RETURN; \ PUSH_ERRNO_LOCATION_RETURN; \
@ -97,9 +100,12 @@
#else #else
#define SYSCALL_ERROR_HANDLER \ #define SYSCALL_ERROR_HANDLER \
0:call 1f; \ 0:call 1f; \
1:popl %ecx; \ .subsection 1; \
1:movl (%esp), %ecx; \
ret; \
.previous; \
addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
xorl %edx, %edx; \ xorl %edx, %edx; \
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx; \
subl %eax, %edx; \ subl %eax, %edx; \
movl errno@GOT(%ecx), %ecx; \ movl errno@GOT(%ecx), %ecx; \
movl %edx, (%ecx); \ movl %edx, (%ecx); \