aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-08-02 16:57:42 +0000
committerJakub Jelinek <jakub@redhat.com>2006-08-02 16:57:42 +0000
commit5d550e87dde9b5a3321c98513099d7da601319ef (patch)
tree2533cbd8626062bb158d72ceda221d35c76605a1
parentebe3a574be44dc0d7724945e8cea53b92297593b (diff)
downloadglibc-5d550e87dde9b5a3321c98513099d7da601319ef.tar.xz
glibc-5d550e87dde9b5a3321c98513099d7da601319ef.zip
Updated to fedora-glibc-20060802T1650cvs/fedora-glibc-2_4_90-16
-rw-r--r--ChangeLog48
-rw-r--r--elf/dl-addr.c74
-rw-r--r--elf/dl-open.c4
-rw-r--r--elf/tst-auditmod1.c26
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in11
-rwxr-xr-xiconvdata/run-iconv-test.sh28
-rw-r--r--localedata/ChangeLog5
-rw-r--r--localedata/locales/es_NI5
-rw-r--r--localedata/locales/es_PE5
-rw-r--r--nis/nss_compat/compat-grp.c29
-rw-r--r--nis/nss_compat/compat-pwd.c69
-rw-r--r--nis/nss_compat/compat-spwd.c59
-rw-r--r--nptl/ChangeLog13
-rw-r--r--nptl/Makefile2
-rw-r--r--nptl/allocatestack.c11
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/smp.h56
-rw-r--r--nptl/sysdeps/unix/sysv/linux/smp.h30
-rw-r--r--nptl/tst-getpid3.c114
-rw-r--r--nscd/initgrcache.c5
-rw-r--r--posix/Makefile2
-rw-r--r--stdlib/test-canon.c8
-rw-r--r--sysdeps/unix/sysv/linux/dl-osinfo.h1
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list3
24 files changed, 434 insertions, 178 deletions
diff --git a/ChangeLog b/ChangeLog
index 7d172adb0f..6d8eea5ae4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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