diff options
| author | Jakub Jelinek <jakub@redhat.com> | 2006-08-02 16:57:42 +0000 |
|---|---|---|
| committer | Jakub Jelinek <jakub@redhat.com> | 2006-08-02 16:57:42 +0000 |
| commit | 5d550e87dde9b5a3321c98513099d7da601319ef (patch) | |
| tree | 2533cbd8626062bb158d72ceda221d35c76605a1 | |
| parent | ebe3a574be44dc0d7724945e8cea53b92297593b (diff) | |
| download | glibc-5d550e87dde9b5a3321c98513099d7da601319ef.tar.xz glibc-5d550e87dde9b5a3321c98513099d7da601319ef.zip | |
Updated to fedora-glibc-20060802T1650cvs/fedora-glibc-2_4_90-16
| -rw-r--r-- | ChangeLog | 48 | ||||
| -rw-r--r-- | elf/dl-addr.c | 74 | ||||
| -rw-r--r-- | elf/dl-open.c | 4 | ||||
| -rw-r--r-- | elf/tst-auditmod1.c | 26 | ||||
| -rw-r--r-- | fedora/branch.mk | 4 | ||||
| -rw-r--r-- | fedora/glibc.spec.in | 11 | ||||
| -rwxr-xr-x | iconvdata/run-iconv-test.sh | 28 | ||||
| -rw-r--r-- | localedata/ChangeLog | 5 | ||||
| -rw-r--r-- | localedata/locales/es_NI | 5 | ||||
| -rw-r--r-- | localedata/locales/es_PE | 5 | ||||
| -rw-r--r-- | nis/nss_compat/compat-grp.c | 29 | ||||
| -rw-r--r-- | nis/nss_compat/compat-pwd.c | 69 | ||||
| -rw-r--r-- | nis/nss_compat/compat-spwd.c | 59 | ||||
| -rw-r--r-- | nptl/ChangeLog | 13 | ||||
| -rw-r--r-- | nptl/Makefile | 2 | ||||
| -rw-r--r-- | nptl/allocatestack.c | 11 | ||||
| -rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/smp.h | 56 | ||||
| -rw-r--r-- | nptl/sysdeps/unix/sysv/linux/smp.h | 30 | ||||
| -rw-r--r-- | nptl/tst-getpid3.c | 114 | ||||
| -rw-r--r-- | nscd/initgrcache.c | 5 | ||||
| -rw-r--r-- | posix/Makefile | 2 | ||||
| -rw-r--r-- | stdlib/test-canon.c | 8 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/dl-osinfo.h | 1 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/syscalls.list | 3 |
24 files changed, 434 insertions, 178 deletions
@@ -1,3 +1,51 @@ +2006-06-23 Joseph Myers <joseph@codesourcery.com> + + [BZ #2980] + * posix/Makefile (CFLAGS-waitid.c): Add + -fasynchronous-unwind-tables. + +2006-08-02 Ulrich Drepper <drepper@redhat.com> + + * elf/dl-addr.c (_dl_addr): If GNU-style hash tables are present, + walk them instead of the symbol table. + +2006-08-01 Ulrich Drepper <drepper@redhat.com> + + * nscd/initgrcache.c (addinitgroupsX): Judge successful lookups by + status of NSS calls, not the number of returned entries. + + * sysdeps/unix/sysv/linux/syscalls.list: Remove add_key, + request_key, keyctl. + +2006-07-31 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/dl-osinfo.h: Remove unnecessary include. + +2006-07-16 Jeff Bailey <jbailey@ubuntu.com> + + * elf/tst-auditmod1.c: Fix typo in #error. + +2006-07-31 Ulrich Drepper <drepper@redhat.com> + + * elf/tst-auditmod1.c: Remove code for unsupported architectures. + + * iconvdata/run-iconv-test.sh: Run cmp in C locale. + +2006-07-20 Adam Nemet <anemet@caviumnetworks.com> + + * stdlib/test-canon.c (do_test): Close fd before unlinking file so + that the directory is empty even on non-POSIX filesystems. + +2006-07-31 Ulrich Drepper <drepper@redhat.com> + + * elf/dl-open.c (dl_open_worker): Add branch prediction. + + * nis/nss_compat/compat-grp.c: Avoid unnecessary setgrent calls into + the backend NSS module. If backend setgrent call failed, don't have + internal_setgrent fail. Just remember this until it is needed. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + 2006-07-30 Roland McGrath <roland@redhat.com> * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: File removed. diff --git a/elf/dl-addr.c b/elf/dl-addr.c index ced8978eb3..535977ca5e 100644 --- a/elf/dl-addr.c +++ b/elf/dl-addr.c @@ -74,28 +74,62 @@ _dl_addr (const void *address, Dl_info *info, ElfW(Word) strtabsize = match->l_info[DT_STRSZ]->d_un.d_val; - const ElfW(Sym) *symtabend; - if (match->l_info[DT_HASH] != NULL) - symtabend = (symtab - + ((Elf_Symndx *) D_PTR (match, l_info[DT_HASH]))[1]); + const ElfW(Sym) *matchsym = NULL; + if (match->l_info[DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM + DT_THISPROCNUM + + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] != NULL) + { + /* We look at all symbol table entries referenced by the + hash table. */ + for (Elf_Symndx bucket = 0; bucket < match->l_nbuckets; ++bucket) + { + Elf32_Word symndx = match->l_gnu_buckets[bucket]; + if (bucket != 0) + { + const Elf32_Word *hasharr = &match->l_gnu_chain_zero[symndx]; + + do + { + /* The hash table never references local symbols + so we can omit that test here. */ + if (symtab[symndx].st_shndx != SHN_UNDEF +#ifdef USE_TLS + && ELFW(ST_TYPE) (symtab[symndx].st_info) != STT_TLS +#endif + && DL_ADDR_SYM_MATCH (match, &symtab[symndx], + matchsym, addr) + && symtab[symndx].st_name < strtabsize) + matchsym = (ElfW(Sym) *) &symtab[symndx]; + + ++symndx; + } + while ((*hasharr++ & 1u) == 0); + } + } + } else - /* There is no direct way to determine the number of symbols in the - dynamic symbol table and no hash table is present. The ELF - binary is ill-formed but what shall we do? Use the beginning of - the string table which generally follows the symbol table. */ - symtabend = (const ElfW(Sym) *) strtab; - - const ElfW(Sym) *matchsym; - for (matchsym = NULL; (void *) symtab < (void *) symtabend; ++symtab) - if ((ELFW(ST_BIND) (symtab->st_info) == STB_GLOBAL - || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK) -#if defined USE_TLS - && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS + { + const ElfW(Sym) *symtabend; + if (match->l_info[DT_HASH] != NULL) + symtabend = (symtab + + ((Elf_Symndx *) D_PTR (match, l_info[DT_HASH]))[1]); + else + /* There is no direct way to determine the number of symbols in the + dynamic symbol table and no hash table is present. The ELF + binary is ill-formed but what shall we do? Use the beginning of + the string table which generally follows the symbol table. */ + symtabend = (const ElfW(Sym) *) strtab; + + for (; (void *) symtab < (void *) symtabend; ++symtab) + if ((ELFW(ST_BIND) (symtab->st_info) == STB_GLOBAL + || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK) +#ifdef USE_TLS + && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS #endif - && symtab->st_shndx != SHN_UNDEF - && DL_ADDR_SYM_MATCH (match, symtab, matchsym, addr) - && symtab->st_name < strtabsize) - matchsym = (ElfW(Sym) *) symtab; + && symtab->st_shndx != SHN_UNDEF + && DL_ADDR_SYM_MATCH (match, symtab, matchsym, addr) + && symtab->st_name < strtabsize) + matchsym = (ElfW(Sym) *) symtab; + } if (mapp) *mapp = match; diff --git a/elf/dl-open.c b/elf/dl-open.c index 930400c420..cdbb6601d2 100644 --- a/elf/dl-open.c +++ b/elf/dl-open.c @@ -1,5 +1,5 @@ /* Load a shared object at runtime, relocate it, and run its initializer. - Copyright (C) 1996-2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1996-2004, 2005, 2006 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 @@ -341,7 +341,7 @@ dl_open_worker (void *a) if (! l->l_real->l_relocated) { #ifdef SHARED - if (GLRO(dl_profile) != NULL) + if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) { /* If this here is the shared object which we want to profile make sure the profile is started. We can find out whether diff --git a/elf/tst-auditmod1.c b/elf/tst-auditmod1.c index e9f6fe9c4d..2d39df21e8 100644 --- a/elf/tst-auditmod1.c +++ b/elf/tst-auditmod1.c @@ -132,12 +132,6 @@ la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, # define La_regs La_sh_regs # define La_retval La_sh_retval # define int_retval lrv_r0 -#elif defined __mc68000__ -# define pltenter la_m68k_gnu_pltenter -# define pltexit la_m68k_gnu_pltexit -# define La_regs La_m68k_regs -# define La_retval La_m68k_retval -# define int_retval lrv_d0 #elif defined __alpha__ # define pltenter la_alpha_gnu_pltenter # define pltexit la_alpha_gnu_pltexit @@ -162,24 +156,6 @@ la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, # define La_regs La_ia64_regs # define La_retval La_ia64_retval # define int_retval lrv_r8 -#elif defined __mips__ && _MIPS_SIM == _ABIO32 -# define pltenter la_mips_o32_gnu_pltenter -# define pltexit la_mips_o32_gnu_pltexit -# define La_regs La_mips_32_regs -# define La_retval La_mips_32_retval -# define int_retval lrv_v0 -#elif defined __mips__ && _MIPS_SIM == _ABIN32 -# define pltenter la_mips_n32_gnu_pltenter -# define pltexit la_mips_n32_gnu_pltexit -# define La_regs La_mips_64_regs -# define La_retval La_mips_64_retval -# define int_retval lrv_v0 -#elif defined __mips__ && _MIPS_SIM == _ABI64 -# define pltenter la_mips_n64_gnu_pltenter -# define pltexit la_mips_n64_gnu_pltexit -# define La_regs La_mips_64_regs -# define La_retval La_mips_64_retval -# define int_retval lrv_v0 #elif defined __sparc__ && __WORDSIZE == 32 # define pltenter la_sparc32_gnu_pltenter # define pltexit la_sparc32_gnu_pltexit @@ -197,7 +173,7 @@ la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, #include <tst-audit.h> #if (!defined (pltenter) || !defined (pltexit) || !defined (La_regs) \ || !defined (La_retval) || !defined (int_retval)) -# error "architecture specific code needed in sysdeps/CPU/tls-audit.h or here" +# error "architecture specific code needed in sysdeps/CPU/tst-audit.h or here" #endif diff --git a/fedora/branch.mk b/fedora/branch.mk index 0e239ca15d..b472f8bbf7 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-fc4 -fedora-sync-date := 2006-07-31 07:06 UTC -fedora-sync-tag := fedora-glibc-20060731T0706 +fedora-sync-date := 2006-08-02 16:50 UTC +fedora-sync-tag := fedora-glibc-20060802T1650 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index 644cf00559..23b28861a0 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 15 +%define glibcrelease 16 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define xenarches i686 athlon %ifarch %{xenarches} @@ -1433,8 +1433,17 @@ rm -f *.filelist* %endif %changelog +* Wed Aug 2 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-16 +- fix dladdr on binaries/libraries with only DT_GNU_HASH and no + DT_HASH (#200635) +- fix early timeout of initgroups data in nscd (#173019) +- add am/pm display to es_PE and es_NI locales (#167101) +- fix nss_compat failures when nis/nis+ unavailable (#192072) + * Mon Jul 31 2006 Roland McGrath <roland@redhat.com> 2.4.90-15 - fix missing destructor calls in dlclose (#197932) +- enable transliteration support in all locales (#196713) +- disallow RTLD_GLOBAL flag for dlmopen in secondary namespaces (#197462) - PI mutex support * Tue Jul 10 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-13 diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh index 91216447ba..5f6339d2c8 100755 --- a/iconvdata/run-iconv-test.sh +++ b/iconvdata/run-iconv-test.sh @@ -1,6 +1,6 @@ #! /bin/sh -f # Run available iconv(1) tests. -# Copyright (C) 1998-2002, 2005 Free Software Foundation, Inc. +# Copyright (C) 1998-2002, 2005, 2006 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. # @@ -66,7 +66,7 @@ while read from to subset targets; do echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" if test -s testdata/$from..$t; then - cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo $ac_n "/OK$ac_c" fi @@ -75,7 +75,8 @@ while read from to subset targets; do { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - test -s $temp1 && cmp testdata/$from $temp2 > /dev/null 2>&1 || + test -s $temp1 && + LC_ALL=C cmp testdata/$from $temp2 > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "/OK" rm -f $temp1 $temp2 @@ -91,7 +92,7 @@ while read from to subset targets; do { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - cmp testdata/suntzus $temp1 || + LC_ALL=C cmp testdata/suntzus $temp1 || { echo "/FAILED"; failed=1; continue; } echo "/OK" fi @@ -110,7 +111,7 @@ while read from to subset targets; do echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" if test -s testdata/$from..$t; then - cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo $ac_n "/OK$ac_c" fi @@ -120,7 +121,8 @@ while read from to subset targets; do { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - test -s $temp1 && cmp testdata/$from $temp2 > /dev/null 2>&1 || + test -s $temp1 && + LC_ALL=C cmp testdata/$from $temp2 > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "/OK" rm -f $temp1 $temp2 @@ -135,7 +137,7 @@ while read from to subset targets; do { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - cmp testdata/suntzus $temp1 || + LC_ALL=C cmp testdata/suntzus $temp1 || { echo "/FAILED"; failed=1; continue; } echo "/OK" fi @@ -153,32 +155,32 @@ while read utf8 from filename; do # Test conversion to the endianness dependent encoding. echo $ac_n "test encoder: $utf8 -> $from $ac_c" $PROG -f $utf8 -t $from < testdata/${filename}..${utf8} > $temp1 - cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || - cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK" # Test conversion from the endianness dependent encoding. echo $ac_n "test decoder: $from -> $utf8 $ac_c" $PROG -f $from -t $utf8 < testdata/${filename}..${from}.BE > $temp1 - cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } $PROG -f $from -t $utf8 < testdata/${filename}..${from}.LE > $temp1 - cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK" # Test byte swapping behaviour. echo $ac_n "test non-BOM: ${from}BE -> ${from}LE $ac_c" $PROG -f ${from}BE -t ${from}LE < testdata/${filename}..${from}.BE > $temp1 - cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK" # Test byte swapping behaviour. echo $ac_n "test non-BOM: ${from}LE -> ${from}BE $ac_c" $PROG -f ${from}LE -t ${from}BE < testdata/${filename}..${from}.LE > $temp1 - cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || + LC_ALL=C cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK" diff --git a/localedata/ChangeLog b/localedata/ChangeLog index 3e43cf73c6..b58c0c09f9 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,8 @@ +2006-08-01 Ulrich Drepper <drepper@redhat.com> + + * locales/es_NI: Define real t_fmt_ampm and am_pm. + * locales/es_PE: Likewise. + 2006-07-30 Ulrich Drepper <drepper@redhat.com> * locales/te_IN: Minor fixups. diff --git a/localedata/locales/es_NI b/localedata/locales/es_NI index fbae5c7644..d75c68b6c7 100644 --- a/localedata/locales/es_NI +++ b/localedata/locales/es_NI @@ -108,8 +108,9 @@ mon "<U0065><U006E><U0065><U0072><U006F>";/ d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" t_fmt "<U0025><U0054>" -am_pm "";"" -t_fmt_ampm "" +t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ +<U0025><U0070>" +am_pm "<U0041><U004D>";"<U0050><U004D>" date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ <U0025><U005A><U0020><U0025><U0059>" diff --git a/localedata/locales/es_PE b/localedata/locales/es_PE index 7fa54839c6..27390ab764 100644 --- a/localedata/locales/es_PE +++ b/localedata/locales/es_PE @@ -117,8 +117,9 @@ mon "<U0065><U006E><U0065><U0072><U006F>";/ d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" t_fmt "<U0025><U0054>" -am_pm "";"" -t_fmt_ampm "" +t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ +<U0025><U0070>" +am_pm "<U0041><U004D>";"<U0050><U004D>" date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ <U0025><U005A><U0020><U0025><U0059>" diff --git a/nis/nss_compat/compat-grp.c b/nis/nss_compat/compat-grp.c index 093876fd74..f2f7195be1 100644 --- a/nis/nss_compat/compat-grp.c +++ b/nis/nss_compat/compat-grp.c @@ -59,12 +59,13 @@ struct blacklist_t struct ent_t { bool_t files; + enum nss_status setent_status; FILE *stream; struct blacklist_t blacklist; }; typedef struct ent_t en |
