summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog28
-rw-r--r--inet/getaliasent_r.c13
-rw-r--r--inet/getaliasname_r.c13
-rw-r--r--inet/getnetbyad_r.c17
-rw-r--r--inet/getnetbynm_r.c17
-rw-r--r--inet/getnetent_r.c21
-rw-r--r--inet/getproto_r.c13
-rw-r--r--inet/getprtent_r.c17
-rw-r--r--inet/getprtname_r.c13
-rw-r--r--inet/getrpcbyname_r.c13
-rw-r--r--inet/getrpcbynumber_r.c13
-rw-r--r--inet/getrpcent_r.c17
-rw-r--r--inet/getservent_r.c17
-rw-r--r--inet/getsrvbynm_r.c13
-rw-r--r--inet/getsrvbypt_r.c13
-rw-r--r--malloc/thread-m.h4
-rw-r--r--nss/getXXbyYY_r.c6
-rw-r--r--nss/getXXent_r.c6
-rw-r--r--shadow/getspent_r.c15
-rw-r--r--shadow/getspnam_r.c15
-rw-r--r--sysdeps/i386/elf/bsd-setjmp.S13
-rw-r--r--sysdeps/i386/elf/setjmp.S12
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h16
23 files changed, 193 insertions, 132 deletions
diff --git a/ChangeLog b/ChangeLog
index 6746a8c202..e333046216 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);							      \