[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r8595 - in /trunk: libc/ libc/assert/ libc/csu/ libc/dlfcn/ libc/elf/ libc/include/ libc/inet/netinet/ libc/libio/ libc/loca...
- To: commits@xxxxxxxxxx
- Subject: [commits] r8595 - in /trunk: libc/ libc/assert/ libc/csu/ libc/dlfcn/ libc/elf/ libc/include/ libc/inet/netinet/ libc/libio/ libc/loca...
- From: joseph@xxxxxxxxxx
- Date: Wed, 24 Jun 2009 16:26:35 -0000
Author: joseph
Date: Wed Jun 24 09:26:34 2009
New Revision: 8595
Log:
Merge changes between r8519 and r8594 from /fsf/trunk.
Added:
trunk/libc/.gitattributes
- copied unchanged from r8594, fsf/trunk/libc/.gitattributes
trunk/libc/elf/ifuncdep1.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncdep1.c
trunk/libc/elf/ifuncdep1pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncdep1pic.c
trunk/libc/elf/ifuncdep2.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncdep2.c
trunk/libc/elf/ifuncdep2pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncdep2pic.c
trunk/libc/elf/ifuncdep5.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncdep5.c
trunk/libc/elf/ifuncdep5pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncdep5pic.c
trunk/libc/elf/ifuncmain1.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1.c
trunk/libc/elf/ifuncmain1pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1pic.c
trunk/libc/elf/ifuncmain1picstatic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1picstatic.c
trunk/libc/elf/ifuncmain1pie.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1pie.c
trunk/libc/elf/ifuncmain1static.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1static.c
trunk/libc/elf/ifuncmain1staticpic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1staticpic.c
trunk/libc/elf/ifuncmain1staticpie.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1staticpie.c
trunk/libc/elf/ifuncmain1vis.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1vis.c
trunk/libc/elf/ifuncmain1vispic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1vispic.c
trunk/libc/elf/ifuncmain1vispie.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain1vispie.c
trunk/libc/elf/ifuncmain2.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain2.c
trunk/libc/elf/ifuncmain2pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain2pic.c
trunk/libc/elf/ifuncmain2picstatic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain2picstatic.c
trunk/libc/elf/ifuncmain2static.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain2static.c
trunk/libc/elf/ifuncmain3.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain3.c
trunk/libc/elf/ifuncmain4.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain4.c
trunk/libc/elf/ifuncmain4picstatic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain4picstatic.c
trunk/libc/elf/ifuncmain4static.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain4static.c
trunk/libc/elf/ifuncmain5.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain5.c
trunk/libc/elf/ifuncmain5pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain5pic.c
trunk/libc/elf/ifuncmain5picstatic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain5picstatic.c
trunk/libc/elf/ifuncmain5pie.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain5pie.c
trunk/libc/elf/ifuncmain5static.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain5static.c
trunk/libc/elf/ifuncmain5staticpic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain5staticpic.c
trunk/libc/elf/ifuncmain6pie.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain6pie.c
trunk/libc/elf/ifuncmain7.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain7.c
trunk/libc/elf/ifuncmain7pic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain7pic.c
trunk/libc/elf/ifuncmain7picstatic.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain7picstatic.c
trunk/libc/elf/ifuncmain7pie.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain7pie.c
trunk/libc/elf/ifuncmain7static.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmain7static.c
trunk/libc/elf/ifuncmod1.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmod1.c
trunk/libc/elf/ifuncmod3.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmod3.c
trunk/libc/elf/ifuncmod5.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmod5.c
trunk/libc/elf/ifuncmod6.c
- copied unchanged from r8594, fsf/trunk/libc/elf/ifuncmod6.c
trunk/libc/localedata/locales/dv_MV
- copied unchanged from r8594, fsf/trunk/libc/localedata/locales/dv_MV
trunk/libc/localedata/locales/ur_IN
- copied unchanged from r8594, fsf/trunk/libc/localedata/locales/ur_IN
trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c
- copied unchanged from r8594, fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c
trunk/libc/posix/execvpe.c
- copied unchanged from r8594, fsf/trunk/libc/posix/execvpe.c
trunk/libc/sysdeps/x86_64/multiarch/ifunc-defines.sym
- copied unchanged from r8594, fsf/trunk/libc/sysdeps/x86_64/multiarch/ifunc-defines.sym
trunk/libc/sysdeps/x86_64/multiarch/rawmemchr.S
- copied unchanged from r8594, fsf/trunk/libc/sysdeps/x86_64/multiarch/rawmemchr.S
trunk/libc/sysdeps/x86_64/multiarch/strcmp.S
- copied unchanged from r8594, fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S
trunk/libc/sysdeps/x86_64/multiarch/strlen.S
- copied unchanged from r8594, fsf/trunk/libc/sysdeps/x86_64/multiarch/strlen.S
trunk/libc/sysdeps/x86_64/multiarch/strncmp-c.c
- copied unchanged from r8594, fsf/trunk/libc/sysdeps/x86_64/multiarch/strncmp-c.c
trunk/libc/sysdeps/x86_64/multiarch/strncmp.S
- copied unchanged from r8594, fsf/trunk/libc/sysdeps/x86_64/multiarch/strncmp.S
trunk/ports/sysdeps/arm/eabi/backtrace.c
- copied unchanged from r8594, fsf/trunk/ports/sysdeps/arm/eabi/backtrace.c
Removed:
trunk/libc/sysdeps/unix/sysv/linux/grantpt.c
Modified:
trunk/libc/ChangeLog
trunk/libc/Makeconfig
trunk/libc/NEWS
trunk/libc/Versions.def
trunk/libc/assert/assert-perr.c
trunk/libc/assert/assert.c
trunk/libc/csu/elf-init.c
trunk/libc/dlfcn/dlfcn.h
trunk/libc/elf/Makefile
trunk/libc/elf/dl-lookup.c
trunk/libc/elf/dl-sysdep.c
trunk/libc/include/stdlib.h
trunk/libc/include/unistd.h
trunk/libc/inet/netinet/icmp6.h
trunk/libc/libio/Makefile
trunk/libc/libio/fileops.c
trunk/libc/libio/tst-fgetwc.c
trunk/libc/localedata/ChangeLog
trunk/libc/localedata/SUPPORTED
trunk/libc/localedata/locales/de_AT
trunk/libc/login/Makefile
trunk/libc/login/programs/pt_chown.c
trunk/libc/malloc/malloc.c
trunk/libc/manual/charset.texi
trunk/libc/misc/sys/select.h
trunk/libc/nis/nss_compat/compat-initgroups.c
trunk/libc/nis/nss_nis/nis-pwd.c
trunk/libc/nptl/ChangeLog
trunk/libc/nptl/Makefile
trunk/libc/nptl/Versions
trunk/libc/nptl/sysdeps/pthread/bits/sigthread.h
trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
trunk/libc/nscd/Makefile
trunk/libc/nss/getent.c
trunk/libc/po/bg.po
trunk/libc/po/id.po
trunk/libc/po/sv.po
trunk/libc/posix/Makefile
trunk/libc/posix/Versions
trunk/libc/posix/execvp.c
trunk/libc/posix/tst-cpucount.c
trunk/libc/posix/unistd.h
trunk/libc/resolv/res_send.c
trunk/libc/stdlib/Versions
trunk/libc/stdlib/abort.c
trunk/libc/string/strncmp.c
trunk/libc/string/test-memchr.c
trunk/libc/sunrpc/rpcinfo.c
trunk/libc/sysdeps/generic/pty-private.h
trunk/libc/sysdeps/i386/dl-irel.h
trunk/libc/sysdeps/i386/dl-machine.h
trunk/libc/sysdeps/posix/libc_fatal.c
trunk/libc/sysdeps/powerpc/powerpc32/power6/memcpy.S
trunk/libc/sysdeps/powerpc/powerpc32/power6/memset.S
trunk/libc/sysdeps/unix/grantpt.c
trunk/libc/sysdeps/unix/sysv/linux/bits/socket.h
trunk/libc/sysdeps/unix/sysv/linux/libc_fatal.c
trunk/libc/sysdeps/unix/sysv/linux/net/if_arp.h
trunk/libc/sysdeps/unix/sysv/linux/sparc/bits/socket.h
trunk/libc/sysdeps/x86_64/bits/select.h
trunk/libc/sysdeps/x86_64/dl-irel.h
trunk/libc/sysdeps/x86_64/dl-machine.h
trunk/libc/sysdeps/x86_64/memchr.S
trunk/libc/sysdeps/x86_64/multiarch/Makefile
trunk/libc/sysdeps/x86_64/multiarch/init-arch.h
trunk/libc/sysdeps/x86_64/rawmemchr.S
trunk/libc/sysdeps/x86_64/strlen.S
trunk/libc/time/tzfile.c
trunk/libc/timezone/africa
trunk/libc/timezone/antarctica
trunk/libc/timezone/asia
trunk/libc/timezone/australasia
trunk/libc/timezone/backward
trunk/libc/timezone/etcetera
trunk/libc/timezone/europe
trunk/libc/timezone/factory
trunk/libc/timezone/iso3166.tab
trunk/libc/timezone/leapseconds
trunk/libc/timezone/northamerica
trunk/libc/timezone/pacificnew
trunk/libc/timezone/solar87
trunk/libc/timezone/solar88
trunk/libc/timezone/solar89
trunk/libc/timezone/southamerica
trunk/libc/timezone/systemv
trunk/libc/timezone/tzselect.ksh
trunk/libc/timezone/yearistype
trunk/libc/timezone/zdump.c
trunk/libc/timezone/zic.c
trunk/libc/timezone/zone.tab
trunk/ports/ChangeLog.arm
trunk/ports/ChangeLog.mips
trunk/ports/sysdeps/arm/eabi/Makefile
trunk/ports/sysdeps/arm/preconfigure
trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/configure
trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in
trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h
trunk/ports/sysdeps/unix/sysv/linux/mips/bits/socket.h
Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Wed Jun 24 09:26:34 2009
@@ -1,3 +1,369 @@
+2009-06-23 Andreas Schwab <aschwab@xxxxxxxxxx>
+
+ * time/tzfile.c (__tzfile_read): Don't use an empty TZ string.
+
+2009-06-22 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * po/id.po: Update from translation team.
+
+ * po/bg.po: Update from translation team.
+
+2009-06-22 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * string/strncmp.c (STRNCMP): New. Defined to strncmp if not
+ defined.
+ (strncmp): Renamed to STRNCMP.
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ strncmp-c for string.
+ * sysdeps/x86_64/multiarch/init-arch.h (HAS_SSE4_2): Define.
+ * sysdeps/x86_64/multiarch/strcmp.S: New file.
+ * sysdeps/x86_64/multiarch/strncmp.S: New file.
+ * sysdeps/x86_64/multiarch/strncmp-c.c: New file.
+
+2009-06-19 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * elf/Makefile (distribute): Add ifuncmain1staticpie.c,
+ ifuncmain5.c, ifuncmain5pic.c, ifuncmain5picstatic.c,
+ ifuncmain5pie.c, ifuncmain5static.c, ifuncmain5staticpic.c,
+ ifuncdep5.c, ifuncdep5pic.c, ifuncmod5.c, ifuncmain7.c,
+ ifuncmain7pic.c, ifuncmain7picstatic.c, ifuncmain7pie.c, and
+ ifuncmain7static.c.
+ (tests-static): Add ifuncmain5static, ifuncmain5picstatic,
+ ifuncmain7static, and ifuncmain7picstatic.
+ (tests): Also depend on $(objpfx)ifuncmain1staticpie.out,
+ $(objpfx)ifuncmain5pie.out, $(objpfx)ifuncmain6pie.out, and
+ $(objpfx)ifuncmain7pie.out.
+ (modules-names): Add ifuncmod5 ifuncmod6
+ (ifuncmod5.so-no-z-defs): Define.
+ (ifuncmod6.so-no-z-defs): Define.
+ (CFLAGS-ifuncmain5pic.c): Define.
+ (CFLAGS-ifuncmain5picstatic.c): Define.
+ (CFLAGS-ifuncmain5staticpic.c): Define.
+ (CFLAGS-ifuncdep5pic.c): Define.
+ (CFLAGS-ifuncmain7pic.c): Define.
+ (CFLAGS-ifuncmain7picstatic.c): Define.
+ (CFLAGS-ifuncmain1staticpie.c): Define.
+ (CFLAGS-ifuncmain5pie.c): Define.
+ (CFLAGS-ifuncmain6pie.c): Define.
+ (CFLAGS-ifuncmain7pie.c): Define.
+ ($(objpfx)ifuncmain1staticpie.out): Define.
+ ($(objpfx)ifuncmain1staticpie): Define.
+ ($(objpfx)ifuncmain5pie.out): Define.
+ ($(objpfx)ifuncmain5pie): Define.
+ ($(objpfx)ifuncmain6pie.out): Define.
+ ($(objpfx)ifuncmain6pie): Define.
+ ($(objpfx)ifuncmain5): Define.
+ ($(objpfx)ifuncmain5pic): Define.
+ ($(objpfx)ifuncmain5static): Define.
+ ($(objpfx)ifuncmain5staticpic): Define.
+ ($(objpfx)ifuncmain5picstatic): Define.
+ (generated): Add ifuncmain1staticpie, ifuncmain1staticpie.out,
+ ifuncmain5pie, ifuncmain5pie.out, ifuncmain6pie, and
+ ifuncmain6pie.out.
+ * elf/b/elf/ifuncmain1staticpie.c: New file.
+ * elf/ifuncdep5.c: New file.
+ * elf/ifuncdep5pic.c: New file.
+ * elf/ifuncmain5.c: New file.
+ * elf/ifuncmain5pic.c: New file.
+ * elf/ifuncmain5picstatic.c: New file.
+ * elf/ifuncmain5pie.c: New file.
+ * elf/ifuncmain5static.c: New file.
+ * elf/ifuncmain5staticpic.c: New file.
+ * elf/ifuncmain6pie.c: New file.
+ * elf/ifuncmain7.c: New file.
+ * elf/ifuncmain7pic.c: New file.
+ * elf/ifuncmain7picstatic.c: New file.
+ * elf/ifuncmain7pie.c: New file.
+ * elf/ifuncmain7static.c: New file.
+ * elf/ifuncmod5.c: New file.
+ * elf/ifuncmod6.c: New file.
+
+2009-06-20 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10085]
+ * nis/nss_compat/compat-initgroups.c (nss_setgrent): New variable.
+ (nss_endgrent): New variable.
+ (struct ent_t): Add need_endgrent and skip_initgroups_dyn
+ fields. Change type of files to bool and adjust all users.
+ (init_nss_interface): Initialize nss_setgrent and nss_endgrent.
+ (internal_endgrent): Call nss_endgrent if necessary.
+ (add_group): New function. Broken out of...
+ (check_and_add_group): ...here.
+ (getgrent_next_nss): Remove test that any callback is available.
+ Use skip_initgroups_dyn to determine whether to use initgroups_dyn
+ callback. If there is no blacklist we can trust the results returned
+ by the initgroups_dyn callback. In case there is a callback and we
+ find a group entry for the group ID but it doesn't contain the
+ correct member, switch to the slow mode and use getgrent_r.
+ (internal_getgrent_r): When we see a +: entry, determine whether
+ there is any callback and which we can use the initgroups_dyn
+ callback.
+
+2009-06-18 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * malloc/malloc.c (_int_malloc): Add some consistency checks.
+ (_int_free): Likewise.
+
+ * sysdeps/unix/sysv/linux/bits/socket.h: Define PF_IEEE802154 and
+ AF_IEEE802154.
+ * sysdeps/unix/sysv/linux/sparc/bits/socket.h: Likewise.
+ * sysdeps/unix/sysv/linux/net/if_arp.h: Define ARPHRD_IEEE802154
+ and ARPHRD_IEEE802154_PHY.
+
+ * sysdeps/unix/sysv/linux/sparc/bits/socket.h: Add missing definitions
+ relative to generic Linux version.
+
+2009-06-17 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * elf/Makefile ($(objpfx)ifuncmain1pie): Use $(+link-pie).
+ ($(objpfx)ifuncmain1vispie): Likewise.
+
+2009-06-16 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * login/Makefile: Build pt_chown as PIE.
+
+2009-06-15 Andreas Schwab <aschwab@xxxxxxxxxx>
+
+ * debug/xtrace.sh (do_help): Don't treat bug reporting message as
+ a format string.
+ * elf/sln.c (usage): Likewise.
+ * malloc/memusage.sh (do_help): Likewise.
+ * nss/getent.c (more_help): Likewise.
+ * posix/getconf.c (main): Likewise.
+ * sunrpc/rpcinfo.c (usage): Likewise.
+ * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
+
+2009-06-16 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * login/programs/pt_chown.c: Use libcap to drop privileges other than
+ those needed.
+ * login/Makefile: If necessary link pt_chown with -lcap.
+ * sysdeps/generic/pty-private.h: Define FAIL_ENOMEM.
+ * sysdeps/unix/grantpt.c: Handle FAIL_ENOMEM.
+
+2009-06-16 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * sysdeps/x86_64/memchr.S (memchr): Use unsigned instead of signed
+ comparisons.
+ * string/test-memchr.c (do_random_tests): Test very large lengths
+ as well.
+
+2009-06-02 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * Makeconfig (+link-pie): Define.
+ (+prectorS): Define.
+ (+postctorS): Define.
+ * elf/Makefile ($(objpfx)tst-pie1): Use $(+link-pie).
+ * nscd/Makefile ($(objpfx)nscd): Likewise.
+
+2009-04-22 Ryan S. Arnold <rsa@xxxxxxxxxx>
+
+ [BZ #10107]
+ * sysdeps/powerpc/powerpc32/power6/memcpy.S (memcpy): Replace cmpldi
+ with cmplwi.
+ * sysdeps/powerpc/powerpc32/power6/memset.S (memset): Likewise.
+
+2009-06-16 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/grantpt.c: Remove file after folding changes
+ into ...
+ * sysdeps/unix/grantpt.c: ...here.
+
+2009-06-15 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/grantpt.c (grantpt): Only call chown and
+ chmod if it is necessary.
+
+ [BZ #10166]
+ * sysdeps/unix/sysv/linux/grantpt.c: Remove shortcut which was used
+ when the slave device is in devpts or devfs.
+
+ [BZ #10183]
+ * posix/tst-cpucount.c: Don't try more than CPU_SETSIZE bits.
+
+ [BZ #10195]
+ * inet/netinet/icmp6.h (struct nd_opt_home_agent_info): Change type
+ of nd_opt_home_agent_info_preference to uint16_t.
+ Patch by Arnaud Ebalard <arno@xxxxxxxxxxxx>.
+
+ [BZ #10207]
+ * nss/getent.c: Add support for printing gshadow data.
+
+ [BZ #10203]
+ * nis/nss_nis/nis-pwd.c (internal_nis_endpwent): Free all buffers,
+ not just the currently used one and those which follow.
+ Patch by Joe Landers <jlanders@xxxxxxxxxx>.
+
+ [BZ #10196]
+ * libio/tst-fgetwc.c (do_test): Use de_DE.UTF-8 as locale name.
+ * libio/Makefile: Run tst-fgetwc with necessary envvar.
+ Patch by Bruce Dubbs <bdubbs@xxxxxxxxxxxxxxxxxxxx>.
+
+ [BZ #10217]
+ * stdlib/abort.c: Define variable __abort_msg.
+ * stdlib/Versions: Export __abort_msg with GLIBC_PRIVATE version.
+ * include/stdlib.h: Declare __abort_msg.
+ * assert/assert-perr.c: Don't free buffer for message immediately.
+ Store atomically in __abort_msg and free old buffer if necessary.
+ * assert/assert.c: Likewise.
+ * sysdeps/posix/libc_fatal.c: Allocate buffer for message, copy it,
+ store pointer in __abort_msg, and possibly free old string.
+ * sysdeps/unix/sysv/linux/libc_fatal.c: Likewise.
+
+ * time/tzfile.c (__tzfile_read): Correct computation of tzspec_len.
+
+ [BZ #10211]
+ * time/tzfile.c (__tzfile_compute): If we use the envvar format still
+ handle leap seconds if they are available.
+ Patch by Akinori Hattori <hattya@xxxxxxxxxx>.
+
+ * timezone/tzselect.ksh: Update from tzcode2009i.
+ * timezone/zdump.c: Likewise.
+ * timezone/zic.c: Likewise.
+
+ * timezone/africa: Update from tzdata2009i.
+ * timezone/antarctica: Likewise.
+ * timezone/asia: Likewise.
+ * timezone/australasia: Likewise.
+ * timezone/backward: Likewise.
+ * timezone/etcetera: Likewise.
+ * timezone/europe: Likewise.
+ * timezone/factory: Likewise.
+ * timezone/iso3166.tab: Likewise.
+ * timezone/leapseconds: Likewise.
+ * timezone/northamerica: Likewise.
+ * timezone/pacificnew: Likewise.
+ * timezone/solar87: Likewise.
+ * timezone/solar88: Likewise.
+ * timezone/solar89: Likewise.
+ * timezone/southamerica: Likewise.
+ * timezone/systemv: Likewise.
+ * timezone/yearistype: Likewise.
+ * timezone/zone.tab: Likewise.
+
+2009-06-15 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * elf/dl-lookup.c (_dl_debug_bindings): When resolving to
+ STT_GNU_IFUNC symbol or in 8 into type_class.
+
+ * sysdeps/i386/dl-irel.h (elf_irel): Use Elf32_Addr type
+ instead of Elf64_Addr.
+
+2009-06-14 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * po/sv.po: Update from translation team.
+
+ [BZ #10229]
+ * misc/sys/select.h (__NFDBITS): Expression should have type int.
+ * sysdeps/x86_64/bits/select.h: Remove asm versions for __FD_SET,
+ __FD_CLR, and __FD_ISSET. gcc nowadays generates better code from
+ the C version.
+
+2009-06-12 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * Versions.def: Add GLIBC_2.11 for libpthread.
+
+2009-06-11 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * resolv/res_send.c (send_dg): Remember we switched to
+ single-request mode.
+
+2009-06-09 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * dlfcn/dlfcn.h: Remove comma at end of enum.
+ Patch by J.H.M. Dassen <rdassen@xxxxxxxxxx>.
+
+ * libio/fileops.c (_IO_new_file_fopen): Don't prematurely stop
+ parsing mode string.
+
+2009-06-05 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/x86_64/rawmemchr.S: Minor optimization.
+
+ * sysdeps/x86_64/multiarch/rawmemchr.S: New file.
+
+ * sysdeps/x86_64/multiarch/strlen.S: New file.
+ * sysdeps/x86_64/multiarch/ifunc-defines.sym: New file.
+ * sysdeps/x86_64/multiarch/Makefile: Add rule to build ifunc-defines.h.
+ * sysdeps/x86_64/multiarch/init-arch.h: Name structure with register
+ content.
+
+ * csu/elf-init.c: Only compile in IFUNC functionality if USE_MULTIARCH
+ is defined.
+
+2009-06-04 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/x86_64/strlen.S: Minor optimizations.
+
+2009-06-02 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * elf/Makefile (distribute): Add ifuncmain1.c, ifuncmain1pic.c,
+ ifuncmain1vis.c, ifuncmain1vispic.c, ifuncmain1static.c,
+ ifuncmain1staticpic.c, ifuncmain1picstatic.c, ifuncdep1.c,
+ ifuncdep1pic.c, ifuncmod1.c, ifuncmain1pie.c, ifuncmain1vispie.c,
+ ifuncmain2.c, ifuncmain2static.c, ifuncdep2.c,
+ funcmain2pic.c, ifuncmain2picstatic.c, ifuncdep2pic.c,
+ ifuncmain3.c, ifuncmod3.c,.
+ ifuncmain4.c, ifuncmain4static.c, ifuncmain4picstatic.c.
+ (tests-static): Add ifuncmain1static, ifuncmain1picstatic,
+ ifuncmain2static, ifuncmain2picstatic, ifuncmain4static,
+ ifuncmain4picstatic.
+ (tests): Add ifuncmain1, ifuncmain1pic, ifuncmain1vis,
+ ifuncmain1vispic, ifuncmain1staticpic, ifuncmain2, ifuncmain2pic,
+ ifuncmain3, ifuncmain4.
+ (tests): Depend on $(objpfx)ifuncmain1pie.out and
+ $(objpfx)ifuncmain1vispie.out.
+ (modules-names): Add ifuncmod1 ifuncmod3.
+ (generated): Add ifuncmain1pie ifuncmain1pie.out
+ ifuncmain1vispie ifuncmain1vispie.out.
+ Define rules to build and run the tests.
+ * elf/ifuncdep1.c: New file.
+ * elf/ifuncdep1pic.c: New file.
+ * elf/ifuncdep2.c: New file.
+ * elf/ifuncdep2pic.c: New file.
+ * elf/ifuncmain1.c: New file.
+ * elf/ifuncmain1pic.c: New file.
+ * elf/ifuncmain1picstatic.c: New file.
+ * elf/ifuncmain1pie.c: New file.
+ * elf/ifuncmain1static.c: New file.
+ * elf/ifuncmain1staticpic.c: New file.
+ * elf/ifuncmain1vis.c: New file..
+ * elf/ifuncmain1vispic.c: New file..
+ * elf/ifuncmain1vispie.c: New file.
+ * elf/ifuncmain2.c: New file.
+ * elf/ifuncmain2pic.c: New file.
+ * elf/ifuncmain2picstatic.c: New file.
+ * elf/ifuncmain2static.c: New file.
+ * elf/ifuncmain3.c: New file.
+ * elf/ifuncmain4.c: New file.
+ * elf/ifuncmain4picstatic.c: New file.
+ * elf/ifuncmain4static.c: New file.
+ * elf/ifuncmod1.c: New file.
+ * elf/ifuncmod3.c: New file.
+
+2009-06-03 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * elf/dl-sysdep.c (_dl_show_auxv): Terminate correct string.
+
+2009-06-02 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10221]
+ * posix/Makefile (routines): Add execvpe.
+ * posix/Versions: Export execvpe for GLIBC_2.11.
+ * posix/execvp.c: Now only a wrapper. Move code to...
+ * posix/execvpe.c: ...here. New file.
+ * posix/unistd.h: Declare execvpe.
+
+2009-06-01 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/i386/dl-machine.h (elf_machine_rel): Reorder conditions
+ for STT_GNU_IFUNC handling for efficiency.
+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
+
+ * sysdeps/i386/dl-irel.h (elf_irel): Use __libc_fatal instead of just
+ _exit.
+ * sysdeps/x86_64/dl-irel.h (elf_irela): Likewise.
+
2009-05-31 Ulrich Drepper <drepper@xxxxxxxxxx>
* sysdeps/x86_64/multiarch/sched_cpucount.c: Also use optimized code
Modified: trunk/libc/Makeconfig
==============================================================================
--- trunk/libc/Makeconfig (original)
+++ trunk/libc/Makeconfig Wed Jun 24 09:26:34 2009
@@ -434,6 +434,19 @@
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
endif
+# Command for linking PIE programs with the C library.
+ifndef +link-pie
++link-pie = $(CC) -pie -Wl,-O1 -nostdlib -nostartfiles -o $@ \
+ $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+ $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
+ $(addprefix $(csu-objpfx),S$(start-installed-name)) \
+ $(+preinit) $(+prectorS) \
+ $(filter-out $(addprefix $(csu-objpfx),start.o \
+ S$(start-installed-name))\
+ $(+preinit) $(link-extra-libs) \
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit)
+endif
# Command for statically linking programs with the C library.
ifndef +link-static
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
@@ -538,6 +551,9 @@
+postinit = $(addprefix $(csu-objpfx),crtn.o)
+prector = `$(CC) --print-file-name=crtbegin.o`
+postctor = `$(CC) --print-file-name=crtend.o`
+# Variants of the two previous definitions for linking PIE programs.
++prectorS = `$(CC) --print-file-name=crtbeginS.o`
++postctorS = `$(CC) --print-file-name=crtendS.o`
+interp = $(addprefix $(elf-objpfx),interp.os)
endif
csu-objpfx = $(common-objpfx)csu/
Modified: trunk/libc/NEWS
==============================================================================
--- trunk/libc/NEWS (original)
+++ trunk/libc/NEWS Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2009-5-31
+GNU C Library NEWS -- history of user-visible changes. 2009-6-1
Copyright (C) 1992-2008, 2009 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -6,6 +6,9 @@
using `glibc' in the "product" field.
Version 2.11
+
+* New interfaces: execvpe
+ Implemented by Ulrich Drepper.
* checking version of longjmp added that fails if an uninitialized stack
frame would be created. Implemented by Ulrich Drepper.
Modified: trunk/libc/Versions.def
==============================================================================
--- trunk/libc/Versions.def (original)
+++ trunk/libc/Versions.def Wed Jun 24 09:26:34 2009
@@ -89,6 +89,7 @@
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.6
+ GLIBC_2.11
GLIBC_PRIVATE
}
libresolv {
Modified: trunk/libc/assert/assert-perr.c
==============================================================================
--- trunk/libc/assert/assert-perr.c (original)
+++ trunk/libc/assert/assert-perr.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994-1998,2001,2002,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1994-1998,2001,2002,2005,2009 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,6 +17,7 @@
02111-1307 USA. */
#include <assert.h>
+#include <atomic.h>
#include <libintl.h>
#include <stdio.h>
#include <stdlib.h>
@@ -64,9 +65,10 @@
(void) __fxprintf (NULL, "%s", buf);
(void) fflush (stderr);
- /* We have to free the buffer since the appplication might catch the
- SIGABRT. */
- free (buf);
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
}
else
{
Modified: trunk/libc/assert/assert.c
==============================================================================
--- trunk/libc/assert/assert.c (original)
+++ trunk/libc/assert/assert.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1994-1996,1998,2001,2002,2005
+/* Copyright (C) 1991,1994-1996,1998,2001,2002,2005,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -18,6 +18,7 @@
02111-1307 USA. */
#include <assert.h>
+#include <atomic.h>
#include <libintl.h>
#include <stdio.h>
#include <stdlib.h>
@@ -43,6 +44,7 @@
# include FATAL_PREPARE_INCLUDE
#endif
+
#undef __assert_fail
void
__assert_fail (const char *assertion, const char *file, unsigned int line,
@@ -64,9 +66,10 @@
(void) __fxprintf (NULL, "%s", buf);
(void) fflush (stderr);
- /* We have to free the buffer since the application might catch the
- SIGABRT. */
- free (buf);
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
}
else
{
Modified: trunk/libc/csu/elf-init.c
==============================================================================
--- trunk/libc/csu/elf-init.c (original)
+++ trunk/libc/csu/elf-init.c Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* Startup support for ELF initializers/finalizers in the main executable.
- Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2009 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
@@ -36,7 +36,7 @@
#include <stddef.h>
-#ifndef LIBC_NONSHARED
+#if defined USE_MULTIARCH && !defined LIBC_NONSHARED
# include <link.h>
# include <dl-irel.h>
@@ -80,7 +80,7 @@
/* For dynamically linked executables the preinit array is executed by
the dynamic linker (before initializing any shared object. */
-#ifndef LIBC_NONSHARED
+#if defined USE_MULTIARCH && !defined LIBC_NONSHARED
# ifdef ELF_MACHINE_IRELA
{
const size_t size = __rela_iplt_end - __rela_iplt_start;
Modified: trunk/libc/dlfcn/dlfcn.h
==============================================================================
--- trunk/libc/dlfcn/dlfcn.h (original)
+++ trunk/libc/dlfcn/dlfcn.h Wed Jun 24 09:26:34 2009
@@ -1,6 +1,5 @@
/* User functions for run-time dynamic loading.
- Copyright (C) 1995-1999,2000,2001,2003,2004,2006
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2001,2003,2004,2006,2009 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
@@ -164,7 +163,7 @@
segment, or if the calling thread has not allocated a block for it. */
RTLD_DI_TLS_DATA = 10,
- RTLD_DI_MAX = 10,
+ RTLD_DI_MAX = 10
};
Modified: trunk/libc/elf/Makefile
==============================================================================
--- trunk/libc/elf/Makefile (original)
+++ trunk/libc/elf/Makefile Wed Jun 24 09:26:34 2009
@@ -93,7 +93,24 @@
order2mod1.c order2mod2.c order2mod3.c order2mod4.c \
tst-stackguard1.c tst-stackguard1-static.c \
tst-array5.c tst-array5-static.c tst-array5dep.c \
- tst-array5.exp tst-leaks1.c check-execstack.c
+ tst-array5.exp tst-leaks1.c check-execstack.c \
+ ifuncmain1.c ifuncmain1pic.c ifuncmain1vis.c \
+ ifuncmain1vispic.c ifuncmain1static.c \
+ ifuncmain1staticpic.c ifuncmain1picstatic.c \
+ ifuncdep1.c ifuncdep1pic.c ifuncmod1.c \
+ ifuncmain1pie.c ifuncmain1vispie.c \
+ ifuncmain1staticpie.c \
+ ifuncmain2.c ifuncmain2static.c ifuncdep2.c \
+ ifuncmain2pic.c ifuncmain2picstatic.c ifuncdep2pic.c \
+ ifuncmain3.c ifuncmod3.c \
+ ifuncmain4.c ifuncmain4static.c ifuncmain4picstatic.c \
+ ifuncmain5.c ifuncmain5pic.c ifuncmain5picstatic.c \
+ ifuncmain5pie.c ifuncmain5static.c \
+ ifuncmain5staticpic.c \
+ ifuncdep5.c ifuncdep5pic.c ifuncmod5.c \
+ ifuncmain6pie.c ifuncmod6.c \
+ ifuncmain7.c ifuncmain7pic.c ifuncmain7picstatic.c \
+ ifuncmain7pie.c ifuncmain7static.c
CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
@@ -232,6 +249,28 @@
# filtmod1.so has a special rule
modules-names-nobuild := filtmod1
+
+ifeq (yes,$(multi-arch))
+tests-static += ifuncmain1static ifuncmain1picstatic \
+ ifuncmain2static ifuncmain2picstatic \
+ ifuncmain4static ifuncmain4picstatic \
+ ifuncmain5static ifuncmain5picstatic \
+ ifuncmain7static ifuncmain7picstatic
+
+ifeq (yes,$(build-shared))
+tests += ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
+ ifuncmain1staticpic \
+ ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
+ ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
+ ifuncmain7 ifuncmain7pic
+ifeq (yes,$(have-fpie))
+tests: $(objpfx)ifuncmain1pie.out $(objpfx)ifuncmain1vispie.out \
+ $(objpfx)ifuncmain1staticpie.out $(objpfx)ifuncmain5pie.out \
+ $(objpfx)ifuncmain6pie.out $(objpfx)ifuncmain7pie.out
+endif
+modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
+endif
+endif
include ../Rules
@@ -507,6 +546,9 @@
reldep9mod1.so-no-z-defs = yes
unload3mod4.so-no-z-defs = yes
unload4mod1.so-no-z-defs = yes
+ifuncmod1.so-no-z-defs = yes
+ifuncmod5.so-no-z-defs = yes
+ifuncmod6.so-no-z-defs = yes
ifeq ($(build-shared),yes)
# Build all the modules even when not actually running test programs.
@@ -834,14 +876,7 @@
$< > $@
$(objpfx)tst-pie1: $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so
- $(LINK.o) -pie -Wl,-O1 \
- $(sysdep-LDFLAGS) $(config-LDFLAGS) \
- $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
- $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
- $(LDFLAGS) $(LDFLAGS-$(@F)) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
- -o $@ $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so \
- $(common-objpfx)libc_nonshared.a
+ $(+link-pie)
generated += tst-pie1 tst-pie1.out tst-pie1.o
endif
@@ -962,3 +997,111 @@
$(objpfx)tst-addr1: $(libdl)
$(objpfx)tst-thrlock: $(libdl) $(shared-thread-library)
+
+CFLAGS-ifuncmain1pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain1picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncmain1staticpic.c += $(pic-ccflag)
+CFLAGS-ifuncdep1pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain1vispic.c += $(pic-ccflag)
+CFLAGS-ifuncmain2pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain2picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncdep2pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain4picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncmain5pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain5picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncmain5staticpic.c += $(pic-ccflag)
+CFLAGS-ifuncdep5pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain7pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain7picstatic.c += $(pic-ccflag)
+
+LDFLAGS-ifuncmain3 = -Wl,-export-dynamic
+
+ifeq (yesyes,$(have-fpie)$(build-shared))
+CFLAGS-ifuncmain1pie.c += $(pie-ccflag)
+CFLAGS-ifuncmain1vispie.c += $(pie-ccflag)
+CFLAGS-ifuncmain1staticpie.c += $(pie-ccflag)
+CFLAGS-ifuncmain5pie.c += $(pie-ccflag)
+CFLAGS-ifuncmain6pie.c += $(pie-ccflag)
+CFLAGS-ifuncmain7pie.c += $(pie-ccflag)
+
+$(objpfx)ifuncmain1pie.out: $(objpfx)ifuncmain1pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain1pie: $(objpfx)ifuncmain1pie.o $(objpfx)ifuncmod1.so
+ $(+link-pie)
+
+generated += ifuncmain1pie ifuncmain1pie.out
+
+$(objpfx)ifuncmain1staticpie.out: $(objpfx)ifuncmain1staticpie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain1staticpie: $(objpfx)ifuncmain1staticpie.o $(objpfx)ifuncdep1pic.o
+ $(+link-pie)
+
+generated += ifuncmain1staticpie ifuncmain1staticpie.out
+
+$(objpfx)ifuncmain1vispie.out: $(objpfx)ifuncmain1vispie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain1vispie: $(objpfx)ifuncmain1vispie.o $(objpfx)ifuncmod1.so
+ $(+link-pie)
+
+generated += ifuncmain1vispie ifuncmain1vispie.out
+
+$(objpfx)ifuncmain5pie.out: $(objpfx)ifuncmain5pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain5pie: $(objpfx)ifuncmain5pie.o $(objpfx)ifuncmod5.so
+ $(+link-pie)
+
+generated += ifuncmain5pie ifuncmain5pie.out
+
+$(objpfx)ifuncmain6pie.out: $(objpfx)ifuncmain6pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain6pie: $(objpfx)ifuncmain6pie.o $(objpfx)ifuncmod6.so
+ $(+link-pie)
+
+generated += ifuncmain6pie ifuncmain6pie.out
+
+$(objpfx)ifuncmain7pie.out: $(objpfx)ifuncmain7pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain7pie: $(objpfx)ifuncmain7pie.o
+ $(+link-pie)
+
+generated += ifuncmain7pie ifuncmain7pie.out
+endif
+
+$(objpfx)ifuncmain1: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain1pic: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain1staticpic: $(addprefix $(objpfx),ifuncdep1pic.o)
+$(objpfx)ifuncmain1static: $(addprefix $(objpfx),ifuncdep1.o)
+$(objpfx)ifuncmain1picstatic: $(addprefix $(objpfx),ifuncdep1pic.o)
+$(objpfx)ifuncmain1vis: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain1vispic: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain2: $(addprefix $(objpfx),ifuncdep2.o)
+$(objpfx)ifuncmain2pic: $(addprefix $(objpfx),ifuncdep2pic.o)
+$(objpfx)ifuncmain2static: $(addprefix $(objpfx),ifuncdep2.o)
+$(objpfx)ifuncmain2picstatic: $(addprefix $(objpfx),ifuncdep2pic.o)
+
+$(objpfx)ifuncmain3: $(libdl)
+$(objpfx)ifuncmain3.out: $(objpfx)ifuncmod3.so
+
+$(objpfx)ifuncmain5: $(addprefix $(objpfx),ifuncmod5.so)
+$(objpfx)ifuncmain5pic: $(addprefix $(objpfx),ifuncmod5.so)
+$(objpfx)ifuncmain5static: $(addprefix $(objpfx),ifuncdep5.o)
+$(objpfx)ifuncmain5staticpic: $(addprefix $(objpfx),ifuncdep5pic.o)
+$(objpfx)ifuncmain5picstatic: $(addprefix $(objpfx),ifuncdep5pic.o)
Modified: trunk/libc/elf/dl-lookup.c
==============================================================================
--- trunk/libc/elf/dl-lookup.c (original)
+++ trunk/libc/elf/dl-lookup.c Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* Look up a symbol in the loaded objects.
- Copyright (C) 1995-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2005, 2006, 2007, 2009 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
@@ -542,15 +542,20 @@
conflict = 1;
}
- if (value->s
- && (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
- == STT_TLS, 0)))
- type_class = 4;
+ if (value->s)
+ {
+ if (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
+ == STT_TLS, 0))
+ type_class = 4;
+ else if (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
+ == STT_GNU_IFUNC, 0))
+ type_class |= 8;
+ }
if (conflict
|| GLRO(dl_trace_prelink_map) == undef_map
|| GLRO(dl_trace_prelink_map) == NULL
- || type_class == 4)
+ || type_class >= 4)
{
_dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ",
conflict ? "conflict" : "lookup",
Modified: trunk/libc/elf/dl-sysdep.c
==============================================================================
--- trunk/libc/elf/dl-sysdep.c (original)
+++ trunk/libc/elf/dl-sysdep.c Wed Jun 24 09:26:34 2009
@@ -335,7 +335,7 @@
/* Unknown value: print a generic line. */
char buf2[17];
- buf[sizeof (buf2) - 1] = '\0';
+ buf2[sizeof (buf2) - 1] = '\0';
const char *val2 = _itoa ((unsigned long int) av->a_un.a_val,
buf2 + sizeof buf2 - 1, 16, 0);
const char *val = _itoa ((unsigned long int) av->a_type,
Modified: trunk/libc/include/stdlib.h
==============================================================================
--- trunk/libc/include/stdlib.h (original)
+++ trunk/libc/include/stdlib.h Wed Jun 24 09:26:34 2009
@@ -221,6 +221,9 @@
extern void *__default_morecore (ptrdiff_t) __THROW;
libc_hidden_proto (__default_morecore)
+extern char *__abort_msg;
+libc_hidden_proto (__abort_msg)
+
__END_DECLS
#undef __Need_M_And_C
Modified: trunk/libc/include/unistd.h
==============================================================================
--- trunk/libc/include/unistd.h (original)
+++ trunk/libc/include/unistd.h Wed Jun 24 09:26:34 2009
@@ -61,6 +61,8 @@
extern int __fchdir (int __fd);
extern char *__getcwd (char *__buf, size_t __size);
extern int __rmdir (const char *__path);
+extern int __execvpe (const char *file, char *const argv[],
+ char *const envp[]);
/* Get the canonical absolute name of the named directory, and put it in SIZE
bytes of BUF. Returns NULL if the directory couldn't be determined or
Modified: trunk/libc/inet/netinet/icmp6.h
==============================================================================
--- trunk/libc/inet/netinet/icmp6.h (original)
+++ trunk/libc/inet/netinet/icmp6.h Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1997,2000,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1997,2000,2006,2009 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
@@ -339,7 +339,7 @@
uint8_t nd_opt_home_agent_info_type;
uint8_t nd_opt_home_agent_info_len;
uint16_t nd_opt_home_agent_info_reserved;
- int16_t nd_opt_home_agent_info_preference;
+ uint16_t nd_opt_home_agent_info_preference;
uint16_t nd_opt_home_agent_info_lifetime;
};
Modified: trunk/libc/libio/Makefile
==============================================================================
--- trunk/libc/libio/Makefile (original)
+++ trunk/libc/libio/Makefile Wed Jun 24 09:26:34 2009
@@ -175,6 +175,7 @@
bug-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
tst-swscanf-ENV = LOCPATH=$(common-objpfx)localedata
bug-ftell-ENV = LOCPATH=$(common-objpfx)localedata
+tst-fgetwc-ENV = LOCPATH=$(common-objpfx)localedata
generated = tst-fopenloc.mtrace tst-fopenloc.check
Modified: trunk/libc/libio/fileops.c
==============================================================================
--- trunk/libc/libio/fileops.c (original)
+++ trunk/libc/libio/fileops.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997-2005, 2006, 2007, 2008
+/* Copyright (C) 1993, 1995, 1997-2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Per Bothner <bothner@xxxxxxxxxx>.
@@ -319,11 +319,11 @@
continue;
case 'c':
fp->_flags2 |= _IO_FLAGS2_NOTCANCEL;
- break;
+ continue;
#ifdef O_CLOEXEC
case 'e':
oflags |= O_CLOEXEC;
- break;
+ continue;
#endif
default:
/* Ignore. */
Modified: trunk/libc/libio/tst-fgetwc.c
==============================================================================
--- trunk/libc/libio/tst-fgetwc.c (original)
+++ trunk/libc/libio/tst-fgetwc.c Wed Jun 24 09:26:34 2009
@@ -6,7 +6,7 @@
static int
do_test (void)
{
- if (setlocale (LC_ALL, "de_DE.utf8") == NULL)
+ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
{
puts ("setlocale failed");
return 1;
Modified: trunk/libc/localedata/ChangeLog
==============================================================================
--- trunk/libc/localedata/ChangeLog (original)
+++ trunk/libc/localedata/ChangeLog Wed Jun 24 09:26:34 2009
@@ -1,3 +1,21 @@
+2009-06-16 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10011]
+ * locales/de_AT: Define week, first_weekday, first_workday.
+ Patch by Paul Marcher <flyer@xxxxxxxxx>.
+
+2009-06-15 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10213]
+ * SUPPORTED (SUPPORTED-LOCALES): Add dv_MV.UTF-8 entry.
+ * locales/dv_MV: New file.
+ Contributed by sofwathullah.mohamed@xxxxxxxxxx
+
+2009-06-09 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * locales/ur_IN: New file.
+ Contributed by Pravin Satpute <psatpute@xxxxxxxxxx>.
+
2009-05-04 Ulrich Drepper <drepper@xxxxxxxxxx>
* localedata/locales/bn_BD: Remove comment about missing collation
Modified: trunk/libc/localedata/SUPPORTED
==============================================================================
--- trunk/libc/localedata/SUPPORTED (original)
+++ trunk/libc/localedata/SUPPORTED Wed Jun 24 09:26:34 2009
@@ -98,6 +98,7 @@
de_LU.UTF-8/UTF-8 \
de_LU/ISO-8859-1 \
de_LU@euro/ISO-8859-15 \
+dv_MV/UTF-8 \
dz_BT/UTF-8 \
el_GR.UTF-8/UTF-8 \
el_GR/ISO-8859-7 \
Modified: trunk/libc/localedata/locales/de_AT
==============================================================================
--- trunk/libc/localedata/locales/de_AT (original)
+++ trunk/libc/localedata/locales/de_AT Wed Jun 24 09:26:34 2009
@@ -121,6 +121,9 @@
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>"
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/login/Makefile
==============================================================================
--- trunk/libc/login/Makefile (original)
+++ trunk/libc/login/Makefile Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-1998,2000-2002,2003,2007 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998,2000-2003,2007, 2009 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
@@ -58,6 +58,24 @@
$(resolvobjdir)/libresolv.a $(common-objpfx)libc.a
endif
+ifeq (yesyes,$(have-fpie)$(build-shared))
+pt_chown-cflags += $(pie-ccflag)
+endif
+ifeq (yes,$(have-ssp))
+pt_chown-cflags += -fstack-protector
+endif
+ifeq (yes,$(have-libcap))
+libcap = -lcap
+endif
+CFLAGS-pt_chown.c = $(pt_chown-cflags)
+LDLIBS-pt_chown = $(libcap)
+ifeq (yesyes,$(have-fpie)$(build-shared))
+LDFLAGS-pt_chown = -Wl,-z,now
+
+$(objpfx)pt_chown: $(objpfx)pt_chown.o
+ $(+link-pie)
+endif
+
# pt_chown needs to be setuid root.
$(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force)
$(make-target-directory)
Modified: trunk/libc/login/programs/pt_chown.c
==============================================================================
--- trunk/libc/login/programs/pt_chown.c (original)
+++ trunk/libc/login/programs/pt_chown.c Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* pt_chmod - helper program for `grantpt'.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by C. Scott Ananian <cananian@xxxxxxxxxxxxxxxxxxxx>, 1998.
@@ -29,6 +29,10 @@
#include <string.h>
#include <sys/stat.h>
#include <unistd.h>
+#ifdef HAVE_LIBCAP
+# include <sys/capability.h>
+# include <sys/prctl.h>
+#endif
#include "pty-private.h"
@@ -99,7 +103,7 @@
do_pt_chown (void)
{
char *pty;
- struct stat st;
+ struct stat64 st;
struct group *p;
gid_t gid;
@@ -110,7 +114,7 @@
/* Check that the returned slave pseudo terminal is a
character device. */
- if (stat (pty, &st) < 0 || !S_ISCHR(st.st_mode))
+ if (stat64 (pty, &st) < 0 || !S_ISCHR (st.st_mode))
return FAIL_EINVAL;
/* Get the group ID of the special `tty' group. */
@@ -119,12 +123,13 @@
/* Set the owner to the real user ID, and the group to that special
group ID. */
- if (chown (pty, getuid (), gid) < 0)
+ if (st.st_gid != gid && chown (pty, getuid (), gid) < 0)
return FAIL_EACCES;
/* Set the permission mode to readable and writable by the owner,
and writable by the group. */
- if (chmod (pty, S_IRUSR|S_IWUSR|S_IWGRP) < 0)
+ if ((st.st_mode & ACCESSPERMS) != (S_IRUSR|S_IWUSR|S_IWGRP)
+ && chmod (pty, S_IRUSR|S_IWUSR|S_IWGRP) < 0)
return FAIL_EACCES;
return 0;
@@ -135,16 +140,43 @@
main (int argc, char *argv[])
{
uid_t euid = geteuid ();
+ uid_t uid = getuid ();
int remaining;
- /* Normal invocation of this program is with no arguments and
- with privileges.
- FIXME: Should use capable (CAP_CHOWN|CAP_FOWNER). */
if (argc == 1 && euid == 0)
- return do_pt_chown ();
+ {
+#ifdef HAVE_LIBCAP
+ /* Drop privileges. */
+ if (uid != euid)
+ {
+ static const cap_value_t cap_list[] =
+ { CAP_CHOWN, CAP_FOWNER };
+# define ncap_list (sizeof (cap_list) / sizeof (cap_list[0]))
+ cap_t caps = cap_init ();
+ if (caps == NULL)
+ error (FAIL_ENOMEM, errno,
+ _("Failed to initialize drop of capabilities"));
+
+ /* There is no reason why these should not work. */
+ cap_set_flag (caps, CAP_PERMITTED, ncap_list, cap_list, CAP_SET);
+ cap_set_flag (caps, CAP_EFFECTIVE, ncap_list, cap_list, CAP_SET);
+
+ int res = cap_set_proc (caps);
+
+ cap_free (caps);
+
+ if (__builtin_expect (res != 0, 0))
+ error (FAIL_EXEC, errno, _("cap_set_proc failed"));
+ }
+#endif
+
+ /* Normal invocation of this program is with no arguments and
+ with privileges. */
+ return do_pt_chown ();
+ }
/* We aren't going to be using privileges, so drop them right now. */
- setuid (getuid ());
+ setuid (uid);
/* Set locale via LC_ALL. */
setlocale (LC_ALL, "");
Modified: trunk/libc/malloc/malloc.c
==============================================================================
--- trunk/libc/malloc/malloc.c (original)
+++ trunk/libc/malloc/malloc.c Wed Jun 24 09:26:34 2009
@@ -4241,6 +4241,8 @@
mchunkptr fwd; /* misc temp for linking */
mchunkptr bck; /* misc temp for linking */
+ const char *errstr = NULL;
+
/*
Convert request size to internal form by adding SIZE_SZ bytes
overhead plus possibly more to obtain necessary alignment and/or
@@ -4276,8 +4278,11 @@
#endif
if (victim != 0) {
if (__builtin_expect (fastbin_index (chunksize (victim)) != idx, 0))
- malloc_printerr (check_action, "malloc(): memory corruption (fast)",
- chunk2mem (victim));
+ {
+ errstr = "malloc(): memory corruption (fast)";
+ errout:
+ malloc_printerr (check_action, errstr, chunk2mem (victim));
+ }
#ifndef ATOMIC_FASTBINS
*fb = victim->fd;
#endif
@@ -4306,6 +4311,11 @@
malloc_consolidate(av);
else {
bck = victim->bk;
+ if (__builtin_expect (bck->fd != victim, 0))
+ {
+ errstr = "malloc(): smallbin double linked list corrupted";
+ goto errout;
+ }
set_inuse_bit_at_offset(victim, nb);
bin->bk = bck;
bck->fd = bin;
@@ -4515,6 +4525,11 @@
have to perform a complete insert here. */
bck = unsorted_chunks(av);
fwd = bck->fd;
+ if (__builtin_expect (fwd->bk != bck, 0))
+ {
+ errstr = "malloc(): corrupted unsorted chunks";
+ goto errout;
+ }
remainder->bk = bck;
remainder->fd = fwd;
bck->fd = remainder;
@@ -4610,6 +4625,11 @@
have to perform a complete insert here. */
bck = unsorted_chunks(av);
fwd = bck->fd;
+ if (__builtin_expect (fwd->bk != bck, 0))
+ {
+ errstr = "malloc(): corrupted unsorted chunks 2";
+ goto errout;
+ }
remainder->bk = bck;
remainder->fd = fwd;
bck->fd = remainder;
@@ -4901,6 +4921,11 @@
bck = unsorted_chunks(av);
fwd = bck->fd;
+ if (__builtin_expect (fwd->bk != bck, 0))
+ {
+ errstr = "free(): corrupted unsorted chunks";
+ goto errout;
+ }
p->fd = fwd;
p->bk = bck;
if (!in_smallbin_range(size))
Modified: trunk/libc/manual/charset.texi
==============================================================================
--- trunk/libc/manual/charset.texi (original)
+++ trunk/libc/manual/charset.texi Wed Jun 24 09:26:34 2009
@@ -1234,7 +1234,7 @@
/* @r{If any characters must be carried forward,}
@r{put them at the beginning of @code{buffer}.} */
if (filled > 0)
- memmove (inp, buffer, filled);
+ memmove (buffer, inp, filled);
@}
return 1;
Modified: trunk/libc/misc/sys/select.h
==============================================================================
--- trunk/libc/misc/sys/select.h (original)
+++ trunk/libc/misc/sys/select.h Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* `fd_set' type and related macros, and `select'/`pselect' declarations.
- Copyright (C) 1996,97,98,99,2000,01,02,2003 Free Software Foundation, Inc.
+ Copyright (C) 1996-2003, 2009 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
@@ -59,7 +59,7 @@
#undef __FDELT
#undef __FDMASK
/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
+#define __NFDBITS (8 * (int) sizeof (__fd_mask))
#define __FDELT(d) ((d) / __NFDBITS)
#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
Modified: trunk/libc/nis/nss_compat/compat-initgroups.c
==============================================================================
--- trunk/libc/nis/nss_compat/compat-initgroups.c (original)
+++ trunk/libc/nis/nss_compat/compat-initgroups.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@xxxxxxx>, 1998.
@@ -43,8 +43,10 @@
static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp,
char *buffer, size_t buflen,
int *errnop);
+static enum nss_status (*nss_setgrent) (int stayopen);
static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer,
size_t buflen, int *errnop);
+static enum nss_status (*nss_endgrent) (void);
/* Protect global state against multiple changers. */
__libc_lock_define_initialized (static, lock)
@@ -68,7 +70,9 @@
struct ent_t
{
- bool_t files;
+ bool files;
+ bool need_endgrent;
+ bool skip_initgroups_dyn;
FILE *stream;
struct blacklist_t blacklist;
};
@@ -106,7 +110,9 @@
nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn");
nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r");
nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r");
+ nss_setgrent = __nss_lookup_function (ni, "setgrent");
nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r");
+ nss_endgrent = __nss_lookup_function (ni, "endgrent");
}
__libc_lock_unlock (lock);
@@ -117,7 +123,7 @@
{
enum nss_status status = NSS_STATUS_SUCCESS;
- ent->files = TRUE;
+ ent->files = true;
if (ni == NULL)
init_nss_interface ();
@@ -195,54 +201,68 @@
else
ent->blacklist.current = 0;
+ if (ent->need_endgrent && nss_endgrent != NULL)
+ nss_endgrent ();
+
return NSS_STATUS_SUCCESS;
}
+/* Add new group record. */
+static void
+add_group (long int *start, long int *size, gid_t **groupsp, long int limit,
+ gid_t gid)
+{
+ gid_t *groups = *groupsp;
+
+ /* Matches user. Insert this group. */
+ if (__builtin_expect (*start == *size, 0))
+ {
+ /* Need a bigger buffer. */
+ gid_t *newgroups;
+ long int newsize;
+
+ if (limit > 0 && *size == limit)
+ /* We reached the maximum. */
+ return;
+
+ if (limit <= 0)
+ newsize = 2 * *size;
+ else
+ newsize = MIN (limit, 2 * *size);
+
+ newgroups = realloc (groups, newsize * sizeof (*groups));
+ if (newgroups == NULL)
+ return;
+ *groupsp = groups = newgroups;
+ *size = newsize;
+ }
+
+ groups[*start] = gid;
+ *start += 1;
+}
+
/* This function checks, if the user is a member of this group and if
- yes, add the group id to the list. */
-static void
+ yes, add the group id to the list. Return nonzero is we couldn't
+ handle the group because the user is not in the member list. */
+static int
check_and_add_group (const char *user, gid_t group, long int *start,
long int *size, gid_t **groupsp, long int limit,
struct group *grp)
{
- gid_t *groups = *groupsp;
char **member;
/* Don't add main group to list of groups. */
if (grp->gr_gid == group)
- return;
+ return 0;
for (member = grp->gr_mem; *member != NULL; ++member)
if (strcmp (*member, user) == 0)
{
- /* Matches user. Insert this group. */
- if (*start == *size)
- {
- /* Need a bigger buffer. */
- gid_t *newgroups;
- long int newsize;
-
- if (limit > 0 && *size == limit)
- /* We reached the maximum. */
- return;
-
- if (limit <= 0)
- newsize = 2 * *size;
- else
- newsize = MIN (limit, 2 * *size);
-
- newgroups = realloc (groups, newsize * sizeof (*groups));
- if (newgroups == NULL)
- return;
- *groupsp = groups = newgroups;
- *size = newsize;
- }
-
- groups[*start] = grp->gr_gid;
- *start += 1;
-
- break;
+ add_group (start, size, groupsp, limit, grp->gr_gid);
+ return 0;
}
+
+ return 1;
}
/* Get the next group from NSS (+ entry). If the NSS module supports
@@ -255,15 +275,10 @@
enum nss_status status;
struct group grpbuf;
- /* if this module does not support getgrent_r and initgroups_dyn,
- abort. We cannot find the needed group entries. */
- if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
- return NSS_STATUS_UNAVAIL;
-
/* Try nss_initgroups_dyn if supported. We also need getgrgid_r.
If this function is not supported, step through the whole group
database with getgrent_r. */
- if (nss_initgroups_dyn && nss_getgrgid_r)
+ if (! ent->skip_initgroups_dyn)
{
long int mystart = 0;
long int mysize = limit <= 0 ? *size : limit;
@@ -282,39 +297,56 @@
if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups,
limit, errnop) == NSS_STATUS_SUCCESS)
{
- /* A temporary buffer. We use the normal buffer, until we find
- an entry, for which this buffer is to small. In this case, we
- overwrite the pointer with one to a bigger buffer. */
- char *tmpbuf = buffer;
- size_t tmplen = buflen;
- int i;
-
- for (i = 0; i < mystart; i++)
+ /* If there is no blacklist we can trust the underlying
+ initgroups implementation. */
+ if (ent->blacklist.current <= 1)
+ for (int i = 0; i < mystart; i++)
+ add_group (start, size, groupsp, limit, mygroups[i]);
+ else
{
- while ((status = nss_getgrgid_r (mygroups[i], &grpbuf, tmpbuf,
- tmplen,
- errnop)) == NSS_STATUS_TRYAGAIN
- && *errnop == ERANGE)
- if (tmpbuf == buffer)
- {
- tmplen *= 2;
- tmpbuf = __alloca (tmplen);
- }
- else
- tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen);
-
- if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1))
+ /* A temporary buffer. We use the normal buffer, until we find
+ an entry, for which this buffer is to small. In this case, we
+ overwrite the pointer with one to a bigger buffer. */
+ char *tmpbuf = buffer;
+ size_t tmplen = buflen;
+
+ for (int i = 0; i < mystart; i++)
{
- if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0))
+ while ((status = nss_getgrgid_r (mygroups[i], &grpbuf,
+ tmpbuf, tmplen, errnop))
+ == NSS_STATUS_TRYAGAIN
+ && *errnop == ERANGE)
+ if (tmpbuf == buffer)
+ {
+ tmplen *= 2;
+ tmpbuf = __alloca (tmplen);
+ }
+ else
+ tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen);
+
+ if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1))
{
- free (mygroups);
- return status;
+ if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0))
+ {
+ free (mygroups);
+ return status;
+ }
+
+ if (!in_blacklist (grpbuf.gr_name,
+ strlen (grpbuf.gr_name), ent)
+ && check_and_add_group (user, group, start, size,
+ groupsp, limit, &grpbuf))
+ {
+ if (nss_setgrent != NULL)
+ {
+ nss_setgrent (1);
+ ent->need_endgrent = true;
+ }
+ ent->skip_initgroups_dyn = true;
+
+ goto iter;
+ }
}
-
- if (!in_blacklist (grpbuf.gr_name,
- strlen (grpbuf.gr_name), ent))
- check_and_add_group (user, group, start, size, groupsp,
- limit, &grpbuf);
}
}
@@ -327,17 +359,21 @@
}
/* If we come here, the NSS module does not support initgroups_dyn
- and we have to step through the whole list ourself. */
+ or we were confronted with a split group. In these cases we have
+ to step through the whole list ourself. */
+ iter:
do
{
if ((status = nss_getgrent_r (&grpbuf, buffer, buflen, errnop)) !=
NSS_STATUS_SUCCESS)
- return status;
+ break;
}
while (in_blacklist (grpbuf.gr_name, strlen (grpbuf.gr_name), ent));
- check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
- return NSS_STATUS_SUCCESS;
+ if (status == NSS_STATUS_SUCCESS)
+ check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
+
+ return status;
}
static enum nss_status
@@ -435,7 +471,21 @@
/* +:... */
if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] == '\0')
{
- ent->files = FALSE;
+ /* If the selected module does not support getgrent_r or
+ initgroups_dyn, abort. We cannot find the needed group
+ entries. */
+ if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
+ return NSS_STATUS_UNAVAIL;
+
+ ent->files = false;
+
+ if (nss_initgroups_dyn == NULL && nss_setgrent != NULL)
+ {
+ nss_setgrent (1);
+ ent->need_endgrent = true;
+ }
+ ent->skip_initgroups_dyn = true;
+
return getgrent_next_nss (ent, buffer, buflen, user, group,
start, size, groupsp, limit, errnop);
}
@@ -455,7 +505,7 @@
size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
char *tmpbuf;
enum nss_status status;
- ent_t intern = { TRUE, NULL, {NULL, 0, 0} };
+ ent_t intern = { true, false, false, NULL, {NULL, 0, 0} };
status = internal_setgrent (&intern);
if (status != NSS_STATUS_SUCCESS)
Modified: trunk/libc/nis/nss_nis/nis-pwd.c
==============================================================================
--- trunk/libc/nis/nss_nis/nis-pwd.c (original)
+++ trunk/libc/nis/nss_nis/nis-pwd.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-1998,2001,2002,2003,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1998,2001-2003,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@xxxxxxxxxxxxxxxxxxx>, 1996.
@@ -116,7 +116,7 @@
oldkeylen = 0;
}
- struct response_t *curr = intern.next;
+ struct response_t *curr = intern.start;
while (curr != NULL)
{
Modified: trunk/libc/nptl/ChangeLog
==============================================================================
--- trunk/libc/nptl/ChangeLog (original)
+++ trunk/libc/nptl/ChangeLog Wed Jun 24 09:26:34 2009
@@ -1,3 +1,18 @@
+2009-06-12 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * Makefile (libpthread-routines): Add pthread_sigqueue.
+ * Versions: Add pthread_sigqueue for GLIBC_2.11.
+ * sysdeps/pthread/bits/sigthread.h: Declare pthread_sigqueue.
+ * sysdeps/unix/sysv/linux/pthread_sigqueue.c: New file.
+
+2009-06-11 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10262]
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+ (LOAD_FUTEX_WAIT_ABS): Fix futex parameter in case private futexes
+ cannot be assumed.
+ Patch by Bryan Kadzban <bz-glibc@xxxxxxxxxxxxxxxxxxx>.
+
2009-05-16 Ulrich Drepper <drepper@xxxxxxxxxx>
* libc-cancellation.c: Move __libc_cleanup_routine to...
Modified: trunk/libc/nptl/Makefile
==============================================================================
--- trunk/libc/nptl/Makefile (original)
+++ trunk/libc/nptl/Makefile Wed Jun 24 09:26:34 2009
@@ -88,7 +88,7 @@
pthread_barrierattr_setpshared \
pthread_key_create pthread_key_delete \
pthread_getspecific pthread_setspecific \
- pthread_sigmask pthread_kill \
+ pthread_sigmask pthread_kill pthread_sigqueue \
pthread_cancel pthread_testcancel \
pthread_setcancelstate pthread_setcanceltype \
pthread_once \
Modified: trunk/libc/nptl/Versions
==============================================================================
--- trunk/libc/nptl/Versions (original)
+++ trunk/libc/nptl/Versions Wed Jun 24 09:26:34 2009
@@ -240,6 +240,10 @@
pthread_mutex_getprioceiling; pthread_mutex_setprioceiling;
};
+ GLIBC_2.11 {
+ pthread_sigqueue;
+ };
+
GLIBC_PRIVATE {
__pthread_initialize_minimal;
__pthread_clock_gettime; __pthread_clock_settime;
Modified: trunk/libc/nptl/sysdeps/pthread/bits/sigthread.h
==============================================================================
--- trunk/libc/nptl/sysdeps/pthread/bits/sigthread.h (original)
+++ trunk/libc/nptl/sysdeps/pthread/bits/sigthread.h Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* Signal handling function for threaded programs.
- Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2009 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
@@ -35,4 +35,10 @@
/* Send signal SIGNO to the given thread. */
extern int pthread_kill (pthread_t __threadid, int __signo) __THROW;
+#ifdef __USE_GNU
+/* Queue signal and data to a thread. */
+extern int pthread_sigqueue (pthread_t __threadid, int __signo,
+ const union sigval __value) __THROW;
+#endif
+
#endif /* bits/sigthread.h */
Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S Wed Jun 24 09:26:34 2009
@@ -60,7 +60,7 @@
# define LOAD_FUTEX_WAIT_ABS(reg) \
xorl $FUTEX_PRIVATE_FLAG, reg ; \
andl %gs:PRIVATE_FUTEX, reg ; \
- orl $FUTEX_WAIT | FUTEX_CLOCK_REALTIME, reg
+ orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
# define LOAD_FUTEX_WAKE(reg) \
xorl $FUTEX_PRIVATE_FLAG, reg ; \
andl %gs:PRIVATE_FUTEX, reg ; \
Modified: trunk/libc/nscd/Makefile
==============================================================================
--- trunk/libc/nscd/Makefile (original)
+++ trunk/libc/nscd/Makefile Wed Jun 24 09:26:34 2009
@@ -1,5 +1,4 @@
-# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007,2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1998,2000,2002-2009 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
@@ -137,13 +136,7 @@
relro-LDFLAGS += -Wl,-z,now
$(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o))
- $(LINK.o) -pie -Wl,-O1 $(nscd-cflags) \
- $(sysdep-LDFLAGS) $(config-LDFLAGS) $(relro-LDFLAGS) \
- $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
- $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
- $(LDFLAGS) $(LDFLAGS-$(@F)) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
- -o $@ $^ $(LDLIBS-nscd) $(common-objpfx)libc_nonshared.a
+ $(+link-pie)
endif
# This makes sure -DNOT_IN_libc is passed for all these modules.
Modified: trunk/libc/nss/getent.c
==============================================================================
--- trunk/libc/nss/getent.c (original)
+++ trunk/libc/nss/getent.c Wed Jun 24 09:26:34 2009
@@ -24,6 +24,7 @@
#include <ctype.h>
#include <error.h>
#include <grp.h>
+#include <gshadow.h>
#include <libintl.h>
#include <locale.h>
#include <mcheck.h>
@@ -232,6 +233,70 @@
result = 2;
else
print_group (grp);
+ }
+
+ return result;
+}
+
+/* This is for gshadow */
+static void
+print_gshadow (struct sgrp *sg)
+{
+ unsigned int i = 0;
+
+ printf ("%s:%s:",
+ sg->sg_namp ? sg->sg_namp : "",
+ sg->sg_passwd ? sg->sg_passwd : "");
+
+ while (sg->sg_adm[i] != NULL)
+ {
+ fputs_unlocked (sg->sg_adm[i], stdout);
+ ++i;
+ if (sg->sg_adm[i] != NULL)
+ putchar_unlocked (',');
+ }
+
+ putchar_unlocked (':');
+
+ i = 0;
+ while (sg->sg_mem[i] != NULL)
+ {
+ fputs_unlocked (sg->sg_mem[i], stdout);
+ ++i;
+ if (sg->sg_mem[i] != NULL)
+ putchar_unlocked (',');
+ }
+
+ putchar_unlocked ('\n');
+}
+
+static int
+gshadow_keys (int number, char *key[])
+{
+ int result = 0;
+ int i;
+
+ if (number == 0)
+ {
+ struct sgrp *sg;
+
+ setsgent ();
+ while ((sg = getsgent ()) != NULL)
+ print_gshadow (sg);
+ endsgent ();
+ return result;
+ }
+
+ for (i = 0; i < number; ++i)
+ {
+ struct sgrp *sg;
+
+ sg = getsgnam (key[i]);
+
+ if (sg == NULL)
+ result = 2;
+ else
+ print_gshadow (sg);
}
return result;
@@ -778,6 +843,7 @@
DA(aliases)
DN(ethers)
D(group)
+D(gshadow)
DN(hosts)
DN(netgroup)
DN(networks)
Modified: trunk/libc/po/bg.po
==============================================================================
--- trunk/libc/po/bg.po (original)
+++ trunk/libc/po/bg.po Wed Jun 24 09:26:34 2009
@@ -6,9 +6,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.9.90\n"
+"Project-Id-Version: libc 2.10.1\n"
"POT-Creation-Date: 2009-02-06 12:40-0800\n"
-"PO-Revision-Date: 2009-02-28 12:36+0200\n"
+"PO-Revision-Date: 2009-06-23 01:27+0300\n"
"Last-Translator: Roumen Petrov <transl@xxxxxxxxxxxxxxxxx>\n"
"Language-Team: Bulgarian <dict@xxxxxxxxxx>\n"
"MIME-Version: 1.0\n"
@@ -651,7 +651,7 @@
#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
-msgstr "дÑлÑÑ Ð½Ðµ може да Ñе маÑкиÑа каÑо запиÑваем за \"непÑемеÑÑваем код\""
+msgstr "дÑлÑÑ Ð½Ðµ може да Ñе маÑкиÑа каÑо запиÑваем за \"пÑемеÑÑваем код\""
#: elf/dl-reloc.c:277
#, c-format
@@ -661,7 +661,7 @@
#: elf/dl-reloc.c:288
#, c-format
msgid "%s: out of memory to store relocation results for %s\n"
-msgstr "%s: недоÑÑиг на Ð¿Ð°Ð¼ÐµÑ Ð·Ð° ÑÑÑ
ÑанÑване на ÑезÑлÑаÑа за \"непÑемеÑÑваем код\" на %s\n"
+msgstr "%s: недоÑÑиг на Ð¿Ð°Ð¼ÐµÑ Ð·Ð° ÑÑÑ
ÑанÑване на ÑезÑлÑаÑа за \"пÑемеÑÑваем код\" на %s\n"
#: elf/dl-reloc.c:304
msgid "cannot restore segment prot after reloc"
@@ -922,8 +922,8 @@
"УпоÑÑеба: ldd [ÐÐЦÐЯ]... ФÐÐÐ...\n"
" --help Ðзвеждане на Ñази Ð¿Ð¾Ð¼Ð¾Ñ Ð¸ изÑ
од\n"
" --version Ðзвеждане на инÑоÑмаÑÐ¸Ñ Ð·Ð° веÑÑиÑÑа и изÑ
од\n"
-" -d, --data-relocs ÐбÑабоÑване на непÑемеÑÑваеми данни\n"
-" -r, --function-relocs ÐбÑабоÑване на непÑемеÑÑваеми данни и ÑÑнкÑии\n"
+" -d, --data-relocs ÐбÑабоÑване на пÑемеÑÑваеми данни\n"
+" -r, --function-relocs ÐбÑабоÑване на пÑемеÑÑваеми данни и ÑÑнкÑии\n"
" -u, --unused Ðзвеждане на неизползваниÑе диÑекÑни завиÑимоÑÑи\n"
" -v, --verbose Ðзвеждане на подÑобна инÑоÑмаÑиÑ\n"
@@ -1591,7 +1591,7 @@
#: locale/programs/charmap.c:888
#, c-format
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
-msgstr "Ð±Ð¾Ñ Ð½Ð° байÑовеÑе, в поÑледоваÑелноÑÑ Ð¾Ñ Ð±Ð°Ð¹Ñове за наÑало и кÑай на диапазон, не е ÑÑÑиÑ: %d vs %d"
+msgstr "Ð±Ð¾Ñ Ð½Ð° байÑовеÑе, в поÑледоваÑелноÑÑ Ð¾Ñ Ð±Ð°Ð¹Ñове за наÑало и кÑай на диапазон, не е ÑÑÑиÑ: %d Ñ/Ñ %d"
#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
@@ -4791,7 +4791,7 @@
#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
-msgstr "не е намеÑен нÑкакÑв Си пÑепÑоÑеÑÐ¾Ñ (cpp)\n"
+msgstr "не е намеÑен никакÑв Си пÑепÑоÑеÑÐ¾Ñ (cpp)\n"
#: sunrpc/rpc_main.c:421
#, c-format
Modified: trunk/libc/po/id.po
==============================================================================
--- trunk/libc/po/id.po (original)
+++ trunk/libc/po/id.po Wed Jun 24 09:26:34 2009
@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.9.90\n"
+"Project-Id-Version: libc 2.10.1\n"
"POT-Creation-Date: 2009-02-06 12:40-0800\n"
-"PO-Revision-Date: 2009-03-10 11:30+0700\n"
+"PO-Revision-Date: 2009-06-23 12:30+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@xxxxxxxxx>\n"
"Language-Team: Indonesian <translation-team-id@xxxxxxxxxxxxxxxxxxxxx>\n"
"MIME-Version: 1.0\n"
@@ -86,7 +86,7 @@
#: argp/argp-parse.c:766
msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(APLIKASI ERROR) Opsi seharusnya telah dikenal!?"
+msgstr "(APLIKASI ERROR) Pilihan seharusnya telah dikenal!?"
#: assert/assert-perr.c:57
#, c-format
@@ -2864,7 +2864,7 @@
" --usage Tampilkan sebuah pesan penggunaan singkat\n"
" -V,--version Tampilkan informasi versi dan keluar\n"
"\n"
-" Opsi berikut hanya berlaku ketika menghasilkan keluaran graphis:\n"
+" Pilihan berikut hanya berlaku ketika menghasilkan keluaran graphis:\n"
" -t,--time-based Buat graphis linear dengan waktu\n"
" -T,--total Juga gambar graphis dari total penggunaan memori\n"
" --title=STRING Gunakan STRING sebagai judul dari grapik\n"
@@ -3987,7 +3987,7 @@
#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
-msgstr "Opsi tidak dikenal: %s %s %s"
+msgstr "Pilihan tidak dikenal: %s %s %s"
#: nscd/nscd_conf.c:287
#, c-format
Modified: trunk/libc/po/sv.po
==============================================================================
--- trunk/libc/po/sv.po (original)
+++ trunk/libc/po/sv.po Wed Jun 24 09:26:34 2009
@@ -1,14 +1,14 @@
-# GNU libc message catalog for swedish
+# GNU libc message catalog for Swedish
# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008, 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the glibc package.
# Jan Djärv <jan.h.d@xxxxxxxxxx>, 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009
-# Revision: 1.60
+# Revision: 1.61
#
msgid ""
msgstr ""
"Project-Id-Version: libc 2.9.90\n"
"POT-Creation-Date: 2009-02-06 12:40-0800\n"
-"PO-Revision-Date: 2009-02-28 17:57+0100\n"
+"PO-Revision-Date: 2009-06-14 20:41+0200\n"
"Last-Translator: Jan Djärv <jan.h.d@xxxxxxxxxx>\n"
"Language-Team: Swedish <tp-sv@xxxxxxxxxxxxxxx>\n"
"MIME-Version: 1.0\n"
@@ -295,11 +295,11 @@
#: debug/xtrace.sh:33
msgid "Try \\`xtrace --help' for more information.\\n"
-msgstr "Försök med \\\"xtrace --help\\\" för mer information\\n"
+msgstr "Försök med \"xtrace --help\" för mer information\\n"
#: debug/xtrace.sh:39
msgid "xtrace: option \\`$1' requires an argument.\\n"
-msgstr "xtrace: flaggan \\\"$1\\\" behöver ett argument\\n"
+msgstr "xtrace: flaggan \"$1\" behöver ett argument\\n"
#: debug/xtrace.sh:46
msgid ""
@@ -328,7 +328,7 @@
#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
-msgstr "xtrace: okänd flagga \\\"$1\\\"\\n"
+msgstr "xtrace: okänd flagga \"$1\"\\n"
#: debug/xtrace.sh:140
msgid "No program name given\\n"
@@ -337,12 +337,12 @@
#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
-msgstr "program \\\"$program\\\" hittades inte\\n"
+msgstr "program \"$program\" hittades inte\\n"
#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
-msgstr "\\\"$program\\\" är inte en körbar binär\\n"
+msgstr "\"$program\" är inte en körbar binär\\n"
#: dlfcn/dlinfo.c:64
msgid "RTLD_SELF used in code not dynamically loaded"
@@ -932,7 +932,7 @@
#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
-msgstr "ldd: flaggan \\\"$1\\\" är tvetydig"
+msgstr "ldd: flaggan \"$1\" är tvetydig"
#: elf/ldd.bash.in:89
msgid "unrecognized option"
@@ -940,7 +940,7 @@
#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
-msgstr "Försök med \\\"ldd --help\\\" för mer information"
+msgstr "Försök med \"ldd --help\" för mer information"
#: elf/ldd.bash.in:127
msgid "missing file arguments"
@@ -1051,7 +1051,7 @@
#: elf/sln.c:179
#, c-format
msgid "%s: destination must not be a directory\n"
-msgstr "%s: målet måste vara en katalog\n"
+msgstr "%s: målet måste inte vara en katalog\n"
#: elf/sln.c:185
#, c-format
@@ -2824,11 +2824,11 @@
#: malloc/memusage.sh:27
msgid "Try \\`memusage --help' for more information."
-msgstr "Försök med \\\"memusage --help\\\" för mer information"
+msgstr "Försök med \"memusage --help\" för mer information"
#: malloc/memusage.sh:33
msgid "memusage: option \\`$1' requires an argument"
-msgstr "memusage: flaggan \\\"$1\\\" behöver ett argument"
+msgstr "memusage: flaggan \"$1\" behöver ett argument"
#: malloc/memusage.sh:39
msgid ""
@@ -2897,11 +2897,11 @@
#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
-msgstr "memusage: flaggan \\\"${1##*=}\\\" är tvetydig"
+msgstr "memusage: flaggan \"${1##*=}\" är tvetydig"
#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
-msgstr "memusage: okänd flagga \\\"$1\\\""
+msgstr "memusage: okänd flagga \"$1\""
#: malloc/memusage.sh:215
msgid "No program name given"
@@ -3463,7 +3463,7 @@
#: nis/nss_nisplus/nisplus-publickey.c:220
#, c-format
msgid "netname2user: missing group id list in `%s'"
-msgstr "netname2user: gruppid-lista saknas i \"%s\"."
+msgstr "netname2user: gruppid-lista saknas i \"%s\""
#: nis/nss_nisplus/nisplus-publickey.c:302
#: nis/nss_nisplus/nisplus-publickey.c:308
@@ -4371,10 +4371,10 @@
"\n"
msgstr ""
"Användning: getconf [-v SPEC] VAR\n"
-" eller: getconf [-v SPEC] PATH_VAR PATH\n"
+" eller: getconf [-v SPEC] VÃG_VAR VÃG\n"
"\n"
-"Hämta konfigureringsvärdet för variabeln VAR, eller för variabeln PATH_VAR\n"
-"för sökväg PATH. Om SPEC är given hämta värden för kompileringsspecifikationen\n"
+"Hämta konfigureringsvärdet för variabeln VAR, eller för variabeln VÃG_VAR\n"
+"för sökväg VÃG. Om SPEC är given hämta värden för kompileringsspecifikationen\n"
"SPEC.\n"
"\n"
@@ -4431,13 +4431,13 @@
#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: ogiltig flagga -- %c\n"
+msgstr "%s: ogiltig flagga -- \"%c\"\n"
#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: flaggan behöver ett argument -- %c\n"
+msgstr "%s: flaggan behöver ett argument -- \"%c\"\n"
#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
@@ -4611,7 +4611,7 @@
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
-msgstr "auth_unix.c - Fatalt kodningsproblem"
+msgstr "auth_unix.c: Fatalt kodningsproblem"
#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
@@ -4907,7 +4907,7 @@
#: sunrpc/rpc_main.c:1473
#, c-format
msgid "-C\t\tANSI C mode\n"
-msgstr "-C\t\tANSI-läge\n"
+msgstr "-C\t\tANSI C-läge\n"
#: sunrpc/rpc_main.c:1474
#, c-format
@@ -4917,7 +4917,7 @@
#: sunrpc/rpc_main.c:1475
#, c-format
msgid "-h\t\tgenerate header file\n"
-msgstr "-h\t\tgenerera huvudfiler\n"
+msgstr "-h\t\tgenerera huvudfil\n"
#: sunrpc/rpc_main.c:1476
#, c-format
Modified: trunk/libc/posix/Makefile
==============================================================================
--- trunk/libc/posix/Makefile (original)
+++ trunk/libc/posix/Makefile Wed Jun 24 09:26:34 2009
@@ -45,7 +45,7 @@
wait waitpid wait3 wait4 waitid \
alarm sleep pause nanosleep \
fork vfork _exit \
- execve fexecve execv execle execl execvp execlp \
+ execve fexecve execv execle execl execvp execlp execvpe \
getpid getppid \
getuid geteuid getgid getegid getgroups setuid setgid group_member \
getpgid setpgid getpgrp bsd-getpgrp setpgrp getsid setsid \
Modified: trunk/libc/posix/Versions
==============================================================================
--- trunk/libc/posix/Versions (original)
+++ trunk/libc/posix/Versions Wed Jun 24 09:26:34 2009
@@ -131,6 +131,9 @@
GLIBC_2.10 {
__posix_getopt;
}
+ GLIBC_2.11 {
+ execvpe;
+ }
GLIBC_PRIVATE {
__libc_fork; __libc_pwrite;
}
Modified: trunk/libc/posix/execvp.c
==============================================================================
--- trunk/libc/posix/execvp.c (original)
+++ trunk/libc/posix/execvp.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92, 1995-99, 2002, 2004, 2005, 2007
+/* Copyright (C) 1991,92, 1995-99, 2002, 2004, 2005, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,31 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <alloca.h>
#include <unistd.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <paths.h>
-
-
-/* The file is accessible but it is not an executable file. Invoke
- the shell to interpret it as a script. */
-static void
-internal_function
-scripts_argv (const char *file, char *const argv[], int argc, char **new_argv)
-{
- /* Construct an argument list for the shell. */
- new_argv[0] = (char *) _PATH_BSHELL;
- new_argv[1] = (char *) file;
- while (argc > 1)
- {
- new_argv[argc] = argv[argc - 1];
- --argc;
- }
-}
/* Execute FILE, searching in the `PATH' environment variable if it contains
@@ -51,170 +27,6 @@
const char *file;
char *const argv[];
{
- if (*file == '\0')
- {
- /* We check the simple case first. */
- __set_errno (ENOENT);
- return -1;
- }
-
- if (strchr (file, '/') != NULL)
- {
- /* Don't search when it contains a slash. */
- __execve (file, argv, __environ);
-
- if (errno == ENOEXEC)
- {
- /* Count the arguments. */
- int argc = 0;
- while (argv[argc++])
- ;
- size_t len = (argc + 1) * sizeof (char *);
- char **script_argv;
- void *ptr = NULL;
- if (__libc_use_alloca (len))
- script_argv = alloca (len);
- else
- script_argv = ptr = malloc (len);
-
- if (script_argv != NULL)
- {
- scripts_argv (file, argv, argc, script_argv);
- __execve (script_argv[0], script_argv, __environ);
-
- free (ptr);
- }
- }
- }
- else
- {
- size_t pathlen;
- size_t alloclen = 0;
- char *path = getenv ("PATH");
- if (path == NULL)
- {
- pathlen = confstr (_CS_PATH, (char *) NULL, 0);
- alloclen = pathlen + 1;
- }
- else
- pathlen = strlen (path);
-
- size_t len = strlen (file) + 1;
- alloclen += pathlen + len + 1;
-
- char *name;
- char *path_malloc = NULL;
- if (__libc_use_alloca (alloclen))
- name = alloca (alloclen);
- else
- {
- path_malloc = name = malloc (alloclen);
- if (name == NULL)
- return -1;
- }
-
- if (path == NULL)
- {
- /* There is no `PATH' in the environment.
- The default search path is the current directory
- followed by the path `confstr' returns for `_CS_PATH'. */
- path = name + pathlen + len + 1;
- path[0] = ':';
- (void) confstr (_CS_PATH, path + 1, pathlen);
- }
-
- /* Copy the file name at the top. */
- name = (char *) memcpy (name + pathlen + 1, file, len);
- /* And add the slash. */
- *--name = '/';
-
- char **script_argv = NULL;
- void *script_argv_malloc = NULL;
- bool got_eacces = false;
- char *p = path;
- do
- {
- char *startp;
-
- path = p;
- p = __strchrnul (path, ':');
-
- if (p == path)
- /* Two adjacent colons, or a colon at the beginning or the end
- of `PATH' means to search the current directory. */
- startp = name + 1;
- else
- startp = (char *) memcpy (name - (p - path), path, p - path);
-
- /* Try to execute this name. If it works, execve will not return. */
- __execve (startp, argv, __environ);
-
- if (errno == ENOEXEC)
- {
- if (script_argv == NULL)
- {
- /* Count the arguments. */
- int argc = 0;
- while (argv[argc++])
- ;
- size_t arglen = (argc + 1) * sizeof (char *);
- if (__libc_use_alloca (alloclen + arglen))
- script_argv = alloca (arglen);
- else
- script_argv = script_argv_malloc = malloc (arglen);
- if (script_argv == NULL)
- {
- /* A possible EACCES error is not as important as
- the ENOMEM. */
- got_eacces = false;
- break;
- }
- scripts_argv (startp, argv, argc, script_argv);
- }
-
- __execve (script_argv[0], script_argv, __environ);
- }
-
- switch (errno)
- {
- case EACCES:
- /* Record the we got a `Permission denied' error. If we end
- up finding no executable we can use, we want to diagnose
- that we did find one but were denied access. */
- got_eacces = true;
- case ENOENT:
- case ESTALE:
- case ENOTDIR:
- /* Those errors indicate the file is missing or not executable
- by us, in which case we want to just try the next path
- directory. */
- case ENODEV:
- case ETIMEDOUT:
- /* Some strange filesystems like AFS return even
- stranger error numbers. They cannot reasonably mean
- anything else so ignore those, too. */
- break;
-
- default:
- /* Some other error means we found an executable file, but
- something went wrong executing it; return the error to our
- caller. */
- return -1;
- }
- }
- while (*p++ != '\0');
-
- /* We tried every element and none of them worked. */
- if (got_eacces)
- /* At least one failure was due to permissions, so report that
- error. */
- __set_errno (EACCES);
-
- free (script_argv_malloc);
- free (path_malloc);
- }
-
- /* Return the error from the last attempt (probably ENOENT). */
- return -1;
+ return __execvpe (file, argv, __environ);
}
libc_hidden_def (execvp)
Modified: trunk/libc/posix/tst-cpucount.c
==============================================================================
--- trunk/libc/posix/tst-cpucount.c (original)
+++ trunk/libc/posix/tst-cpucount.c Wed Jun 24 09:26:34 2009
@@ -1,5 +1,6 @@
#include <sched.h>
#include <stdio.h>
+#include <sys/param.h>
static int
do_test (void)
@@ -8,7 +9,7 @@
CPU_ZERO (&c);
- for (int cnt = 0; cnt < 130; ++cnt)
+ for (int cnt = 0; cnt < MIN (CPU_SETSIZE, 130); ++cnt)
{
int n = CPU_COUNT (&c);
if (n != cnt)
Modified: trunk/libc/posix/unistd.h
==============================================================================
--- trunk/libc/posix/unistd.h (original)
+++ trunk/libc/posix/unistd.h Wed Jun 24 09:26:34 2009
@@ -551,6 +551,14 @@
extern int execlp (__const char *__file, __const char *__arg, ...)
__THROW __nonnull ((1));
+#ifdef __USE_GNU
+/* Execute FILE, searching in the `PATH' environment variable if it contains
+ no slashes, with arguments ARGV and environment from `environ'. */
+extern int execvpe (__const char *__file, char *__const __argv[],
+ char *__const __envp[])
+ __THROW __nonnull ((1));
+#endif
+
#if defined __USE_MISC || defined __USE_XOPEN
/* Add INC to priority of the current process. */
Modified: trunk/libc/resolv/res_send.c
==============================================================================
--- trunk/libc/resolv/res_send.c (original)
+++ trunk/libc/resolv/res_send.c Wed Jun 24 09:26:34 2009
@@ -1008,7 +1008,7 @@
seconds /= statp->nscount;
if (seconds <= 0)
seconds = 1;
- bool single_request = ((statp->options) & RES_SNGLKUP) != 0;// XXX
+ bool single_request = (statp->options & RES_SNGLKUP) != 0;// XXX
int save_gotsomewhere = *gotsomewhere;
retry:
evNowTime(&now);
@@ -1059,6 +1059,7 @@
have received the first answer. */
if (!single_request)
{
+ statp->options |= RES_SNGLKUP;
single_request = true;
*gotsomewhere = save_gotsomewhere;
goto retry;
Modified: trunk/libc/stdlib/Versions
==============================================================================
--- trunk/libc/stdlib/Versions (original)
+++ trunk/libc/stdlib/Versions Wed Jun 24 09:26:34 2009
@@ -104,5 +104,7 @@
# functions which have an additional interface since they are
# are cancelable.
__libc_system;
+ # Variable which needs a dynamic symbol table entry.
+ __abort_msg;
}
}
Modified: trunk/libc/stdlib/abort.c
==============================================================================
--- trunk/libc/stdlib/abort.c (original)
+++ trunk/libc/stdlib/abort.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,93,95,96,97,98,2001,02 Free Software Foundation, Inc.
+/* Copyright (C) 1991,93,1995-1998,2001,02,2009 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
@@ -35,6 +35,10 @@
# include <libio/libioP.h>
# define fflush(s) _IO_flush_all_lockp (0)
#endif
+
+/* Exported variable to locate abort message in core files etc. */
+char *__abort_msg __attribute__ ((nocommon));
+libc_hidden_def (__abort_msg)
/* We must avoid to run in circles. Therefore we remember how far we
already got. */
Modified: trunk/libc/string/strncmp.c
==============================================================================
--- trunk/libc/string/strncmp.c (original)
+++ trunk/libc/string/strncmp.c Wed Jun 24 09:26:34 2009
@@ -21,15 +21,16 @@
#undef strncmp
+#ifndef STRNCMP
+#define STRNCMP strncmp
+#endif
+
/* Compare no more than N characters of S1 and S2,
returning less than, equal to or greater than zero
if S1 is lexicographically less than, equal to or
greater than S2. */
int
-strncmp (s1, s2, n)
- const char *s1;
- const char *s2;
- size_t n;
+STRNCMP (const char *s1, const char *s2, size_t n)
{
unsigned reg_char c1 = '\0';
unsigned reg_char c2 = '\0';
@@ -70,4 +71,5 @@
return c1 - c2;
}
-libc_hidden_builtin_def (strncmp)
+
+libc_hidden_builtin_def (STRNCMP)
Modified: trunk/libc/string/test-memchr.c
==============================================================================
--- trunk/libc/string/test-memchr.c (original)
+++ trunk/libc/string/test-memchr.c Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* Test and measure memchr functions.
- Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Jakub Jelinek <jakub@xxxxxxxxxx>, 1999.
@@ -144,7 +144,12 @@
}
if (pos < len)
- result = (char *) (p + pos + align);
+ {
+ size_t r = random ();
+ if ((r & 31) == 0)
+ len = ~(uintptr_t) (p + align) - ((r >> 5) & 31);
+ result = (char *) (p + pos + align);
+ }
else
result = NULL;
Modified: trunk/libc/sunrpc/rpcinfo.c
==============================================================================
--- trunk/libc/sunrpc/rpcinfo.c (original)
+++ trunk/libc/sunrpc/rpcinfo.c Wed Jun 24 09:26:34 2009
@@ -687,7 +687,8 @@
fputs (_(" rpcinfo -p [ host ]\n"), stream);
fputs (_(" rpcinfo -b prognum versnum\n"), stream);
fputs (_(" rpcinfo -d prognum versnum\n"), stream);
- fprintf (stream, _("\n\
+ fputc ('\n', stream);
+ fprintf (stream, _("\
For bug reporting instructions, please see:\n\
%s.\n"), REPORT_BUGS_TO);
}
Modified: trunk/libc/sysdeps/generic/pty-private.h
==============================================================================
--- trunk/libc/sysdeps/generic/pty-private.h (original)
+++ trunk/libc/sysdeps/generic/pty-private.h Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* Internal defenitions and declarations for pseudo terminal functions.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@xxxxxxxxxxxxxxxxxxxxxx>, 1998.
@@ -39,7 +39,8 @@
FAIL_EBADF = 1,
FAIL_EINVAL,
FAIL_EACCES,
- FAIL_EXEC
+ FAIL_EXEC,
+ FAIL_ENOMEM
};
#endif /* pty-private.h */
Modified: trunk/libc/sysdeps/i386/dl-irel.h
==============================================================================
--- trunk/libc/sysdeps/i386/dl-irel.h (original)
+++ trunk/libc/sysdeps/i386/dl-irel.h Wed Jun 24 09:26:34 2009
@@ -21,6 +21,7 @@
#ifndef _DL_IREL_H
#define _DL_IREL_H
+#include <stdio.h>
#include <unistd.h>
#define ELF_MACHINE_IREL 1
@@ -34,11 +35,11 @@
if (__builtin_expect (r_type == R_386_IRELATIVE, 1))
{
- Elf64_Addr value = ((Elf32_Addr (*) (void)) (*reloc_addr)) ();
+ Elf32_Addr value = ((Elf32_Addr (*) (void)) (*reloc_addr)) ();
*reloc_addr = value;
}
else
- _exit (-1);
+ __libc_fatal ("unexpected reloc type in static binary");
}
#endif /* dl-irel.h */
Modified: trunk/libc/sysdeps/i386/dl-machine.h
==============================================================================
--- trunk/libc/sysdeps/i386/dl-machine.h (original)
+++ trunk/libc/sysdeps/i386/dl-machine.h Wed Jun 24 09:26:34 2009
@@ -345,9 +345,9 @@
Elf32_Addr value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
if (sym != NULL
- && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
&& __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC,
- 0))
+ 0)
+ && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
value = ((Elf32_Addr (*) (void)) value) ();
switch (r_type)
Modified: trunk/libc/sysdeps/posix/libc_fatal.c
==============================================================================
--- trunk/libc/sysdeps/posix/libc_fatal.c (original)
+++ trunk/libc/sysdeps/posix/libc_fatal.c Wed Jun 24 09:26:34 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1994,1995,1997,2000,2004,2005
+/* Copyright (C) 1993-1995,1997,2000,2004,2005,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <atomic.h>
#include <errno.h>
#include <fcntl.h>
#include <paths.h>
@@ -123,6 +124,20 @@
if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total)
written = true;
+
+ char *buf = do_abort ? malloc (total + 1) : NULL;
+ if (buf != NULL)
+ {
+ char *wp = buf;
+ for (int cnt = 0; cnt < nlist; ++cnt)
+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len);
+ *wp = '\0';
+
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
+ }
}
va_end (ap);
Modified: trunk/libc/sysdeps/powerpc/powerpc32/power6/memcpy.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/power6/memcpy.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/power6/memcpy.S Wed Jun 24 09:26:34 2009
@@ -1,5 +1,5 @@
/* Optimized memcpy implementation for PowerPC32 on POWER6.
- Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006, 2009 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
@@ -25,9 +25,9 @@
Returns 'dst'.
Memcpy handles short copies (< 32-bytes) using a binary move blocks
- (no loops) of lwz/stw. The tail (remaining 1-3) bytes is handled
- with the appropriate combination of byte and halfword load/stores.
- There is minimal effort to optimize the alignment of short moves.
+ (no loops) of lwz/stw. The tail (remaining 1-3) bytes is handled
+ with the appropriate combination of byte and halfword load/stores.
+ There is minimal effort to optimize the alignment of short moves.
Longer moves (>= 32-bytes) justify the effort to get at least the
destination word (4-byte) aligned. Further optimization is
@@ -80,11 +80,11 @@
bne- cr6,L(wdu) /* If source is not word aligned. .L6 */
clrlwi 11,31,30 /* calculate the number of tail bytes */
b L(word_aligned)
- /* Copy words from source to destination, assuming the destination is
+ /* Copy words from source to destination, assuming the destination is
aligned on a word boundary.
At this point we know there are at least 29 bytes left (32-3) to copy.
- The next step is to determine if the source is also word aligned.
+ The next step is to determine if the source is also word aligned.
If not branch to the unaligned move code at .L6. which uses
a load, shift, store strategy.
@@ -100,9 +100,9 @@
/* Move words where destination and source are word aligned.
Use an unrolled loop to copy 4 words (16-bytes) per iteration.
- If the the copy is not an exact multiple of 16 bytes, 1-3
+ If the the copy is not an exact multiple of 16 bytes, 1-3
words are copied as needed to set up the main loop. After
- the main loop exits there may be a tail of 1-3 bytes. These bytes are
+ the main loop exits there may be a tail of 1-3 bytes. These bytes are
copied a halfword/byte at a time as needed to preserve alignment. */
L(word_aligned):
mtcrf 0x01,9
@@ -121,7 +121,7 @@
addi 10,3,8
bf 31,4f
lwz 0,8(12)
- stw 0,8(3)
+ stw 0,8(3)
blt cr1,3f
addi 11,12,12
addi 10,3,12
@@ -135,7 +135,7 @@
addi 11,12,4
stw 6,0(3)
addi 10,3,4
-
+
.align 4
4:
lwz 6,0(11)
@@ -149,14 +149,14 @@
addi 11,11,16
addi 10,10,16
bdnz 4b
-3:
+3:
clrrwi 0,31,2
mtcrf 0x01,31
beq cr6,0f
.L9:
add 3,3,0
add 12,12,0
-
+
/* At this point we have a tail of 0-3 bytes and we know that the
destination is word aligned. */
2: bf 30,1f
@@ -175,7 +175,7 @@
addi 1,1,32
blr
-/* Copy up to 31 bytes. This divided into two cases 0-8 bytes and 9-31
+/* Copy up to 31 bytes. This divided into two cases 0-8 bytes and 9-31
bytes. Each case is handled without loops, using binary (1,2,4,8)
tests.
@@ -208,7 +208,7 @@
andi. 0,8,3
beq cr6,L(wus_8) /* Handle moves of 8 bytes. */
/* At least 9 bytes left. Get the source word aligned. */
- cmpldi cr1,5,16
+ cmplwi cr1,5,16
mr 12,4
ble cr6,L(wus_4) /* Handle moves of 0-8 bytes. */
mr 11,3
@@ -241,7 +241,7 @@
[... 2166 lines stripped ...]