From 5d550e87dde9b5a3321c98513099d7da601319ef Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 2 Aug 2006 16:57:42 +0000 Subject: Updated to fedora-glibc-20060802T1650 --- ChangeLog | 48 ++++++++++++++ elf/dl-addr.c | 74 +++++++++++++++------ elf/dl-open.c | 4 +- elf/tst-auditmod1.c | 26 +------- fedora/branch.mk | 4 +- fedora/glibc.spec.in | 11 ++- iconvdata/run-iconv-test.sh | 28 ++++---- localedata/ChangeLog | 5 ++ localedata/locales/es_NI | 5 +- localedata/locales/es_PE | 5 +- nis/nss_compat/compat-grp.c | 29 ++++---- nis/nss_compat/compat-pwd.c | 69 ++++++++++--------- nis/nss_compat/compat-spwd.c | 59 ++++++++++------- nptl/ChangeLog | 13 ++++ nptl/Makefile | 2 +- nptl/allocatestack.c | 11 ++- nptl/sysdeps/unix/sysv/linux/i386/smp.h | 56 ++++++++++++++++ nptl/sysdeps/unix/sysv/linux/smp.h | 30 +-------- nptl/tst-getpid3.c | 114 ++++++++++++++++++++++++++++++++ nscd/initgrcache.c | 5 +- posix/Makefile | 2 +- stdlib/test-canon.c | 8 ++- sysdeps/unix/sysv/linux/dl-osinfo.h | 1 - sysdeps/unix/sysv/linux/syscalls.list | 3 - 24 files changed, 434 insertions(+), 178 deletions(-) create mode 100644 nptl/sysdeps/unix/sysv/linux/i386/smp.h create mode 100644 nptl/tst-getpid3.c diff --git a/ChangeLog b/ChangeLog index 7d172adb0f..6d8eea5ae4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,51 @@ +2006-06-23 Joseph Myers + + [BZ #2980] + * posix/Makefile (CFLAGS-waitid.c): Add + -fasynchronous-unwind-tables. + +2006-08-02 Ulrich Drepper + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/dl-osinfo.h: Remove unnecessary include. + +2006-07-16 Jeff Bailey + + * elf/tst-auditmod1.c: Fix typo in #error. + +2006-07-31 Ulrich Drepper + + * elf/tst-auditmod1.c: Remove code for unsupported architectures. + + * iconvdata/run-iconv-test.sh: Run cmp in C locale. + +2006-07-20 Adam Nemet + + * 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 + + * 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 * 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 #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 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 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 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 , 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 + + * locales/es_NI: Define real t_fmt_ampm and am_pm. + * locales/es_PE: Likewise. + 2006-07-30 Ulrich Drepper * 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 "";/ d_t_fmt "" d_fmt "" t_fmt "" -am_pm "";"" -t_fmt_ampm "" +t_fmt_ampm "/ +" +am_pm "";"" date_fmt "/ / " 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 "";/ d_t_fmt "" d_fmt "" t_fmt "" -am_pm "";"" -t_fmt_ampm "" +t_fmt_ampm "/ +" +am_pm "";"" date_fmt "/ / " 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 ent_t; -static ent_t ext_ent = {TRUE, NULL, {NULL, 0, 0}}; +static ent_t ext_ent = { TRUE, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }}; /* Protect global state against multiple changers. */ __libc_lock_define_initialized (static, lock) @@ -89,7 +90,7 @@ init_nss_interface (void) } static enum nss_status -internal_setgrent (ent_t *ent, int stayopen) +internal_setgrent (ent_t *ent, int stayopen, int needent) { enum nss_status status = NSS_STATUS_SUCCESS; @@ -137,12 +138,8 @@ internal_setgrent (ent_t *ent, int stayopen) else rewind (ent->stream); - if (status == NSS_STATUS_SUCCESS && nss_setgrent) - { - status = nss_setgrent (stayopen); - if (status == NSS_STATUS_UNAVAIL) - status = NSS_STATUS_SUCCESS; - } + if (needent && status == NSS_STATUS_SUCCESS && nss_setgrent) + ent->setent_status = nss_setgrent (stayopen); return status; } @@ -158,7 +155,7 @@ _nss_compat_setgrent (int stayopen) if (ni == NULL) init_nss_interface (); - result = internal_setgrent (&ext_ent, stayopen); + result = internal_setgrent (&ext_ent, stayopen, 1); __libc_lock_unlock (lock); @@ -212,6 +209,10 @@ getgrent_next_nss (struct group *result, ent_t *ent, char *buffer, if (!nss_getgrent_r) return NSS_STATUS_UNAVAIL; + /* If the setgrent call failed, say so. */ + if (ent->setent_status != NSS_STATUS_SUCCESS) + return ent->setent_status; + do { enum nss_status status; @@ -363,7 +364,7 @@ _nss_compat_getgrent_r (struct group *grp, char *buffer, size_t buflen, init_nss_interface (); if (ext_ent.stream == NULL) - result = internal_setgrent (&ext_ent, 1); + result = internal_setgrent (&ext_ent, 1, 1); if (result == NSS_STATUS_SUCCESS) { @@ -485,7 +486,7 @@ enum nss_status _nss_compat_getgrnam_r (const char *name, struct group *grp, char *buffer, size_t buflen, int *errnop) { - ent_t ent = {TRUE, NULL, {NULL, 0, 0}}; + ent_t ent = { TRUE, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }}; enum nss_status result; if (name[0] == '-' || name[0] == '+') @@ -498,7 +499,7 @@ _nss_compat_getgrnam_r (const char *name, struct group *grp, __libc_lock_unlock (lock); - result = internal_setgrent (&ent, 0); + result = internal_setgrent (&ent, 0, 0); if (result == NSS_STATUS_SUCCESS) result = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop); @@ -613,7 +614,7 @@ enum nss_status _nss_compat_getgrgid_r (gid_t gid, struct group *grp, char *buffer, size_t buflen, int *errnop) { - ent_t ent = {TRUE, NULL, {NULL, 0, 0}}; + ent_t ent = { TRUE, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }}; enum nss_status result; __libc_lock_lock (lock); @@ -623,7 +624,7 @@ _nss_compat_getgrgid_r (gid_t gid, struct group *grp, __libc_lock_unlock (lock); - result = internal_setgrent (&ent, 0); + result = internal_setgrent (&ent, 0, 0); if (result == NSS_STATUS_SUCCESS) result = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop); diff --git a/nis/nss_compat/compat-pwd.c b/nis/nss_compat/compat-pwd.c index 1031714529..ac132046da 100644 --- a/nis/nss_compat/compat-pwd.c +++ b/nis/nss_compat/compat-pwd.c @@ -62,9 +62,10 @@ struct blacklist_t struct ent_t { - bool_t netgroup; - bool_t first; - bool_t files; + bool netgroup; + bool first; + bool files; + enum nss_status setent_status; FILE *stream; struct blacklist_t blacklist; struct passwd pwd; @@ -72,8 +73,9 @@ struct ent_t }; typedef struct ent_t ent_t; -static ent_t ext_ent = {0, 0, TRUE, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, NULL, NULL, NULL}}; +static ent_t ext_ent = { false, false, true, NSS_STATUS_SUCCESS, NULL, + { NULL, 0, 0 }, + { NULL, NULL, 0, 0, NULL, NULL, NULL }}; /* Protect global state against multiple changers. */ __libc_lock_define_initialized (static, lock) @@ -202,12 +204,13 @@ copy_pwd_changes (struct passwd *dest, struct passwd *src, } static enum nss_status -internal_setpwent (ent_t *ent, int stayopen) +internal_setpwent (ent_t *ent, int stayopen, int needent) { enum nss_status status = NSS_STATUS_SUCCESS; - ent->first = ent->netgroup = FALSE; - ent->files = TRUE; + ent->first = ent->netgroup = false; + ent->files = true; + ent->setent_status = NSS_STATUS_SUCCESS; /* If something was left over free it. */ if (ent->netgroup) @@ -257,12 +260,8 @@ internal_setpwent (ent_t *ent, int stayopen) give_pwd_free (&ent->pwd); - if (status == NSS_STATUS_SUCCESS && nss_setpwent) - { - status = nss_setpwent (stayopen); - if (status == NSS_STATUS_UNAVAIL) - status = NSS_STATUS_SUCCESS; - } + if (needent && status == NSS_STATUS_SUCCESS && nss_setpwent) + ent->setent_status = nss_setpwent (stayopen); return status; } @@ -278,7 +277,7 @@ _nss_compat_setpwent (int stayopen) if (ni == NULL) init_nss_interface (); - result = internal_setpwent (&ext_ent, stayopen); + result = internal_setpwent (&ext_ent, stayopen, 1); __libc_lock_unlock (lock); @@ -301,7 +300,7 @@ internal_endpwent (ent_t *ent) if (ent->netgroup) __internal_endnetgrent (&ent->netgrdata); - ent->first = ent->netgroup = FALSE; + ent->first = ent->netgroup = false; if (ent->blacklist.data != NULL) { @@ -348,17 +347,17 @@ getpwent_next_nss_netgr (const char *name, struct passwd *result, ent_t *ent, if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) { - ent->netgroup = FALSE; - ent->first = FALSE; + ent->netgroup = false; + ent->first = false; give_pwd_free (&ent->pwd); return NSS_STATUS_UNAVAIL; } - if (ent->first == TRUE) + if (ent->first == true) { memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); __internal_setnetgrent (group, &ent->netgrdata); - ent->first = FALSE; + ent->first = false; } while (1) @@ -427,6 +426,10 @@ getpwent_next_nss (struct passwd *result, ent_t *ent, char *buffer, if (!nss_getpwent_r) return NSS_STATUS_UNAVAIL; + /* If the setpwent call failed, say so. */ + if (ent->setent_status != NSS_STATUS_SUCCESS) + return ent->setent_status; + p2len = pwd_need_buflen (&ent->pwd); if (p2len > buflen) { @@ -437,7 +440,7 @@ getpwent_next_nss (struct passwd *result, ent_t *ent, char *buffer, buflen -= p2len; if (ent->first) - ent->first = FALSE; + ent->first = false; do { @@ -570,8 +573,8 @@ getpwent_next_file (struct passwd *result, ent_t *ent, { enum nss_status status; - ent->netgroup = TRUE; - ent->first = TRUE; + ent->netgroup = true; + ent->first = true; copy_pwd_changes (&ent->pwd, result, NULL, 0); status = getpwent_next_nss_netgr (NULL, result, ent, @@ -626,8 +629,8 @@ getpwent_next_file (struct passwd *result, ent_t *ent, /* +:... */ if (result->pw_name[0] == '+' && result->pw_name[1] == '\0') { - ent->files = FALSE; - ent->first = TRUE; + ent->files = false; + ent->first = true; copy_pwd_changes (&ent->pwd, result, NULL, 0); return getpwent_next_nss (result, ent, buffer, buflen, errnop); @@ -675,7 +678,7 @@ _nss_compat_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen, init_nss_interface (); if (ext_ent.stream == NULL) - result = internal_setpwent (&ext_ent, 1); + result = internal_setpwent (&ext_ent, 1, 1); if (result == NSS_STATUS_SUCCESS) result = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop); @@ -827,8 +830,8 @@ _nss_compat_getpwnam_r (const char *name, struct passwd *pwd, char *buffer, size_t buflen, int *errnop) { enum nss_status result; - ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, NULL, NULL, NULL}}; + ent_t ent = { false, false, true, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }, + { NULL, NULL, 0, 0, NULL, NULL, NULL }}; if (name[0] == '-' || name[0] == '+') return NSS_STATUS_NOTFOUND; @@ -840,7 +843,7 @@ _nss_compat_getpwnam_r (const char *name, struct passwd *pwd, __libc_lock_unlock (lock); - result = internal_setpwent (&ent, 0); + result = internal_setpwent (&ent, 0, 0); if (result == NSS_STATUS_SUCCESS) result = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop); @@ -1069,8 +1072,8 @@ _nss_compat_getpwuid_r (uid_t uid, struct passwd *pwd, char *buffer, size_t buflen, int *errnop) { enum nss_status result; - ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, NULL, NULL, NULL}}; + ent_t ent = { false, false, true, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }, + { NULL, NULL, 0, 0, NULL, NULL, NULL }}; __libc_lock_lock (lock); @@ -1079,7 +1082,7 @@ _nss_compat_getpwuid_r (uid_t uid, struct passwd *pwd, __libc_lock_unlock (lock); - result = internal_setpwent (&ent, 0); + result = internal_setpwent (&ent, 0, 0); if (result == NSS_STATUS_SUCCESS) result = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop); @@ -1136,7 +1139,7 @@ blacklist_store_name (const char *name, ent_t *ent) return; } -/* returns TRUE if ent->blacklist contains name, else FALSE */ +/* Returns TRUE if ent->blacklist contains name, else FALSE. */ static bool_t in_blacklist (const char *name, int namelen, ent_t *ent) { diff --git a/nis/nss_compat/compat-spwd.c b/nis/nss_compat/compat-spwd.c index 5c820a5f65..d1de3f75b0 100644 --- a/nis/nss_compat/compat-spwd.c +++ b/nis/nss_compat/compat-spwd.c @@ -59,9 +59,10 @@ struct blacklist_t struct ent_t { - bool_t netgroup; - bool_t files; - bool_t first; + bool netgroup; + bool files; + bool first; + enum nss_status setent_status; FILE *stream; struct blacklist_t blacklist; struct spwd pwd; @@ -69,8 +70,9 @@ struct ent_t }; typedef struct ent_t ent_t; -static ent_t ext_ent = {0, TRUE, 0, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}}; +static ent_t ext_ent = { false, true, false, NSS_STATUS_SUCCESS, NULL, + { NULL, 0, 0}, + { NULL, NULL, 0, 0, 0, 0, 0, 0, 0}}; /* Protect global state against multiple changers. */ __libc_lock_define_initialized (static, lock) @@ -161,7 +163,7 @@ internal_setspent (ent_t *ent, int stayopen) enum nss_status status = NSS_STATUS_SUCCESS; ent->first = ent->netgroup = 0; - ent->files = TRUE; + ent->files = true; /* If something was left over free it. */ if (ent->netgroup) @@ -212,11 +214,7 @@ internal_setspent (ent_t *ent, int stayopen) give_spwd_free (&ent->pwd); if (status == NSS_STATUS_SUCCESS && nss_setspent) - { - status = nss_setspent (stayopen); - if (status == NSS_STATUS_UNAVAIL) - status = NSS_STATUS_SUCCESS; - } + ent->setent_status = nss_setspent (stayopen); return status; } @@ -255,8 +253,8 @@ internal_endspent (ent_t *ent) if (ent->netgroup) __internal_endnetgrent (&ent->netgrdata); - ent->first = ent->netgroup = FALSE; - ent->files = TRUE; + ent->first = ent->netgroup = false; + ent->files = true; if (ent->blacklist.data != NULL) { @@ -298,19 +296,23 @@ getspent_next_nss_netgr (const char *name, struct spwd *result, ent_t *ent, if (!nss_getspnam_r) return NSS_STATUS_UNAVAIL; + /* If the setpwent call failed, say so. */ + if (ent->setent_status != NSS_STATUS_SUCCESS) + return ent->setent_status; + if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) { - ent->netgroup = FALSE; - ent->first = FALSE; + ent->netgroup = false; + ent->first = false; give_spwd_free (&ent->pwd); return NSS_STATUS_UNAVAIL; } - if (ent->first == TRUE) + if (ent->first == true) { memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); __internal_setnetgrent (group, &ent->netgrdata); - ent->first = FALSE; + ent->first = false; } while (1) @@ -325,7 +327,7 @@ getspent_next_nss_netgr (const char *name, struct spwd *result, ent_t *ent, if (status != 1) { __internal_endnetgrent (&ent->netgrdata); - ent->netgroup = FALSE; + ent->netgroup = false; give_spwd_free (&ent->pwd); return NSS_STATUS_RETURN; } @@ -400,6 +402,7 @@ getspent_next_nss (struct spwd *result, ent_t *ent, return NSS_STATUS_SUCCESS; } + /* This function handle the +user entrys in /etc/shadow */ static enum nss_status getspnam_plususer (const char *name, struct spwd *result, ent_t *ent, @@ -440,6 +443,7 @@ getspnam_plususer (const char *name, struct spwd *result, ent_t *ent, return NSS_STATUS_SUCCESS; } + static enum nss_status getspent_next_file (struct spwd *result, ent_t *ent, char *buffer, size_t buflen, int *errnop) @@ -520,8 +524,8 @@ getspent_next_file (struct spwd *result, ent_t *ent, { int status; - ent->netgroup = TRUE; - ent->first = TRUE; + ent->netgroup = true; + ent->first = true; copy_spwd_changes (&ent->pwd, result, NULL, 0); status = getspent_next_nss_netgr (NULL, result, ent, @@ -577,8 +581,8 @@ getspent_next_file (struct spwd *result, ent_t *ent, /* +:... */ if (result->sp_namp[0] == '+' && result->sp_namp[1] == '\0') { - ent->files = FALSE; - ent->first = TRUE; + ent->files = false; + ent->first = true; copy_spwd_changes (&ent->pwd, result, NULL, 0); return getspent_next_nss (result, ent, buffer, buflen, errnop); @@ -613,6 +617,7 @@ internal_getspent_r (struct spwd *pw, ent_t *ent, return getspent_next_nss (pw, ent, buffer, buflen, errnop); } + enum nss_status _nss_compat_getspent_r (struct spwd *pwd, char *buffer, size_t buflen, int *errnop) @@ -636,6 +641,7 @@ _nss_compat_getspent_r (struct spwd *pwd, char *buffer, size_t buflen, return result; } + /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */ static enum nss_status internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent, @@ -778,13 +784,14 @@ internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent, return NSS_STATUS_SUCCESS; } + enum nss_status _nss_compat_getspnam_r (const char *name, struct spwd *pwd, char *buffer, size_t buflen, int *errnop) { enum nss_status result; - ent_t ent = {0, TRUE, 0, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}}; + ent_t ent = { false, true, false, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0}, + { NULL, NULL, 0, 0, 0, 0, 0, 0, 0}}; if (name[0] == '-' || name[0] == '+') return NSS_STATUS_NOTFOUND; @@ -806,6 +813,7 @@ _nss_compat_getspnam_r (const char *name, struct spwd *pwd, return result; } + /* Support routines for remembering -@netgroup and -user entries. The names are stored in a single string with `|' as separator. */ static void @@ -852,6 +860,7 @@ blacklist_store_name (const char *name, ent_t *ent) return; } + /* Returns TRUE if ent->blacklist contains name, else FALSE. */ static bool_t in_blacklist (const char *name, int namelen, ent_t *ent) @@ -860,7 +869,7 @@ in_blacklist (const char *name, int namelen, ent_t *ent) char *cp; if (ent->blacklist.data == NULL) - return FALSE; + return false; buf[0] = '|'; cp = stpcpy (&buf[1], name); diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 9a95de8bd4..e9011be083 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,16 @@ +2006-08-01 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/smp.h: New file. Old Linux-specific + file. Don't use sysctl. + * sysdeps/unix/sysv/linux/smp.h: Always assume SMP. Archs can + overwrite the file if this is likely not true. + +2006-07-31 Daniel Jacobowitz + + * allocatestack.c (__reclaim_stacks): Reset the PID on cached stacks. + * Makefile (tests): Add tst-getpid3. + * tst-getpid3.c: New file. + 2006-07-30 Roland McGrath * Makefile (libpthread-routines): Add ptw-sigsuspend. diff --git a/nptl/Makefile b/nptl/Makefile index 1a1c377f48..3a72d3707e 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -256,7 +256,7 @@ tests = tst-typesizes \ tst-backtrace1 \ tst-oddstacklimit \ tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \ - tst-getpid1 tst-getpid2 \ + tst-getpid1 tst-getpid2 tst-getpid3 \ tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99) xtests = tst-setuid1 tst-setuid1-static diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index a3ed1a33d3..4a1cd18481 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -742,9 +742,7 @@ __reclaim_stacks (void) list_t *runp; list_for_each (runp, &stack_used) { - struct pthread *curp; - - curp = list_entry (runp, struct pthread, list); + struct pthread *curp = list_entry (runp, struct pthread, list); if (curp != self) { /* This marks the stack as free. */ @@ -758,6 +756,13 @@ __reclaim_stacks (void) } } + /* Reset the PIDs in any cached stacks. */ + list_for_each (runp, &stack_cache) + { + struct pthread *curp = list_entry (runp, struct pthread, list); + curp->pid = self->pid; + } + /* Add the stack of all running threads to the cache. */ list_splice (&stack_used, &stack_cache); diff --git a/nptl/sysdeps/unix/sysv/linux/i386/smp.h b/nptl/sysdeps/unix/sysv/linux/i386/smp.h new file mode 100644 index 0000000000..f68a0c0758 --- /dev/null +++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h @@ -0,0 +1,56 @@ +/* Determine whether the host has multiple processors. Linux version. + Copyright (C) 1996, 2002, 2004, 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#include +#include +#include +#include + +/* Test whether the machine has more than one processor. This is not the + best test but good enough. More complicated tests would require `malloc' + which is not available at that time. */ +static inline int +is_smp_system (void) +{ + union + { + struct utsname uts; + char buf[512]; + } u; + char *cp; + + /* Try reading the number using `sysctl' first. */ + if (uname (&u.uts) == 0) + cp = u.uts.version; + else + { + /* This was not successful. Now try reading the /proc filesystem. */ + int fd = open_not_cancel_2 ("/proc/sys/kernel/version", O_RDONLY); + if (__builtin_expect (fd, 0) == -1 + || read_not_cancel (fd, u.buf, sizeof (u.buf)) <= 0) + /* This also didn't work. We give up and say it's a UP machine. */ + u.buf[0] = '\0'; + + close_not_cancel_no_status (fd); + cp = u.buf; + } + + return strstr (cp, "SMP") != NULL; +} diff --git a/nptl/sysdeps/unix/sysv/linux/smp.h b/nptl/sysdeps/unix/sysv/linux/smp.h index 4f4d358d32..fcc34f7681 100644 --- a/nptl/sysdeps/unix/sysv/linux/smp.h +++ b/nptl/sysdeps/unix/sysv/linux/smp.h @@ -1,5 +1,5 @@ /* Determine whether the host has multiple processors. Linux version. - Copyright (C) 1996, 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 1996, 2002, 2004, 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 @@ -17,36 +17,12 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include -#include -#include -#include - /* Test whether the machine has more than one processor. This is not the best test but good enough. More complicated tests would require `malloc' which is not available at that time. */ static inline int is_smp_system (void) { - static const int sysctl_args[] = { CTL_KERN, KERN_VERSION }; - char buf[512]; - size_t reslen = sizeof (buf); - - /* Try reading the number using `sysctl' first. */ - if (__sysctl ((int *) sysctl_args, - sizeof (sysctl_args) / sizeof (sysctl_args[0]), - buf, &reslen, NULL, 0) < 0) - { - /* This was not successful. Now try reading the /proc filesystem. */ - int fd = open_not_cancel_2 ("/proc/sys/kernel/version", O_RDONLY); - if (__builtin_expect (fd, 0) == -1 - || (reslen = read_not_cancel (fd, buf, sizeof (buf))) <= 0) - /* This also didn't work. We give up and say it's a UP machine. */ - buf[0] = '\0'; - - close_not_cancel_no_status (fd); - } - - return strstr (buf, "SMP") != NULL; + /* Assume all machines are SMP and/or CMT and/or SMT. */ + return 1; } diff --git a/nptl/tst-getpid3.c b/nptl/tst-getpid3.c new file mode 100644 index 0000000000..f1e77f6b10 --- /dev/null +++ b/nptl/tst-getpid3.c @@ -0,0 +1,114 @@ +#include +#include +#include +#include +#include +#include +#include + + +static pid_t pid; + +static void * +pid_thread (void *arg) +{ + if (pid != getpid ()) + { + printf ("pid wrong in thread: should be %d, is %d\n", + (int) pid, (int) getpid ()); + return (void *) 1L; + } + + return NULL; +} + +static int +do_test (void) +{ + pid = getpid (); + + pthread_t thr; + int ret = pthread_create (&thr, NULL, pid_thread, NULL); + if (ret) + { + printf ("pthread_create failed: %d\n", ret); + return 1; + } + + void *thr_ret; + ret = pthread_join (thr, &thr_ret); + if (ret) + { + printf ("pthread_create failed: %d\n", ret); + return 1; + } + else if (thr_ret) + { + printf ("thread getpid failed\n"); + return 1; + } + + pid_t child = fork (); + if (child == -1) + { + printf ("fork failed: %m\n"); + return 1; + } + else if (child == 0) + { + if (pid == getpid ()) + { + puts ("pid did not change after fork"); + exit (1); + } + + pid = getpid (); + ret = pthread_create (&thr, NULL, pid_thread, NULL); + if (ret) + { + printf ("pthread_create failed: %d\n", ret); + return 1; + } + + ret = pthread_join (thr, &thr_ret); + if (ret) + { + printf ("pthread_create failed: %d\n", ret); + return 1; + } + else if (thr_ret) + { + printf ("thread getpid failed\n"); + return 1; + } + + return 0; + } + + int status; + if (TEMP_FAILURE_RETRY (waitpid (child, &status, 0)) != child) + { + puts ("waitpid failed"); + kill (child, SIGKILL); + return 1; + } + + if (!WIFEXITED (status)) + { + if (WIFSIGNALED (status)) + printf ("died from signal %s\n", strsignal (WTERMSIG (status))); + else + puts ("did not terminate correctly"); + return 1; + } + if (WEXITSTATUS (status) != 0) + { + printf ("exit code %d\n", WEXITSTATUS (status)); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c index f2ff03a0b1..b4ae13903a 100644 --- a/nscd/initgrcache.c +++ b/nscd/initgrcache.c @@ -117,6 +117,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, goto out; /* Nothing added yet. */ + bool any_success = false; while (! no_more) { long int prev_start = start; @@ -158,6 +159,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) __libc_fatal ("illegal status in internal_getgrouplist"); + any_success |= status == NSS_STATUS_SUCCESS; + if (status != NSS_STATUS_SUCCESS && nss_next_action (nip, status) == NSS_ACTION_RETURN) break; @@ -171,7 +174,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, ssize_t total; ssize_t written; out: - if (start == 0) + if (!any_success) { /* Nothing found. Create a negative result record. */ written = total = sizeof (notfound); diff --git a/posix/Makefile b/posix/Makefile index 4f76a267e9..605d02c896 100644 --- a/posix/Makefile +++ b/posix/Makefile @@ -142,7 +142,7 @@ CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-sleep.c = -fexceptions CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-waitid.c = -fexceptions +CFLAGS-waitid.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-getopt.c = -fexceptions CFLAGS-wordexp.c = -fexceptions diff --git a/stdlib/test-canon.c b/stdlib/test-canon.c index 54267465b8..9261898795 100644 --- a/stdlib/test-canon.c +++ b/stdlib/test-canon.c @@ -1,5 +1,6 @@ /* Test program for returning the canonical absolute name of a given file. - Copyright (C) 1996,1997,2000,2002,2004,2005 Free Software Foundation, Inc. + Copyright (C) 1996,1997,2000,2002,2004,2005,2006 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger . @@ -213,7 +214,10 @@ do_test (int argc, char ** argv) } if (fd >= 0) - unlink ("doesExist/someFile"); + { + close (fd); + unlink ("doesExist/someFile"); + } if (has_dir) rmdir ("doesExist"); diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h index 6cc0550f3f..3c93218dfc 100644 --- a/sysdeps/unix/sysv/linux/dl-osinfo.h +++ b/sysdeps/unix/sysv/linux/dl-osinfo.h @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 969d054c62..afb6d80978 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -1,6 +1,5 @@ # File name Caller Syscall name Args Strong name Weak names -add_key EXTRA add_key i:pppii add_key adjtimex adjtime adjtimex i:p __adjtimex adjtimex ntp_adjtime __adjtimex_internal bdflush EXTRA bdflush i:ii bdflush capget EXTRA capget i:pp capget @@ -30,7 +29,6 @@ inotify_init EXTRA inotify_init i: inotify_init inotify_rm_watch EXTRA inotify_rm_watch i:ii inotify_rm_watch ioperm - ioperm i:iii ioperm iopl - iopl i:i iopl -keyctl EXTRA keyctl i:iiiii keyctl klogctl EXTRA syslog i:isi klogctl lchown - lchown i:sii __lchown lchown posix_madvise - madvise Vi:pii posix_madvise @@ -54,7 +52,6 @@ putpmsg - putpmsg i:ippii putpmsg query_module EXTRA query_module i:sipip query_module quotactl EXTRA quotactl i:isip quotactl remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages -request_key EXTRA request_key i:pppi request_key sched_getp - sched_getparam i:ip __sched_getparam sched_getparam sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler sched_primax - sched_get_priority_max i:i __sched_get_priority_max sched_get_priority_max -- cgit v1.2.3