From ee600e3f76afbdc92c3258c362b6c061ada58b21 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 10 Jul 2004 20:00:44 +0000 Subject: [PATCH] Update. 2004-07-10 Ulrich Drepper * elf/ldconfig.c: Define PROCINFO_CLASS as static before including ldsodefs.h. * sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not already defined. * sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not already defined. * elf/rtld.c (print_statistics): Mark with noinline attribute. * sysdeps/i386/dl-machine.h (elf_machine_rel): Mark with always_inline attribute. (elf_machine_rel_relative): Likewise. * include/string.h: Add libc_hidden_proto for __strtok_r and __strsep_g. * sysdeps/generic/strsep.c: Add libc_hidden_def. * sysdeps/generic/strtok_r.c: Likewise. * sysdeps/i386/strtok_r.S: Add alias for internal symbol. * sysdeps/i386/i686/strtok_r.S: Likewise. * sysdeps/x86_64/strtok_r.S: Likewise. 2004-07-09 Alexandre Oliva * inet/getnetgrent_r.c (internal_setnetgrent): Make it hidden instead of internal-linkage, such that we can alias to it. (internal_endnetgrent, internal_getnetgrent_r): Likewise. --- ChangeLog | 28 ++++++++++++++++++++++++++++ elf/ldconfig.c | 1 + elf/rtld.c | 1 + include/string.h | 3 +++ inet/getnetgrent_r.c | 22 ++++++++++++++++++---- sysdeps/generic/ldsodefs.h | 4 +++- sysdeps/generic/strsep.c | 3 ++- sysdeps/generic/strtok_r.c | 3 ++- sysdeps/i386/dl-machine.h | 2 ++ sysdeps/i386/dl-procinfo.c | 6 +++--- sysdeps/i386/i686/strtok_r.S | 1 + sysdeps/i386/strtok_r.S | 1 + sysdeps/x86_64/strtok_r.S | 1 + 13 files changed, 66 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 479773a86f..5c23113ad9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2004-07-10 Ulrich Drepper + + * elf/ldconfig.c: Define PROCINFO_CLASS as static before including + ldsodefs.h. + * sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not + already defined. + * sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not + already defined. + + * elf/rtld.c (print_statistics): Mark with noinline attribute. + * sysdeps/i386/dl-machine.h (elf_machine_rel): Mark with always_inline + attribute. + (elf_machine_rel_relative): Likewise. + + * include/string.h: Add libc_hidden_proto for __strtok_r and + __strsep_g. + * sysdeps/generic/strsep.c: Add libc_hidden_def. + * sysdeps/generic/strtok_r.c: Likewise. + * sysdeps/i386/strtok_r.S: Add alias for internal symbol. + * sysdeps/i386/i686/strtok_r.S: Likewise. + * sysdeps/x86_64/strtok_r.S: Likewise. + +2004-07-09 Alexandre Oliva + + * inet/getnetgrent_r.c (internal_setnetgrent): Make it hidden + instead of internal-linkage, such that we can alias to it. + (internal_endnetgrent, internal_getnetgrent_r): Likewise. + 2004-07-09 Ulrich Drepper * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Move attribute diff --git a/elf/ldconfig.c b/elf/ldconfig.c index d85bbc8f05..448857ef9a 100644 --- a/elf/ldconfig.c +++ b/elf/ldconfig.c @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#define PROCINFO_CLASS static #include #include #include diff --git a/elf/rtld.c b/elf/rtld.c index 3def0306e2..a65e9c4c7c 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -2229,6 +2229,7 @@ process_envvars (enum mode *modep) /* Print the various times we collected. */ static void +__attribute ((noinline)) print_statistics (hp_timing_t *rtld_total_timep) { #ifndef HP_TIMING_NONAVAIL diff --git a/include/string.h b/include/string.h index 7c05abf7d0..afc6adfbda 100644 --- a/include/string.h +++ b/include/string.h @@ -80,6 +80,9 @@ libc_hidden_proto (basename) libc_hidden_proto (strcoll) libc_hidden_proto (__strcoll_l) libc_hidden_proto (__strxfrm_l) +libc_hidden_proto (__strtok_r) +extern char *__strsep_g (char **__stringp, __const char *__delim); +libc_hidden_proto (__strsep_g) libc_hidden_builtin_proto (memchr) libc_hidden_builtin_proto (memcpy) diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c index dee90ad389..5531844d14 100644 --- a/inet/getnetgrent_r.c +++ b/inet/getnetgrent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996,1997,1998,1999,2002,2004 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 @@ -133,7 +133,10 @@ __internal_setnetgrent_reuse (const char *group, struct __netgrent *datap, return status == NSS_STATUS_SUCCESS; } -static int +int internal_setnetgrent (const char *group, struct __netgrent *datap); +libc_hidden_proto (internal_setnetgrent) + +int internal_setnetgrent (const char *group, struct __netgrent *datap) { /* Free list of all netgroup names from last run. */ @@ -141,6 +144,7 @@ internal_setnetgrent (const char *group, struct __netgrent *datap) return __internal_setnetgrent_reuse (group, datap, &errno); } +libc_hidden_def (internal_setnetgrent) strong_alias (internal_setnetgrent, __internal_setnetgrent) int @@ -158,7 +162,10 @@ setnetgrent (const char *group) } -static void +void internal_endnetgrent (struct __netgrent *datap); +libc_hidden_proto (internal_endnetgrent) + +void internal_endnetgrent (struct __netgrent *datap) { service_user *old_nip; @@ -186,6 +193,7 @@ internal_endnetgrent (struct __netgrent *datap) /* Now free list of all netgroup names from last run. */ free_memory (datap); } +libc_hidden_def (internal_endnetgrent) strong_alias (internal_endnetgrent, __internal_endnetgrent) @@ -200,7 +208,12 @@ endnetgrent (void) } -static int +int internal_getnetgrent_r (char **hostp, char **userp, char **domainp, + struct __netgrent *datap, + char *buffer, size_t buflen, int *errnop); +libc_hidden_proto (internal_getnetgrent_r) + +int internal_getnetgrent_r (char **hostp, char **userp, char **domainp, struct __netgrent *datap, char *buffer, size_t buflen, int *errnop) @@ -286,6 +299,7 @@ internal_getnetgrent_r (char **hostp, char **userp, char **domainp, return status == NSS_STATUS_SUCCESS ? 1 : 0; } +libc_hidden_def (internal_getnetgrent_r) strong_alias (internal_getnetgrent_r, __internal_getnetgrent_r) /* The real entry point. */ diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 53c3290e01..49f766642c 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -424,7 +424,9 @@ struct rtld_global_ro /* Get architecture specific definitions. */ #define PROCINFO_DECL -#define PROCINFO_CLASS EXTERN +#ifndef PROCINFO_CLASS +# define PROCINFO_CLASS EXTERN +#endif #include /* Names of shared object for which the RPATH should be ignored. */ diff --git a/sysdeps/generic/strsep.c b/sysdeps/generic/strsep.c index 5761eecd31..e5342f7a22 100644 --- a/sysdeps/generic/strsep.c +++ b/sysdeps/generic/strsep.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 93, 96, 97, 98, 99 Free Software Foundation, Inc. +/* Copyright (C) 1992, 93, 96, 97, 98, 99, 2004 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 @@ -67,3 +67,4 @@ __strsep (char **stringp, const char *delim) } weak_alias (__strsep, strsep) strong_alias (__strsep, __strsep_g) +libc_hidden_def (__strsep_g) diff --git a/sysdeps/generic/strtok_r.c b/sysdeps/generic/strtok_r.c index 34cc85c9e2..3a5c047b8c 100644 --- a/sysdeps/generic/strtok_r.c +++ b/sysdeps/generic/strtok_r.c @@ -1,5 +1,5 @@ /* Reentrant string tokenizer. Generic version. - Copyright (C) 1991, 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. + Copyright (C) 1991,1996-1999,2001,2004 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 @@ -65,4 +65,5 @@ __strtok_r (s, delim, save_ptr) } return token; } +libc_hidden_def (__strtok_r) weak_alias (__strtok_r, strtok_r) diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 65ae53a408..4b5b8f22e7 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -389,6 +389,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc, MAP is the object containing the reloc. */ static inline void +__attribute ((always_inline)) elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, const Elf32_Sym *sym, const struct r_found_version *version, void *const reloc_addr_arg) @@ -639,6 +640,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, #endif /* !RTLD_BOOTSTRAP */ static inline void +__attribute ((always_inline)) elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, void *const reloc_addr_arg) { diff --git a/sysdeps/i386/dl-procinfo.c b/sysdeps/i386/dl-procinfo.c index 01b24d15b1..2108f22cb9 100644 --- a/sysdeps/i386/dl-procinfo.c +++ b/sysdeps/i386/dl-procinfo.c @@ -1,5 +1,5 @@ /* Data for i386 version of processor capability information. - Copyright (C) 2001,2002,2003 Free Software Foundation, Inc. + Copyright (C) 2001,2002,2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -24,7 +24,7 @@ If anything should be added here check whether the size of each string is still ok with the given array size. - All the #ifdefs in the definitions ar equite irritating but + All the #ifdefs in the definitions are quite irritating but necessary if we want to avoid duplicating the information. There are three different modes: @@ -41,7 +41,7 @@ */ #ifndef PROCINFO_CLASS -#define PROCINFO_CLASS +# define PROCINFO_CLASS #endif #if !defined PROCINFO_DECL && defined SHARED diff --git a/sysdeps/i386/i686/strtok_r.S b/sysdeps/i386/i686/strtok_r.S index cbaeabbabe..1c24ca85f5 100644 --- a/sysdeps/i386/i686/strtok_r.S +++ b/sysdeps/i386/i686/strtok_r.S @@ -2,3 +2,4 @@ #define USE_AS_STRTOK_R 1 #include weak_alias (BP_SYM (__strtok_r), BP_SYM (strtok_r)) +strong_alias (BP_SYM (__strtok_r), BP_SYM (__GI___strtok_r)) diff --git a/sysdeps/i386/strtok_r.S b/sysdeps/i386/strtok_r.S index 621093a249..f4a6a2c409 100644 --- a/sysdeps/i386/strtok_r.S +++ b/sysdeps/i386/strtok_r.S @@ -2,3 +2,4 @@ #define USE_AS_STRTOK_R 1 #include weak_alias (BP_SYM (__strtok_r), BP_SYM (strtok_r)) +strong_alias (BP_SYM (__strtok_r), BP_SYM (__GI___strtok_r)) diff --git a/sysdeps/x86_64/strtok_r.S b/sysdeps/x86_64/strtok_r.S index 0248f27236..8ce0089c7b 100644 --- a/sysdeps/x86_64/strtok_r.S +++ b/sysdeps/x86_64/strtok_r.S @@ -2,3 +2,4 @@ #define USE_AS_STRTOK_R 1 #include weak_alias (BP_SYM (__strtok_r), BP_SYM (strtok_r)) +strong_alias (BP_SYM (__strtok_r), BP_SYM (__GI___strtok_r))