From: Michael Tremer Date: Mon, 7 Jan 2013 21:04:26 +0000 (+0100) Subject: glibc: Update to 2.17. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3994dee19059cb0c20cd666b3c2ccb633e504f88;p=ipfire-3.x.git glibc: Update to 2.17. --- diff --git a/glibc/glibc.nm b/glibc/glibc.nm index 23ac9c7fd..ac7f160ec 100644 --- a/glibc/glibc.nm +++ b/glibc/glibc.nm @@ -4,8 +4,8 @@ ############################################################################### name = glibc -version = 2.16.0 -release = 4 +version = 2.17 +release = 1 maintainer = Michael Tremer groups = System/Base @@ -23,11 +23,8 @@ description Linux system will not function. end -# The version of the ports addon. -ports_version = 2.16.0 - source_dl = http://ftp.gnu.org/gnu/glibc/ -sources = %{thisapp}.tar.xz glibc-ports-%{ports_version}.tar.xz +sources = %{thisapp}.tar.xz build # Optimize glibc for kernel @@ -38,7 +35,7 @@ build autoconf automake gettext - kernel-headers>=%{OPTIMIZED_KERNEL} + kernel-headers >= %{OPTIMIZED_KERNEL} libcap-devel libselinux-devel nss-devel @@ -61,16 +58,7 @@ build export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes - prepare - # Extract source tarballs. - %{MACRO_EXTRACT_TARBALL} - - # Create link for ports addon. - ln -svf ../glibc-ports-%{ports_version} ports - - # Apply the patches. - %{MACRO_PATCHES} - + prepare_cmds # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is # unknown whether this is a bash bug or a Glibc problem. Disable # installation of this locale in order to avoid the problem. @@ -93,56 +81,8 @@ build sed -i Makeconfig \ -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/" - # stdlib/tst-putenvmod is not linked against libc. - sed -i stdlib/Makefile \ - -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g" - - # stdio-common/bug22 hits timeout. - sed -i stdio-common/bug22.c \ - -e "s/#define TIMEOUT.*/#define TIMEOUT 300/" - - # These tests don't work or need more investigation: - sed -i dlfcn/Makefile -e "s/default //g" - - sed -i nptl/Makefile \ - -e "s/tst-mutex5 //g" \ - -e "s/tst-mutex5a //g" \ - -e "s/tst-cond11 //g" \ - -e "s/tst-rwlock6 //g" \ - -e "s/tst-rwlock7 //g" \ - -e "s/tst-sem5 //g" \ - -e "s/tst-cancelx4 //g" \ - -e "s/tst-cancelx5 //g" \ - -e "s/tst-cancelx10 //g" \ - -e "s/tst-cancelx18 //g" \ - -e "s/tst-signal1 //g" - - # These are known to fail on x86: - sed -i rt/Makefile \ - -e "s/tst-cpuclock1 //g" \ - -e "s/tst-cpuclock2 //g" - - sed -i elf/Makefile \ - -e "s/tst-tls1 //g" \ - -e "s/tst-tls1-static //g" \ - -e "s/tst-tls2 //g" \ - -e "s/tst-tls2-static //g" \ - -e "s/tst-tls3 //g" \ - -e "s/resolvfail //g" \ - -e "s/constload1 //g" \ - -e "s/order //g" \ - -e "s/lateglobal //g" \ - -e "s/dblload //g" \ - -e "s/dblunload //g" \ - -e "s/reldep6 //g" \ - -e "s/circleload1 //g" \ - -e "s/tst-global1 //g" \ - -e "s/tst-audit2 //g" \ - -e "s/check-localplt //g" \ - -e "s/check-localplt.out$$//g" - - sed -i signal/Makefile \ - -e "s/tst-sigset2//g" + # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html + sed -e "s/PIC/SHARED/g" -i ports/sysdeps/arm/{set,__long}jmp.S end configure_options = \ @@ -156,7 +96,8 @@ build --disable-werror \ --enable-bind-now \ --enable-nss-crypt \ - --enable-obsolete-rpc + --enable-obsolete-rpc \ + --with-bugurl=http://bugtracker.ipfire.org if "%{DISTRO_ARCH}" == "armv5tel" # Disable hardware FP for ARM. @@ -192,13 +133,6 @@ build CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}" end - #test - # cd $(DIR_SRC)/glibc-build - # make check TIMEOUTFACTOR=16 \ - # CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \ - # CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" - #end - install cd %{DIR_SRC}/glibc-build make install install_root=%{BUILDROOT} diff --git a/glibc/patches/glibc-2.12-hardened-pie.patch b/glibc/patches/glibc-2.17-hardened-pie.patch similarity index 64% rename from glibc/patches/glibc-2.12-hardened-pie.patch rename to glibc/patches/glibc-2.17-hardened-pie.patch index 689e71c72..da4fb8253 100644 --- a/glibc/patches/glibc-2.12-hardened-pie.patch +++ b/glibc/patches/glibc-2.17-hardened-pie.patch @@ -1,13 +1,14 @@ -2009-11-08 Magnus Granberg +2012-11-11 Magnus Granberg - bug #292139 - * Makeconfig +link-pie: set +link to +link-pie - +link-static: change $(static-start-installed-name) to S$(static-start-installed-name) - +prector: set +prector to +prectorS +postctor: set +postctor to +postctorS - + #442712 + * Makeconfig (+link): Set to +link-pie. + (+link-static-before-libc): Change $(static-start-installed-name) to + S$(static-start-installed-name). + (+prector): Set to +prectorS. + (+postctor): Set to +postctorS. ---- a/Makeconfig 2009-11-06 16:39:18.000000000 +0100 -+++ b/Makeconfig 2009-11-08 03:14:45.000000000 +0100 +--- libc/Makeconfig ++++ libc/Makeconfig @@ -447,11 +447,12 @@ $(common-objpfx)libc% $(+postinit),$^) \ $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit) @@ -15,11 +16,11 @@ ++link = $(+link-pie) # Command for statically linking programs with the C library. ifndef +link-static - +link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \ + +link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \ - $(addprefix $(csu-objpfx),$(static-start-installed-name)) \ + $(addprefix $(csu-objpfx),S$(static-start-installed-name)) \ - $(+preinit) $(+prector) \ + $(+preinit) $(+prectorT) \ $(filter-out $(addprefix $(csu-objpfx),start.o \ $(start-installed-name))\ @@ -549,11 +550,10 @@ @@ -33,6 +34,9 @@ +postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o` ++prector = $(+prectorS) ++postctor = $(+postctorS) + # Variants of the two previous definitions for statically linking programs. + +prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o` + +postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o` +interp = $(addprefix $(elf-objpfx),interp.os) endif csu-objpfx = $(common-objpfx)csu/ diff --git a/glibc/patches/glibc-fedora-__libc_multiple_libcs.patch b/glibc/patches/glibc-fedora-__libc_multiple_libcs.patch new file mode 100644 index 000000000..d15920a7a --- /dev/null +++ b/glibc/patches/glibc-fedora-__libc_multiple_libcs.patch @@ -0,0 +1,83 @@ +From 16552c01a66633c9e412984d9d92616bd4e5303c Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Fri, 11 Jun 2010 11:04:11 +0200 +Subject: [PATCH] Properly set __libc_multiple_libcs + +* elf/rtld.c (_dl_starting_up): Always define. +(dl_main): Always set _dl_starting_up. +* elf/dl-support.c (_dl_starting_up): Always define. +* elf/dl-init.c (_dl_init): Always clear _dl_starting_up. + +--- + ChangeLog | 7 +++++++ + elf/dl-init.c | 4 ---- + elf/dl-support.c | 2 -- + elf/rtld.c | 4 ---- + 4 files changed, 7 insertions(+), 10 deletions(-) + +--- a/elf/dl-init.c ++++ b/elf/dl-init.c +@@ -23,11 +23,9 @@ + /* Type of the initializer. */ + typedef void (*init_t) (int, char **, char **); + +-#ifndef HAVE_INLINED_SYSCALLS + /* Flag, nonzero during startup phase. */ + extern int _dl_starting_up; + extern int _dl_starting_up_internal attribute_hidden; +-#endif + + + static void +@@ -132,9 +130,7 @@ _dl_init (struct link_map *main_map, int argc, char **argv, char **env) + while (i-- > 0) + call_init (main_map->l_initfini[i], argc, argv, env); + +-#ifndef HAVE_INLINED_SYSCALLS + /* Finished starting up. */ + INTUSE(_dl_starting_up) = 0; +-#endif + } + INTDEF (_dl_init) +--- a/elf/dl-support.c ++++ b/elf/dl-support.c +@@ -81,10 +81,8 @@ unsigned long long _dl_load_adds; + create a fake scope containing nothing. */ + struct r_scope_elem _dl_initial_searchlist; + +-#ifndef HAVE_INLINED_SYSCALLS + /* Nonzero during startup. */ + int _dl_starting_up = 1; +-#endif + + /* Random data provided by the kernel. */ + void *_dl_random; +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -106,7 +106,6 @@ static struct audit_list + struct audit_list *next; + } *audit_list; + +-#ifndef HAVE_INLINED_SYSCALLS + /* Set nonzero during loading and initialization of executable and + libraries, cleared before the executable's entry point runs. This + must not be initialized to nonzero, because the unused dynamic +@@ -116,7 +115,6 @@ static struct audit_list + never be called. */ + int _dl_starting_up = 0; + INTVARDEF(_dl_starting_up) +-#endif + + /* This is the structure which defines all variables global to ld.so + (except those which cannot be added for some reason). */ +@@ -929,10 +927,8 @@ dl_main (const ElfW(Phdr) *phdr, + /* Process the environment variable which control the behaviour. */ + process_envvars (&mode); + +-#ifndef HAVE_INLINED_SYSCALLS + /* Set up a flag which tells we are just starting. */ + INTUSE(_dl_starting_up) = 1; +-#endif + + if (*user_entry == (ElfW(Addr)) ENTRY_POINT) + { diff --git a/glibc/patches/glibc-fedora-elf-ORIGIN.patch b/glibc/patches/glibc-fedora-elf-ORIGIN.patch new file mode 100644 index 000000000..bfaff8363 --- /dev/null +++ b/glibc/patches/glibc-fedora-elf-ORIGIN.patch @@ -0,0 +1,98 @@ +From 207e77fd3f0a94acdf0557608dd4f10ce0e0f22f Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Mon, 9 May 2011 10:55:58 +0200 +Subject: [PATCH] Never leave $ORIGIN unexpanded + +* elf/dl-load.c (is_dst): Remove parameter secure, all callers +changed. Move check for valid use of $ORIGIN ... +(_dl_dst_substitute): ... here. Reset check_for_trusted when a +path element is skipped. + +--- + ChangeLog | 7 +++++++ + elf/dl-load.c | 34 ++++++++++++++++------------------ + 2 files changed, 23 insertions(+), 18 deletions(-) + +diff --git a/elf/dl-load.c b/elf/dl-load.c +index 18a83d2..6e16a9a 100644 +--- a/elf/dl-load.c ++++ b/elf/dl-load.c +@@ -249,8 +249,7 @@ is_trusted_path_normalize (const char *path, size_t len) + + + static size_t +-is_dst (const char *start, const char *name, const char *str, +- int is_path, int secure) ++is_dst (const char *start, const char *name, const char *str, int is_path) + { + size_t len; + bool is_curly = false; +@@ -279,12 +278,6 @@ is_dst (const char *start, const char *name, const char *str, + && (!is_path || name[len] != ':')) + return 0; + +- if (__builtin_expect (secure, 0) +- && ((name[len] != '\0' && name[len] != '/' +- && (!is_path || name[len] != ':')) +- || (name != start + 1 && (!is_path || name[-2] != ':')))) +- return 0; +- + return len; + } + +@@ -299,13 +292,10 @@ _dl_dst_count (const char *name, int is_path) + { + size_t len; + +- /* $ORIGIN is not expanded for SUID/GUID programs (except if it +- is $ORIGIN alone) and it must always appear first in path. */ + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0 +- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 +- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 ++ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 ++ || (len = is_dst (start, name, "LIB", is_path)) != 0) + ++cnt; + + name = strchr (name + len, '$'); +@@ -338,9 +328,16 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, + size_t len; + + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) + { ++ /* For SUID/GUID programs $ORIGIN must always appear ++ first in a path element. */ ++ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) ++ && ((name[len] != '\0' && name[len] != '/' ++ && (!is_path || name[len] != ':')) ++ || (name != start + 1 && (!is_path || name[-2] != ':')))) ++ repl = (const char *) -1; ++ else + #ifndef SHARED + if (l == NULL) + repl = _dl_get_origin (); +@@ -351,9 +348,9 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, + check_for_trusted = (INTUSE(__libc_enable_secure) + && l->l_type == lt_executable); + } +- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) + repl = GLRO(dl_platform); +- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) + repl = DL_DST_LIB; + + if (repl != NULL && repl != (const char *) -1) +@@ -373,6 +370,7 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, + element, but keep an empty element at the end. */ + if (wp == result && is_path && *name == ':' && name[1] != '\0') + ++name; ++ check_for_trusted = false; + } + else + /* No DST we recognize. */ diff --git a/glibc/patches/glibc-fedora-elf-init-hidden_undef.patch b/glibc/patches/glibc-fedora-elf-init-hidden_undef.patch new file mode 100644 index 000000000..cd50d3b73 --- /dev/null +++ b/glibc/patches/glibc-fedora-elf-init-hidden_undef.patch @@ -0,0 +1,30 @@ +* Fri May 29 2003 Jakub Jelinek 2.3.2-44 +- make __init_array_start etc. symbols in elf-init.oS hidden undefined + +diff -Nrup a/csu/elf-init.c b/csu/elf-init.c +--- a/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 ++++ b/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 +@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, + extern void (*__fini_array_start []) (void) attribute_hidden; + extern void (*__fini_array_end []) (void) attribute_hidden; + ++#if defined HAVE_VISIBILITY_ATTRIBUTE \ ++ && (defined SHARED || defined LIBC_NONSHARED) ++# define hidden_undef_2(x) #x ++# define hidden_undef_1(x) hidden_undef_2 (x) ++# define hidden_undef(x) \ ++ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ ++ __asm (".hidden " #x); ++#else ++# define hidden_undef(x) ++#endif ++ ++hidden_undef (__preinit_array_start) ++hidden_undef (__preinit_array_end) ++hidden_undef (__init_array_start) ++hidden_undef (__init_array_end) ++hidden_undef (__fini_array_start) ++hidden_undef (__fini_array_end) + + /* These function symbols are provided for the .init/.fini section entry + points automagically by the linker. */ diff --git a/glibc/patches/glibc-fedora-elf-rh737223.patch b/glibc/patches/glibc-fedora-elf-rh737223.patch new file mode 100644 index 000000000..5ae6e3aa6 --- /dev/null +++ b/glibc/patches/glibc-fedora-elf-rh737223.patch @@ -0,0 +1,15 @@ +Binary files a/elf/.rtld.c.rej.swp and b/elf/.rtld.c.rej.swp differ +diff -Nrup a/elf/setup-vdso.h b/elf/setup-vdso.h +--- a/elf/setup-vdso.h 2012-10-10 21:34:38.000000000 -0600 ++++ b/elf/setup-vdso.h 2012-10-11 09:43:14.152958832 -0600 +@@ -93,7 +93,9 @@ setup_vdso (struct link_map *main_map __ + char *copy = malloc (len); + if (copy == NULL) + _dl_fatal_printf ("out of memory\n"); +- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len); ++ l->l_libname->name = memcpy (copy, dsoname, len); ++ if (GLRO(dl_debug_mask)) ++ l->l_name = copy; + } + + /* Add the vDSO to the object list. */ diff --git a/glibc/patches/glibc-fedora-gai-canonical.patch b/glibc/patches/glibc-fedora-gai-canonical.patch new file mode 100644 index 000000000..c058ecf95 --- /dev/null +++ b/glibc/patches/glibc-fedora-gai-canonical.patch @@ -0,0 +1,128 @@ +From bf18f175afdb59cdcd1016995b351e2bbb1d6ba7 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Tue, 21 Jun 2011 17:28:57 +0200 +Subject: [PATCH] Don't use gethostbyaddr to determine canonical name + +* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr +to determine canonical name. + +--- + ChangeLog | 5 +++ + sysdeps/posix/getaddrinfo.c | 77 +++---------------------------------------- + 2 files changed, 10 insertions(+), 72 deletions(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -565,8 +565,8 @@ gaih_inet (const char *name, const struct gaih_service *service, + + /* If we do not have to look for IPv6 addresses, use + the simple, old functions, which do not support +- IPv6 scope ids. */ +- if (req->ai_family == AF_INET) ++ IPv6 scope ids, nor retrieving the canonical name. */ ++ if (req->ai_family == AF_INET && (req->ai_flags & AI_CANONNAME) == 0) + { + /* Allocate additional room for struct host_data. */ + size_t tmpbuflen = (512 + MAX_NR_ALIASES * sizeof(char*) +@@ -1107,70 +1107,10 @@ gaih_inet (const char *name, const struct gaih_service *service, + /* Only the first entry gets the canonical name. */ + if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) + { +- char *tmpbuf2 = NULL; +- bool malloc_tmpbuf2 = false; +- + if (canon == NULL) +- { +- struct hostent *h = NULL; +- int herrno; +- struct hostent th; +- /* Add room for struct host_data. */ +- size_t tmpbuf2len = (512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1) +- * sizeof(char*) + 16 * sizeof(char)); +- +- do +- { +- if (__libc_use_alloca (alloca_used + 2 * tmpbuf2len)) +- tmpbuf2 = extend_alloca_account (tmpbuf2, tmpbuf2len, +- tmpbuf2len * 2, +- alloca_used); +- else +- { +- char *newp = realloc (malloc_tmpbuf2 ? tmpbuf2 : NULL, +- 2 * tmpbuf2len); +- if (newp == NULL) +- { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- result = -EAI_MEMORY; +- goto free_and_return; +- } +- +- tmpbuf2 = newp; +- tmpbuf2len = 2 * tmpbuf2len; +- malloc_tmpbuf2 = true; +- } +- +- rc = __gethostbyaddr_r (at2->addr, +- ((at2->family == AF_INET6) +- ? sizeof (struct in6_addr) +- : sizeof (struct in_addr)), +- at2->family, &th, tmpbuf2, +- tmpbuf2len, &h, &herrno); +- } +- while (rc == ERANGE && herrno == NETDB_INTERNAL); +- +- if (rc != 0 && herrno == NETDB_INTERNAL) +- { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- +- __set_h_errno (herrno); +- result = -EAI_SYSTEM; +- goto free_and_return; +- } +- +- if (h != NULL) +- canon = h->h_name; +- else +- { +- assert (orig_name != NULL); +- /* If the canonical name cannot be determined, use +- the passed in string. */ +- canon = orig_name; +- } +- } ++ /* If the canonical name cannot be determined, use ++ the passed in string. */ ++ canon = orig_name; + + #ifdef HAVE_LIBIDN + if (req->ai_flags & AI_CANONIDN) +@@ -1185,9 +1125,6 @@ gaih_inet (const char *name, const struct gaih_service *service, + int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); + if (rc != IDNA_SUCCESS) + { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- + if (rc == IDNA_MALLOC_ERROR) + result = -EAI_MEMORY; + else if (rc == IDNA_DLOPEN_ERROR) +@@ -1217,17 +1154,11 @@ gaih_inet (const char *name, const struct gaih_service *service, + canon = strdup (canon); + if (canon == NULL) + { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- + result = -EAI_MEMORY; + goto free_and_return; + } + } + } +- +- if (malloc_tmpbuf2) +- free (tmpbuf2); + } + + family = at2->family; diff --git a/glibc/patches/glibc-fedora-getrlimit-PLT.patch b/glibc/patches/glibc-fedora-getrlimit-PLT.patch new file mode 100644 index 000000000..bd77bb36b --- /dev/null +++ b/glibc/patches/glibc-fedora-getrlimit-PLT.patch @@ -0,0 +1,45 @@ +From 70d0a630700f602a457832383161d261fe222db5 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 1 Jul 2010 13:14:26 +0200 +Subject: [PATCH] Fix PLT reference + +* include/sys/resource.h (__getrlimit): Add hidden proto. +* sysdeps/unix/sysv/linux/i386/getrlimit.c: Add libc_hidden_weak. +* sysdeps/mach/hurd/getrlimit.c: Add libc_hidden_def. +* resource/getrlimit.c: Likewise. + +--- + ChangeLog | 7 +++++++ + include/sys/resource.h | 1 + + resource/getrlimit.c | 1 + + sysdeps/mach/hurd/getrlimit.c | 1 + + sysdeps/unix/sysv/linux/i386/getrlimit.c | 1 + + 5 files changed, 11 insertions(+), 0 deletions(-) + +--- a/include/sys/resource.h ++++ b/include/sys/resource.h +@@ -14,5 +14,6 @@ extern int __getrusage (enum __rusage_who __who, struct rusage *__usage) + + extern int __setrlimit (enum __rlimit_resource __resource, + const struct rlimit *__rlimits); ++libc_hidden_proto (__getrlimit) + #endif + #endif +--- a/resource/getrlimit.c ++++ b/resource/getrlimit.c +@@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) + __set_errno (ENOSYS); + return -1; + } ++libc_hidden_def (__getrlimit) + weak_alias (__getrlimit, getrlimit) + + stub_warning (getrlimit) +--- a/sysdeps/mach/hurd/getrlimit.c ++++ b/sysdeps/mach/hurd/getrlimit.c +@@ -43,4 +43,5 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) + + return 0; + } ++libc_hidden_def (__getrlimit) + weak_alias (__getrlimit, getrlimit) diff --git a/glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch b/glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch new file mode 100644 index 000000000..80c0f0dbb --- /dev/null +++ b/glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch @@ -0,0 +1,18 @@ +diff -Nrup a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile +--- a/sysdeps/i386/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/i386/Makefile 2012-06-07 12:15:21.826318641 -0600 +@@ -62,6 +64,14 @@ endif + + ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) + defines += -DNO_TLS_DIRECT_SEG_REFS ++else ++# .a libraries are not performance critical and so we ++# build them without direct TLS segment references ++# always. ++CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.o += -mno-tls-direct-seg-refs ++CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.oS += -mno-tls-direct-seg-refs + endif + + ifeq ($(subdir),elf) diff --git a/glibc/patches/glibc-fedora-include-bits-ldbl.patch b/glibc/patches/glibc-fedora-include-bits-ldbl.patch new file mode 100644 index 000000000..1e5d763b9 --- /dev/null +++ b/glibc/patches/glibc-fedora-include-bits-ldbl.patch @@ -0,0 +1,30 @@ +From 5eb4509a6651d19c7a28c4506d6aa582c9ee095a Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Wed, 1 Feb 2006 09:30:43 +0000 +Subject: [PATCH] 128-bit long double fixes + +* include/bits/stdlib-ldbl.h: New file. +* include/bits/wchar-ldbl.h: New file. + +--- + ChangeLog | 5 +++++ + include/bits/stdlib-ldbl.h | 1 + + include/bits/wchar-ldbl.h | 1 + + 3 files changed, 7 insertions(+), 0 deletions(-) + create mode 100644 include/bits/stdlib-ldbl.h + create mode 100644 include/bits/wchar-ldbl.h + +diff --git a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h +new file mode 100644 +index 0000000..6250949 +--- /dev/null ++++ b/include/bits/stdlib-ldbl.h +@@ -0,0 +1 @@ ++#include +diff --git a/include/bits/wchar-ldbl.h b/include/bits/wchar-ldbl.h +new file mode 100644 +index 0000000..29baa2f +--- /dev/null ++++ b/include/bits/wchar-ldbl.h +@@ -0,0 +1 @@ ++#include diff --git a/glibc/patches/glibc-fedora-ldd.patch b/glibc/patches/glibc-fedora-ldd.patch new file mode 100644 index 000000000..51aec739b --- /dev/null +++ b/glibc/patches/glibc-fedora-ldd.patch @@ -0,0 +1,42 @@ +From 83e5edd390eabe8f8e8e0d051f929b77a30c0767 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Fri, 18 Mar 2011 16:22:52 +0100 +Subject: [PATCH] ldd: never run file directly + +* elf/ldd.bash.in: Never run file directly. + +--- + ChangeLog | 4 ++++ + elf/ldd.bash.in | 14 +------------- + 2 files changed, 5 insertions(+), 13 deletions(-) + +--- a/elf/ldd.bash.in ++++ b/elf/ldd.bash.in +@@ -166,18 +166,6 @@ warning: you do not have execution permission for" "\`$file'" >&2 + fi + done + case $ret in +- 0) +- # If the program exits with exit code 5, it means the process has been +- # invoked with __libc_enable_secure. Fall back to running it through +- # the dynamic linker. +- try_trace "$file" +- rc=$? +- if [ $rc = 5 ]; then +- try_trace "$RTLD" "$file" +- rc=$? +- fi +- [ $rc = 0 ] || result=1 +- ;; + 1) + # This can be a non-ELF binary or no binary at all. + nonelf "$file" || { +@@ -185,7 +173,7 @@ warning: you do not have execution permission for" "\`$file'" >&2 + result=1 + } + ;; +- 2) ++ 0|2) + try_trace "$RTLD" "$file" || result=1 + ;; + *) diff --git a/glibc/patches/glibc-fedora-linux-tcsetattr.patch b/glibc/patches/glibc-fedora-linux-tcsetattr.patch new file mode 100644 index 000000000..066ac484b --- /dev/null +++ b/glibc/patches/glibc-fedora-linux-tcsetattr.patch @@ -0,0 +1,48 @@ +diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c +--- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 +@@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios + { + struct __kernel_termios k_termios; + unsigned long int cmd; ++ int retval; + + switch (optional_actions) + { +@@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios + memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], + __KERNEL_NCCS * sizeof (cc_t)); + +- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ ++ if (retval == 0 && cmd == TCSETS) ++ { ++ /* The Linux kernel has a bug which silently ignore the invalid ++ c_cflag on pty. We have to check it here. */ ++ int save = errno; ++ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); ++ if (retval) ++ { ++ /* We cannot verify if the setting is ok. We don't return ++ an error (?). */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((termios_p->c_cflag & (PARENB | CREAD)) ++ != (k_termios.c_cflag & (PARENB | CREAD)) ++ || ((termios_p->c_cflag & CSIZE) ++ && ((termios_p->c_cflag & CSIZE) ++ != (k_termios.c_cflag & CSIZE)))) ++ { ++ /* It looks like the Linux kernel silently changed the ++ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an ++ error. */ ++ __set_errno (EINVAL); ++ retval = -1; ++ } ++ } ++ ++ return retval; + } + libc_hidden_def (tcsetattr) diff --git a/glibc/patches/glibc-fedora-localedata-rh61908.patch b/glibc/patches/glibc-fedora-localedata-rh61908.patch new file mode 100644 index 000000000..c8fee0f4e --- /dev/null +++ b/glibc/patches/glibc-fedora-localedata-rh61908.patch @@ -0,0 +1,38 @@ +* Tue Mar 26 2002 Jakub Jelinek 2.2.5-28 +- add a couple of .ISO-8859-15 locales (#61908) + +diff -Nrup a/localedata/SUPPORTED b/localedata/SUPPORTED +--- a/localedata/SUPPORTED 2012-11-25 12:59:31.000000000 -0700 ++++ b/localedata/SUPPORTED 2012-11-26 12:58:43.298223018 -0700 +@@ -89,6 +89,7 @@ cy_GB.UTF-8/UTF-8 \ + cy_GB/ISO-8859-14 \ + da_DK.UTF-8/UTF-8 \ + da_DK/ISO-8859-1 \ ++da_DK.ISO-8859-15/ISO-8859-15 \ + de_AT.UTF-8/UTF-8 \ + de_AT/ISO-8859-1 \ + de_AT@euro/ISO-8859-15 \ +@@ -121,6 +122,7 @@ en_DK.UTF-8/UTF-8 \ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ ++en_GB.ISO-8859-15/ISO-8859-15 \ + en_HK.UTF-8/UTF-8 \ + en_HK/ISO-8859-1 \ + en_IE.UTF-8/UTF-8 \ +@@ -136,6 +138,7 @@ en_SG.UTF-8/UTF-8 \ + en_SG/ISO-8859-1 \ + en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ ++en_US.ISO-8859-15/ISO-8859-15 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ + en_ZM/UTF-8 \ +@@ -385,6 +388,7 @@ sv_FI/ISO-8859-1 \ + sv_FI@euro/ISO-8859-15 \ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ ++sv_SE.ISO-8859-15/ISO-8859-15 \ + sw_KE/UTF-8 \ + sw_TZ/UTF-8 \ + szl_PL/UTF-8 \ diff --git a/glibc/patches/glibc-fedora-localedef.patch b/glibc/patches/glibc-fedora-localedef.patch new file mode 100644 index 000000000..ee1463a2e --- /dev/null +++ b/glibc/patches/glibc-fedora-localedef.patch @@ -0,0 +1,11 @@ +diff -Nrup a/localedata/Makefile b/localedata/Makefile +--- a/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 +@@ -211,6 +211,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo + echo -n '...'; \ + input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ + $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ diff --git a/glibc/patches/glibc-fedora-locarchive.patch b/glibc/patches/glibc-fedora-locarchive.patch new file mode 100644 index 000000000..9a702af55 --- /dev/null +++ b/glibc/patches/glibc-fedora-locarchive.patch @@ -0,0 +1,51 @@ +This is a part of commit glibc-2.3.3-1492-ga891c7b, +needed for fedora/build-locale-archive.c only. + +diff -Nrup a/ChangeLog.17 b/ChangeLog.17 +--- a/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 ++++ b/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 +@@ -11818,6 +11829,10 @@ d2009-10-30 Ulrich Drepper ++ ++ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. ++ + 2007-04-16 Ulrich Drepper + + [BZ #4364] +diff -Nrup a/locale/programs/locarchive.c b/locale/programs/locarchive.c +--- a/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 ++++ b/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 +@@ -252,9 +252,9 @@ oldlocrecentcmp (const void *a, const vo + /* forward decls for below */ + static uint32_t add_locale (struct locarhandle *ah, const char *name, + locale_data_t data, bool replace); +-static void add_alias (struct locarhandle *ah, const char *alias, +- bool replace, const char *oldname, +- uint32_t *locrec_offset_p); ++void add_alias (struct locarhandle *ah, const char *alias, ++ bool replace, const char *oldname, ++ uint32_t *locrec_offset_p); + + + static bool +@@ -635,7 +635,7 @@ close_archive (struct locarhandle *ah) + #include "../../intl/explodename.c" + #include "../../intl/l10nflist.c" + +-static struct namehashent * ++struct namehashent * + insert_name (struct locarhandle *ah, + const char *name, size_t name_len, bool replace) + { +@@ -693,7 +693,7 @@ insert_name (struct locarhandle *ah, + return &namehashtab[idx]; + } + +-static void ++void + add_alias (struct locarhandle *ah, const char *alias, bool replace, + const char *oldname, uint32_t *locrec_offset_p) + { diff --git a/glibc/patches/glibc-fedora-manual-dircategory.patch b/glibc/patches/glibc-fedora-manual-dircategory.patch new file mode 100644 index 000000000..f6816207d --- /dev/null +++ b/glibc/patches/glibc-fedora-manual-dircategory.patch @@ -0,0 +1,20 @@ +From 4820b9175535e13df79ce816106016040014916e Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Fri, 3 Nov 2006 16:31:21 +0000 +Subject: [PATCH] Change @dircategory. + +--- + manual/libc.texinfo | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/manual/libc.texinfo ++++ b/manual/libc.texinfo +@@ -7,7 +7,7 @@ + @include macros.texi + + @comment Tell install-info what to do. +-@dircategory Software libraries ++@dircategory Libraries + @direntry + * Libc: (libc). C library. + @end direntry diff --git a/glibc/patches/glibc-fedora-nis-rh188246.patch b/glibc/patches/glibc-fedora-nis-rh188246.patch new file mode 100644 index 000000000..938990130 --- /dev/null +++ b/glibc/patches/glibc-fedora-nis-rh188246.patch @@ -0,0 +1,21 @@ +From baba5d9461d4e8a581ac26fe4412ad783ffc73e7 Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Mon, 1 May 2006 08:02:53 +0000 +Subject: [PATCH] Enable SETENT_BATCH_READ nis/nss option by default + +* Mon May 1 2006 Jakub Jelinek 2.4.90-4 +- SETENT_BATCH_READ /etc/default/nss option for speeding up + some usages of NIS+ (#188246) + +diff --git a/nis/nss b/nis/nss +--- a/nis/nss ++++ b/nis/nss +@@ -25,7 +25,7 @@ + # memory with every getXXent() call. Otherwise each getXXent() call + # might result into a network communication with the server to get + # the next entry. +-#SETENT_BATCH_READ=TRUE ++SETENT_BATCH_READ=TRUE + # + # ADJUNCT_AS_SHADOW + # If set to TRUE, the passwd routines in the NIS NSS module will not diff --git a/glibc/patches/glibc-fedora-nptl-linklibc.patch b/glibc/patches/glibc-fedora-nptl-linklibc.patch new file mode 100644 index 000000000..350c3504d --- /dev/null +++ b/glibc/patches/glibc-fedora-nptl-linklibc.patch @@ -0,0 +1,25 @@ +diff -Nrup a/nptl/Makefile b/nptl/Makefile +--- a/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 +@@ -529,15 +529,19 @@ $(addprefix $(objpfx), \ + $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so +-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, ++# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, + # since otherwise libpthread.so comes before libc.so when linking. + $(addprefix $(objpfx), $(tests-reverse)): \ +- $(objpfx)../libc.so $(objpfx)libpthread.so \ ++ $(objpfx)linklibc.so $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)../libc.so: $(common-objpfx)libc.so ; + $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a + + $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so ++ ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ++ ln -s ../libc.so $@ ++generated += libclink.so + else + $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a + endif diff --git a/glibc/patches/glibc-fedora-nscd.patch b/glibc/patches/glibc-fedora-nscd.patch new file mode 100644 index 000000000..a26b9283d --- /dev/null +++ b/glibc/patches/glibc-fedora-nscd.patch @@ -0,0 +1,12 @@ +diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf +--- a/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600 ++++ b/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600 +@@ -33,7 +33,7 @@ + # logfile /var/log/nscd.log + # threads 4 + # max-threads 32 +-# server-user nobody ++ server-user nscd + # stat-user somebody + debug-level 0 + # reload-count 5 diff --git a/glibc/patches/glibc-fedora-ppc-unwind.patch b/glibc/patches/glibc-fedora-ppc-unwind.patch new file mode 100644 index 000000000..7e9b7ab0f --- /dev/null +++ b/glibc/patches/glibc-fedora-ppc-unwind.patch @@ -0,0 +1,20 @@ +glibc-2.3.3-1478-g37582bc + +* Thu Nov 30 2006 Jakub Jelinek 2.5.90-9 +- on ppc64 build __libc_start_main without unwind info, + as it breaks MD_FROB_UPDATE_CONTEXT (#217729, #217775; in the + future that could be fixable just by providing .cfi_undefined r2 + in __libc_start_main instead) + +diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile +--- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 +@@ -35,6 +35,8 @@ CFLAGS-rtld-memmove.os = $(no-special-re + CFLAGS-rtld-memchr.os = $(no-special-regs) + CFLAGS-rtld-strnlen.os = $(no-special-regs) + ++CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables ++ + ifeq ($(subdir),csu) + sysdep_routines += hp-timing + elide-routines.os += hp-timing diff --git a/glibc/patches/glibc-fedora-pt_chown.patch b/glibc/patches/glibc-fedora-pt_chown.patch new file mode 100644 index 000000000..f64f44992 --- /dev/null +++ b/glibc/patches/glibc-fedora-pt_chown.patch @@ -0,0 +1,57 @@ +From ee3d4021aaaeacff7cf2addcdaa48859fffba2aa Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 3 Feb 2011 15:45:02 +0100 +Subject: [PATCH] Replace setuid by file capabilities + +* login/programs/pt_chown.c (main): Check for valid file +descriptor instead of privileges. Be careful to drop all +capabilities when not needed. + +--- + ChangeLog | 6 ++++++ + login/programs/pt_chown.c | 14 +++++++++----- + 3 files changed, 16 insertions(+), 6 deletions(-) + +--- a/login/programs/pt_chown.c ++++ b/login/programs/pt_chown.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #ifdef HAVE_LIBCAP + # include + # include +@@ -142,7 +143,7 @@ main (int argc, char *argv[]) + uid_t uid = getuid (); + int remaining; + +- if (argc == 1 && euid == 0) ++ if (argc == 1 && fcntl (PTY_FILENO, F_GETFD) == 0) + { + #ifdef HAVE_LIBCAP + /* Drop privileges. */ +@@ -175,6 +176,13 @@ main (int argc, char *argv[]) + + /* We aren't going to be using privileges, so drop them right now. */ + setuid (uid); ++#ifdef HAVE_LIBCAP ++ cap_t caps = cap_init (); ++ if (caps == NULL) ++ error (1, errno, "cap_init"); ++ cap_set_proc (caps); ++ cap_free (caps); ++#endif + + /* Set locale via LC_ALL. */ + setlocale (LC_ALL, ""); +@@ -194,9 +202,5 @@ main (int argc, char *argv[]) + return EXIT_FAILURE; + } + +- /* Check if we are properly installed. */ +- if (euid != 0) +- error (FAIL_EXEC, 0, gettext ("needs to be installed setuid `root'")); +- + return EXIT_SUCCESS; + } diff --git a/glibc/patches/glibc-fedora-regcomp-sw11561.patch b/glibc/patches/glibc-fedora-regcomp-sw11561.patch new file mode 100644 index 000000000..0edc04f89 --- /dev/null +++ b/glibc/patches/glibc-fedora-regcomp-sw11561.patch @@ -0,0 +1,147 @@ +From c1b97d6d896b1f22fdf5d28471ef7859ec840a57 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Wed, 1 Sep 2010 17:26:15 +0200 +Subject: [PATCH] Fix handling of collating symbols in regexps + +[BZ #11561] +* posix/regcomp.c (parse_bracket_exp): When looking up collating +elements compare against the byte sequence of it, not its name. + +--- + ChangeLog | 4 +++ + posix/regcomp.c | 72 ++++++++++++++++++++---------------------------------- + 2 files changed, 31 insertions(+), 45 deletions(-) + +--- a/posix/regcomp.c ++++ b/posix/regcomp.c +@@ -2772,40 +2772,29 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + /* Local function for parse_bracket_exp used in _LIBC environement. + Seek the collating symbol entry correspondings to NAME. +- Return the index of the symbol in the SYMB_TABLE. */ ++ Return the index of the symbol in the SYMB_TABLE, ++ or -1 if not found. */ + + auto inline int32_t + __attribute ((always_inline)) +- seek_collating_symbol_entry (name, name_len) +- const unsigned char *name; +- size_t name_len; ++ seek_collating_symbol_entry (const unsigned char *name, size_t name_len) + { +- int32_t hash = elem_hash ((const char *) name, name_len); +- int32_t elem = hash % table_size; +- if (symb_table[2 * elem] != 0) +- { +- int32_t second = hash % (table_size - 2) + 1; +- +- do +- { +- /* First compare the hashing value. */ +- if (symb_table[2 * elem] == hash +- /* Compare the length of the name. */ +- && name_len == extra[symb_table[2 * elem + 1]] +- /* Compare the name. */ +- && memcmp (name, &extra[symb_table[2 * elem + 1] + 1], +- name_len) == 0) +- { +- /* Yep, this is the entry. */ +- break; +- } ++ int32_t elem; + +- /* Next entry. */ +- elem += second; +- } +- while (symb_table[2 * elem] != 0); +- } +- return elem; ++ for (elem = 0; elem < table_size; elem++) ++ if (symb_table[2 * elem] != 0) ++ { ++ int32_t idx = symb_table[2 * elem + 1]; ++ /* Skip the name of collating element name. */ ++ idx += 1 + extra[idx]; ++ if (/* Compare the length of the name. */ ++ name_len == extra[idx] ++ /* Compare the name. */ ++ && memcmp (name, &extra[idx + 1], name_len) == 0) ++ /* Yep, this is the entry. */ ++ return elem; ++ } ++ return -1; + } + + /* Local function for parse_bracket_exp used in _LIBC environment. +@@ -2814,8 +2803,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + auto inline unsigned int + __attribute ((always_inline)) +- lookup_collation_sequence_value (br_elem) +- bracket_elem_t *br_elem; ++ lookup_collation_sequence_value (bracket_elem_t *br_elem) + { + if (br_elem->type == SB_CHAR) + { +@@ -2843,7 +2831,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + int32_t elem, idx; + elem = seek_collating_symbol_entry (br_elem->opr.name, + sym_name_len); +- if (symb_table[2 * elem] != 0) ++ if (elem != -1) + { + /* We found the entry. */ + idx = symb_table[2 * elem + 1]; +@@ -2861,7 +2849,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + /* Return the collation sequence value. */ + return *(unsigned int *) (extra + idx); + } +- else if (symb_table[2 * elem] == 0 && sym_name_len == 1) ++ else if (sym_name_len == 1) + { + /* No valid character. Match it as a single byte + character. */ +@@ -2883,11 +2871,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + auto inline reg_errcode_t + __attribute ((always_inline)) +- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem) +- re_charset_t *mbcset; +- int *range_alloc; +- bitset_t sbcset; +- bracket_elem_t *start_elem, *end_elem; ++ build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc, ++ bracket_elem_t *start_elem, bracket_elem_t *end_elem) + { + unsigned int ch; + uint32_t start_collseq; +@@ -2966,25 +2951,22 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + auto inline reg_errcode_t + __attribute ((always_inline)) +- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name) +- re_charset_t *mbcset; +- int *coll_sym_alloc; +- bitset_t sbcset; +- const unsigned char *name; ++ build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset, ++ int *coll_sym_alloc, const unsigned char *name) + { + int32_t elem, idx; + size_t name_len = strlen ((const char *) name); + if (nrules != 0) + { + elem = seek_collating_symbol_entry (name, name_len); +- if (symb_table[2 * elem] != 0) ++ if (elem != -1) + { + /* We found the entry. */ + idx = symb_table[2 * elem + 1]; + /* Skip the name of collating element name. */ + idx += 1 + extra[idx]; + } +- else if (symb_table[2 * elem] == 0 && name_len == 1) ++ else if (name_len == 1) + { + /* No valid character, treat it as a normal + character. */ diff --git a/glibc/patches/glibc-fedora-streams-rh436349.patch b/glibc/patches/glibc-fedora-streams-rh436349.patch new file mode 100644 index 000000000..44b9195d1 --- /dev/null +++ b/glibc/patches/glibc-fedora-streams-rh436349.patch @@ -0,0 +1,28 @@ +This is part of commit glibc-2.3.3-1564-gd0b6ac6 + +* Fri Mar 14 2008 Jakub Jelinek 2.7.90-11 +- remove , define _XOPEN_STREAMS -1 (#436349) + +diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h +--- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600 ++++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600 +@@ -188,4 +188,7 @@ + /* Typed memory objects are not available. */ + #define _POSIX_TYPED_MEMORY_OBJECTS -1 + ++/* Streams are not available. */ ++#define _XOPEN_STREAMS -1 ++ + #endif /* bits/posix_opt.h */ +diff -Nrup a/streams/Makefile b/streams/Makefile +--- a/streams/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/streams/Makefile 2012-06-07 12:15:21.824318649 -0600 +@@ -20,7 +20,7 @@ + # + subdir := streams + +-headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h ++#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h + routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach + + include ../Rules diff --git a/glibc/patches/glibc-fedora-uname-getrlimit.patch b/glibc/patches/glibc-fedora-uname-getrlimit.patch new file mode 100644 index 000000000..86383d4cf --- /dev/null +++ b/glibc/patches/glibc-fedora-uname-getrlimit.patch @@ -0,0 +1,61 @@ +From cde99cd2b7b16a6113acb054e89d490047932a9f Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 8 Apr 2010 11:18:26 +0200 +Subject: [PATCH] Don't call uname or getrlimit in libpthread init function + +* sysdeps/unix/sysv/linux/i386/Versions: Export __uname under +GLIBC_PRIVATE. +* nptl/Versions: Export __getrlimit under GLIBC_PRIVATE. +* sysdeps/unix/sysv/linux/i386/smp.h: Call __uname instead of uname. +* nptl/nptl-init.c: Call __getrlimit instead of getrlimit. + +--- + ChangeLog | 8 ++++++++ + nptl/Versions | 1 + + nptl/nptl-init.c | 2 +- + nptl/sysdeps/unix/sysv/linux/i386/Versions | 6 ++++++ + nptl/sysdeps/unix/sysv/linux/i386/smp.h | 2 +- + 5 files changed, 17 insertions(+), 2 deletions(-) + create mode 100644 nptl/sysdeps/unix/sysv/linux/i386/Versions + +--- a/nptl/Version ++++ b/nptl/Versions +@@ -30,6 +30,7 @@ libc { + __libc_alloca_cutoff; + # Internal libc interface to libpthread + __libc_dl_error_tsd; ++ __getrlimit; + } + } + +--- a/nptl/nptl-init.c ++++ b/nptl/nptl-init.c +@@ -414,7 +414,7 @@ __pthread_initialize_minimal_internal (void) + /* Determine the default allowed stack size. This is the size used + in case the user does not specify one. */ + struct rlimit limit; +- if (getrlimit (RLIMIT_STACK, &limit) != 0 ++ if (__getrlimit (RLIMIT_STACK, &limit) != 0 + || limit.rlim_cur == RLIM_INFINITY) + /* The system limit is not usable. Use an architecture-specific + default. */ +--- a/nptl/sysdeps/unix/sysv/linux/i386/Versions ++++ b/nptl/sysdeps/unix/sysv/linux/i386/Versions +@@ -0,0 +1,6 @@ ++libc { ++ GLIBC_PRIVATE { ++ # Internal libc interface to libpthread ++ __uname; ++ } ++} +--- a/nptl/sysdeps/unix/sysv/linux/i386/smp.h ++++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h +@@ -36,7 +36,7 @@ is_smp_system (void) + char *cp; + + /* Try reading the number using `sysctl' first. */ +- if (uname (&u.uts) == 0) ++ if (__uname (&u.uts) == 0) + cp = u.uts.version; + else + { diff --git a/glibc/patches/glibc-fedora.patch b/glibc/patches/glibc-fedora.patch deleted file mode 100644 index 7b58d3ba6..000000000 --- a/glibc/patches/glibc-fedora.patch +++ /dev/null @@ -1,2395 +0,0 @@ -diff -Nrup a/ChangeLog b/ChangeLog ---- a/ChangeLog 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog 2012-06-07 12:15:21.516319798 -0600 -@@ -12178,6 +12178,11 @@ - - * sysdeps/mach/hurd/sys/param.h (DEV_BSIZE): New macro. - -+2011-09-02 Andreas Schwab -+ -+ * nscd/selinux.c (avc_create_thread): Set PR_SET_KEEPCAPS before -+ spawning AVC thread. -+ - 2011-09-08 Andreas Schwab - - * elf/dl-load.c (lose): Check for non-null L. -@@ -12440,6 +12445,11 @@ - * sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Fix cfi - directive. - -+2011-08-31 Andreas Schwab -+ -+ * include/link.h (FORCED_DYNAMIC_TLS_OFFSET) [NO_TLS_OFFSET == 0]: -+ Change to -1. -+ - 2011-08-24 David S. Miller - - * sysdeps/sparc/sparc64/strcmp.S: Rewrite. -@@ -13245,6 +13255,14 @@ - * config.make.in: Likewise. - * malloc/Makefile: Likewise. - -+2011-06-28 Andreas Schwab -+ -+ * iconvdata/gb18030.c: Update tables. -+ (BODY for FROM_LOOP): Handle non-BMP characters specially. -+ -+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr -+ to determine canonical name. -+ - 2011-06-27 Andreas Schwab - - * iconvdata/gb18030.c (BODY for TO_LOOP): Fix encoding of non-BMP -@@ -13376,6 +13394,10 @@ - - * inet/getnetgrent_r.c: Use DL_CALL_FCT in several places. - -+2011-06-21 Andreas Schwab -+ -+ * iconvdata/gb18030.c: Regenerate tables. -+ - 2011-06-20 David S. Miller - - * sysdeps/sparc/sparc32/dl-plt.h: Protect against multiple -@@ -13998,6 +14020,13 @@ - * libio/Makefile (tests): Add bug-fclose1. - * libio/bug-fclose1.c: New file. - -+2011-05-13 Andreas Schwab -+ -+ * elf/dl-load.c (is_dst): Remove parameter secure, all callers -+ changed. Move check for valid use of $ORIGIN ... -+ (_dl_dst_substitute): ... here. Reset check_for_trusted when a -+ path element is skipped. -+ - 2011-05-12 Ulrich Drepper - - [BZ #12511] -@@ -14275,13 +14304,6 @@ - * stdlib/bug-getcontext.c: New file. - * stdlib/Makefile: Add rules to build and run bug-getcontext. - --2011-04-13 Andreas Krebbel -- -- * sysdeps/s390/s390-64/utf16-utf32-z9.c: Wrap the z9-109 -- instructions into .machine "z9-109". -- * sysdeps/s390/s390-64/utf8-utf16-z9.c: Likewise. -- * sysdeps/s390/s390-64/utf8-utf32-z9.c: Likewise. -- - 2011-04-11 Andreas Krebbel - - * sysdeps/s390/s390-32/elf/start.S (_start): Skip extra zeroes -@@ -14579,6 +14601,10 @@ - $LDFLAGS and -nostdlib -nostartfiles to linking step. Change main - to _start. - -+2011-03-18 Andreas Schwab -+ -+ * elf/ldd.bash.in: Never run file directly. -+ - 2011-03-06 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object): If we are looking for the first -@@ -14795,6 +14821,12 @@ - * shadow/sgetspent.c: Check return value of __sgetspent_r instead - of errno. - -+2011-02-03 Andreas Schwab -+ -+ * login/programs/pt_chown.c (main): Check for valid file -+ descriptor instead of privileges. Be careful to drop all -+ capabilities when not needed. -+ - 2011-01-19 Ulrich Drepper - - [BZ #11724] -@@ -15482,6 +15514,19 @@ - * sysdeps/unix/sysv/linux/internal_statvfs.c (INTERNAL_STATVFS): - Mask out sign-bit copies when constructing f_fsid. - -+2010-09-27 Andreas Schwab -+ -+ [BZ #11561] -+ * posix/regcomp.c (parse_bracket_exp): When looking up collating -+ elements compare against the byte sequence of it, not its name. -+ -+ [BZ #6530] -+ * stdio-common/vfprintf.c (process_string_arg): Revert 2000-07-22 -+ change. -+ -+ * nss/nss_files/files-XXX.c (internal_getent): Declare linebuflen -+ as size_t. -+ - 2010-09-24 Petr Baudis - - * debug/stack_chk_fail_local.c: Add missing licence exception. -@@ -16274,6 +16319,17 @@ - call returning > 0 value. - * sysdeps/unix/sysv/linux/getlogin.c (getlogin): Likewise. - -+2010-07-01 Andreas Schwab -+ -+ * include/sys/resource.h (__getrlimit): Add hidden proto. -+ * sysdeps/unix/sysv/linux/i386/getrlimit.c: Add libc_hidden_weak. -+ * sysdeps/mach/hurd/getrlimit.c: Add libc_hidden_def. -+ * resource/getrlimit.c: Likewise. -+ -+2010-06-21 Andreas Schwab -+ -+ * sysdeps/i386/i686/Makefile: Don't pass -mtune to assembler. -+ - 2010-06-07 Andreas Schwab - - * dlfcn/Makefile: Remove explicit dependencies on libc.so and -@@ -16326,6 +16382,21 @@ - * hurd/hurd/fd.h (__file_name_lookup_at): Update comment. - * sysdeps/mach/hurd/linkat.c (linkat): Pass O_NOLINK in FLAGS. - -+2010-06-11 Andreas Schwab -+ -+ * elf/rtld.c (_dl_starting_up): Always define. -+ (dl_main): Always set _dl_starting_up. -+ * elf/dl-support.c (_dl_starting_up): Always define. -+ * elf/dl-init.c (_dl_init): Always clear _dl_starting_up. -+ -+2010-06-10 Andreas Schwab -+ -+ * sysdeps/unix/sysv/linux/i386/Versions: Export __uname under -+ GLIBC_PRIVATE. -+ * nptl/Versions: Export __getrlimit under GLIBC_PRIVATE. -+ * sysdeps/unix/sysv/linux/i386/smp.h: Call __uname instead of uname. -+ * nptl/nptl-init.c: Call __getrlimit instead of getrlimit. -+ - 2010-05-28 Luis Machado - - * sysdeps/powerpc/powerpc32/power7/memcpy.S: Exchange srdi for srwi. -diff -Nrup a/ChangeLog.15 b/ChangeLog.15 ---- a/ChangeLog.15 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.15 2012-06-07 12:15:21.518319790 -0600 -@@ -477,6 +477,14 @@ - - 2004-11-26 Jakub Jelinek - -+ * posix/Makefile (generated: Add getconf.speclist. -+ ($(inst_libexecdir)/getconf): Use getconf.speclist instead of -+ getconf output. -+ ($(objpfx)getconf.speclist): New rule. -+ * posix/getconf.speclist.h: New file. -+ -+2004-11-26 Jakub Jelinek -+ - * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. - - 2004-11-26 Kaz Kojima -@@ -3182,6 +3190,17 @@ - before return type. - * locale/localename.c (__current_locale_name): Likewise. - -+2004-08-31 Jakub Jelinek -+ -+ * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it -+ before arguments to add_dir and pass to parse_conf_include. -+ (parse_conf_include): Add prefix argument, pass it down to -+ parse_conf. -+ (main): Call arch_startup. Adjust parse_conf caller. -+ Call add_arch_dirs. -+ * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. -+ * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. -+ - 2004-08-30 Roland McGrath - - * scripts/extract-abilist.awk: If `lastversion' variable defined, omit -diff -Nrup a/ChangeLog.16 b/ChangeLog.16 ---- a/ChangeLog.16 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.16 2012-06-07 12:15:21.523319772 -0600 -@@ -2042,6 +2042,9 @@ - (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT - followed by __THROW. - -+ * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If -+ file == NULL, use __futimes unconditionally. -+ - 2006-02-02 Ulrich Drepper - - * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] -@@ -2101,6 +2104,11 @@ - * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. - * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. - -+2006-01-30 Jakub Jelinek -+ -+ * include/bits/stdlib-ldbl.h: New file. -+ * include/bits/wchar-ldbl.h: New file. -+ - 2006-01-19 Thomas Schwinge - - * libio/genops.c: Include . -diff -Nrup a/ChangeLog.17 b/ChangeLog.17 ---- a/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 -@@ -256,6 +256,12 @@ - - * Makerules (libc-abis): Fix search for libc-abis in add-ons. - -+2010-04-06 Ulrich Drepper -+ -+ * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global -+ scope to RFC 1918 addresses. -+ * posix/gai.conf: Document difference from RFC 3484. -+ - 2010-04-05 Thomas Schwinge - - * sysdeps/gnu/unwind-resume.c: New, moved from nptl/sysdeps/pthread/. -@@ -2953,6 +2959,11 @@ d2009-10-30 Ulrich Drepper -+ -+ * Makeconfig (ASFLAGS): Append $(sysdep-ASFLAGS). -+ * sysdeps/i386/Makefile (sysdep-ASFLAGS): Add -U__i686. -+ - 2009-07-21 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove -@@ -11818,6 +11829,10 @@ d2009-10-30 Ulrich Drepper -+ -+ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. -+ - 2007-04-16 Ulrich Drepper - - [BZ #4364] -@@ -13075,6 +13090,15 @@ d2009-10-30 Ulrich Drepper -+ -+ * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h -+ if IFA_MAX is not defined. -+ (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not -+ defined. -+ * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h -+ instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. -+ - 2006-12-09 Ulrich Drepper - - [BZ #3632] -diff -Nrup a/Makeconfig b/Makeconfig ---- a/Makeconfig 2012-06-05 07:42:49.000000000 -0600 -+++ b/Makeconfig 2012-06-07 12:15:21.568319604 -0600 -@@ -753,12 +753,12 @@ endif - # The assembler can generate debug information too. - ifndef ASFLAGS - ifeq ($(have-cpp-asm-debuginfo),yes) --ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) -+ASFLAGS = $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) - else --ASFLAGS := -+ASFLAGS = - endif - endif --ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) -+ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) $(sysdep-ASFLAGS) - - ifndef BUILD_CC - BUILD_CC = $(CC) -diff -Nrup a/NEWS b/NEWS ---- a/NEWS 2012-06-05 07:42:49.000000000 -0600 -+++ b/NEWS 2012-06-07 12:15:21.569319601 -0600 -@@ -196,16 +196,6 @@ Version 2.14 - 12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792, - 12795, 12811, 12813, 12814, 12841 - --* The RPC implementation in libc is obsoleted. Old programs keep working -- but new programs cannot be linked with the routines in libc anymore. -- Programs in need of RPC functionality must be linked against TI-RPC. -- The TI-RPC implementation is IPv6 enabled and there are other benefits. -- -- Visible changes of this change include (obviously) the inability to link -- programs using RPC functions without referencing the TI-RPC library and the -- removal of the RPC headers from the glibc headers. -- Implemented by Ulrich Drepper. -- - * New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at, - syncfs, setns, sendmmsg - -diff -Nrup a/csu/elf-init.c b/csu/elf-init.c ---- a/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 -@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, - extern void (*__fini_array_start []) (void) attribute_hidden; - extern void (*__fini_array_end []) (void) attribute_hidden; - -+#if defined HAVE_VISIBILITY_ATTRIBUTE \ -+ && (defined SHARED || defined LIBC_NONSHARED) -+# define hidden_undef_2(x) #x -+# define hidden_undef_1(x) hidden_undef_2 (x) -+# define hidden_undef(x) \ -+ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ -+ __asm (".hidden " #x); -+#else -+# define hidden_undef(x) -+#endif -+ -+hidden_undef (__preinit_array_start) -+hidden_undef (__preinit_array_end) -+hidden_undef (__init_array_start) -+hidden_undef (__init_array_end) -+hidden_undef (__fini_array_start) -+hidden_undef (__fini_array_end) - - /* These function symbols are provided for the .init/.fini section entry - points automagically by the linker. */ -diff -Nrup a/debug/tst-chk1.c b/debug/tst-chk1.c ---- a/debug/tst-chk1.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/debug/tst-chk1.c 2012-06-07 12:15:21.571319593 -0600 -@@ -16,6 +16,9 @@ - License along with the GNU C Library; if not, see - . */ - -+/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ -+#define __noreturn__ -+ - #include - #include - #include -@@ -244,7 +247,7 @@ do_test (void) - if (memcmp (a.buf1, "aabcdabcjj", 10)) - FAIL (); - --#if __USE_FORTIFY_LEVEL < 2 -+#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) - /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 - and sufficient GCC support, as the string operations overflow - from a.buf1 into a.buf2. */ -@@ -359,7 +362,7 @@ do_test (void) - memset (a.buf1 + 9, 'j', l0 + 2); - CHK_FAIL_END - --# if __USE_FORTIFY_LEVEL >= 2 -+# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) - # define O 0 - # else - # define O 1 -diff -Nrup a/elf/Makefile b/elf/Makefile ---- a/elf/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/Makefile 2012-06-07 12:15:21.572319589 -0600 -@@ -50,6 +50,7 @@ include ../Makeconfig - ifeq ($(unwind-find-fde),yes) - routines += unwind-dw2-fde-glibc - shared-only-routines += unwind-dw2-fde-glibc -+CFLAGS-unwind-dw2-fde-glibc.c += -fno-strict-aliasing - endif - - before-compile = $(objpfx)trusted-dirs.h -diff -Nrup a/elf/dl-init.c b/elf/dl-init.c ---- a/elf/dl-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/dl-init.c 2012-06-07 12:15:21.573319585 -0600 -@@ -23,11 +23,9 @@ - /* Type of the initializer. */ - typedef void (*init_t) (int, char **, char **); - --#ifndef HAVE_INLINED_SYSCALLS - /* Flag, nonzero during startup phase. */ - extern int _dl_starting_up; - extern int _dl_starting_up_internal attribute_hidden; --#endif - - - static void -@@ -132,9 +130,7 @@ _dl_init (struct link_map *main_map, int - while (i-- > 0) - call_init (main_map->l_initfini[i], argc, argv, env); - --#ifndef HAVE_INLINED_SYSCALLS - /* Finished starting up. */ - INTUSE(_dl_starting_up) = 0; --#endif - } - INTDEF (_dl_init) -diff -Nrup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/dl-load.c 2012-06-07 12:15:21.575319577 -0600 -@@ -249,8 +249,7 @@ is_trusted_path_normalize (const char *p - - - static size_t --is_dst (const char *start, const char *name, const char *str, -- int is_path, int secure) -+is_dst (const char *start, const char *name, const char *str, int is_path) - { - size_t len; - bool is_curly = false; -@@ -279,12 +278,6 @@ is_dst (const char *start, const char *n - && (!is_path || name[len] != ':')) - return 0; - -- if (__builtin_expect (secure, 0) -- && ((name[len] != '\0' && name[len] != '/' -- && (!is_path || name[len] != ':')) -- || (name != start + 1 && (!is_path || name[-2] != ':')))) -- return 0; -- - return len; - } - -@@ -299,13 +292,10 @@ _dl_dst_count (const char *name, int is_ - { - size_t len; - -- /* $ORIGIN is not expanded for SUID/GUID programs (except if it -- is $ORIGIN alone) and it must always appear first in path. */ - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0 -- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 -- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 -+ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 -+ || (len = is_dst (start, name, "LIB", is_path)) != 0) - ++cnt; - - name = strchr (name + len, '$'); -@@ -338,9 +328,16 @@ _dl_dst_substitute (struct link_map *l, - size_t len; - - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) - { -+ /* For SUID/GUID programs $ORIGIN must always appear -+ first in a path element. */ -+ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) -+ && ((name[len] != '\0' && name[len] != '/' -+ && (!is_path || name[len] != ':')) -+ || (name != start + 1 && (!is_path || name[-2] != ':')))) -+ repl = (const char *) -1; -+ else - #ifndef SHARED - if (l == NULL) - repl = _dl_get_origin (); -@@ -351,9 +348,9 @@ _dl_dst_substitute (struct link_map *l, - check_for_trusted = (INTUSE(__libc_enable_secure) - && l->l_type == lt_executable); - } -- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) - repl = GLRO(dl_platform); -- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) - repl = DL_DST_LIB; - - if (repl != NULL && repl != (const char *) -1) -@@ -373,6 +370,7 @@ _dl_dst_substitute (struct link_map *l, - element, but keep an empty element at the end. */ - if (wp == result && is_path && *name == ':' && name[1] != '\0') - ++name; -+ check_for_trusted = false; - } - else - /* No DST we recognize. */ -diff -Nrup a/elf/dl-support.c b/elf/dl-support.c ---- a/elf/dl-support.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/dl-support.c 2012-06-07 12:15:21.576319573 -0600 -@@ -81,10 +81,8 @@ unsigned long long _dl_load_adds; - create a fake scope containing nothing. */ - struct r_scope_elem _dl_initial_searchlist; - --#ifndef HAVE_INLINED_SYSCALLS - /* Nonzero during startup. */ - int _dl_starting_up = 1; --#endif - - /* Random data provided by the kernel. */ - void *_dl_random; -diff -Nrup a/elf/ldconfig.c b/elf/ldconfig.c ---- a/elf/ldconfig.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/ldconfig.c 2012-06-07 12:15:21.577319570 -0600 -@@ -1033,17 +1033,19 @@ search_dirs (void) - - - static void parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern); -+ const char *prefix, bool do_chroot, -+ const char *pattern); - - /* Parse configuration file. */ - static void --parse_conf (const char *filename, bool do_chroot) -+parse_conf (const char *filename, const char *prefix, bool do_chroot) - { - FILE *file = NULL; - char *line = NULL; - const char *canon; - size_t len = 0; - unsigned int lineno; -+ size_t prefix_len = prefix ? strlen (prefix) : 0; - - if (do_chroot && opt_chroot) - { -@@ -1106,7 +1108,14 @@ Warning: ignoring configuration file tha - cp += 8; - while ((dir = strsep (&cp, " \t")) != NULL) - if (dir[0] != '\0') -- parse_conf_include (filename, lineno, do_chroot, dir); -+ parse_conf_include (filename, lineno, prefix, do_chroot, dir); -+ } -+ else if (prefix != NULL) -+ { -+ size_t cp_len = strlen (cp); -+ char new_cp [prefix_len + cp_len + 1]; -+ memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); -+ add_dir (new_cp); - } - else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) - { -@@ -1169,7 +1178,7 @@ Warning: ignoring configuration file tha - config files to read. */ - static void - parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern) -+ const char *prefix, bool do_chroot, const char *pattern) - { - if (opt_chroot && pattern[0] != '/') - error (EXIT_FAILURE, 0, -@@ -1201,7 +1210,7 @@ parse_conf_include (const char *config_f - { - case 0: - for (size_t i = 0; i < gl.gl_pathc; ++i) -- parse_conf (gl.gl_pathv[i], false); -+ parse_conf (gl.gl_pathv[i], prefix, false); - globfree64 (&gl); - break; - -@@ -1244,6 +1253,8 @@ main (int argc, char **argv) - /* Set the text message domain. */ - textdomain (_libc_intl_domainname); - -+ arch_startup (argc, argv); -+ - /* Parse and process arguments. */ - int remaining; - argp_parse (&argp, argc, argv, 0, &remaining, NULL); -@@ -1353,12 +1364,14 @@ main (int argc, char **argv) - - if (!opt_only_cline) - { -- parse_conf (config_file, true); -+ parse_conf (config_file, NULL, true); - - /* Always add the standard search paths. */ - add_system_dir (SLIBDIR); - if (strcmp (SLIBDIR, LIBDIR)) - add_system_dir (LIBDIR); -+ -+ add_arch_dirs (config_file); - } - - const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; -diff -Nrup a/elf/ldd.bash.in b/elf/ldd.bash.in ---- a/elf/ldd.bash.in 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/ldd.bash.in 2012-06-07 12:15:21.577319570 -0600 -@@ -166,18 +166,6 @@ warning: you do not have execution permi - fi - done - case $ret in -- 0) -- # If the program exits with exit code 5, it means the process has been -- # invoked with __libc_enable_secure. Fall back to running it through -- # the dynamic linker. -- try_trace "$file" -- rc=$? -- if [ $rc = 5 ]; then -- try_trace "$RTLD" "$file" -- rc=$? -- fi -- [ $rc = 0 ] || result=1 -- ;; - 1) - # This can be a non-ELF binary or no binary at all. - nonelf "$file" || { -@@ -185,7 +173,7 @@ warning: you do not have execution permi - result=1 - } - ;; -- 2) -+ 0|2) - try_trace "$RTLD" "$file" || result=1 - ;; - *) -diff -Nrup a/elf/rtld.c b/elf/rtld.c ---- a/elf/rtld.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/rtld.c 2012-06-07 12:15:21.579319564 -0600 -@@ -106,7 +106,6 @@ static struct audit_list - struct audit_list *next; - } *audit_list; - --#ifndef HAVE_INLINED_SYSCALLS - /* Set nonzero during loading and initialization of executable and - libraries, cleared before the executable's entry point runs. This - must not be initialized to nonzero, because the unused dynamic -@@ -116,7 +115,6 @@ static struct audit_list - never be called. */ - int _dl_starting_up = 0; - INTVARDEF(_dl_starting_up) --#endif - - /* This is the structure which defines all variables global to ld.so - (except those which cannot be added for some reason). */ -@@ -929,10 +927,8 @@ dl_main (const ElfW(Phdr) *phdr, - /* Process the environment variable which control the behaviour. */ - process_envvars (&mode); - --#ifndef HAVE_INLINED_SYSCALLS - /* Set up a flag which tells we are just starting. */ - INTUSE(_dl_starting_up) = 1; --#endif - - if (*user_entry == (ElfW(Addr)) ENTRY_POINT) - { -@@ -1408,7 +1404,9 @@ of this helper program; chances are you - char *copy = malloc (len); - if (copy == NULL) - _dl_fatal_printf ("out of memory\n"); -- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len); -+ l->l_libname->name = memcpy (copy, dsoname, len); -+ if (GLRO(dl_debug_mask)) -+ l->l_name = copy; - } - - /* Add the vDSO to the object list. */ -@@ -2343,7 +2341,6 @@ ERROR: ld.so: object '%s' cannot be load - - /* Make sure no new search directories have been added. */ - assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); -- - if (! prelinked && rtld_multiple_ref) - { - /* There was an explicit ref to the dynamic linker as a shared lib. -diff -Nrup a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h ---- a/include/bits/stdlib-ldbl.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/include/bits/stdlib-ldbl.h 2012-06-07 12:15:21.580319560 -0600 -@@ -0,0 +1 @@ -+#include -diff -Nrup a/include/bits/wchar-ldbl.h b/include/bits/wchar-ldbl.h ---- a/include/bits/wchar-ldbl.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/include/bits/wchar-ldbl.h 2012-06-07 12:15:21.580319560 -0600 -@@ -0,0 +1 @@ -+#include -diff -Nrup a/include/link.h b/include/link.h ---- a/include/link.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/include/link.h 2012-06-07 12:15:21.581319556 -0600 -@@ -289,7 +289,7 @@ struct link_map - #endif - #ifndef FORCED_DYNAMIC_TLS_OFFSET - # if NO_TLS_OFFSET == 0 --# define FORCED_DYNAMIC_TLS_OFFSET 1 -+# define FORCED_DYNAMIC_TLS_OFFSET -1 - # elif NO_TLS_OFFSET == -1 - # define FORCED_DYNAMIC_TLS_OFFSET -2 - # else -diff -Nrup a/include/sys/resource.h b/include/sys/resource.h ---- a/include/sys/resource.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/include/sys/resource.h 2012-06-07 12:15:21.582319552 -0600 -@@ -14,5 +14,6 @@ extern int __getrusage (enum __rusage_wh - - extern int __setrlimit (enum __rlimit_resource __resource, - const struct rlimit *__rlimits); -+libc_hidden_proto (__getrlimit) - #endif - #endif -diff -Nrup a/inet/Makefile b/inet/Makefile ---- a/inet/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/inet/Makefile 2012-06-07 12:15:21.582319552 -0600 -@@ -54,6 +54,8 @@ tests := htontest test_ifindex tst-ntoa - - include ../Rules - -+CFLAGS-tst-inet6_rth.c += -fno-strict-aliasing -+ - ifeq ($(have-thread-library),yes) - - CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions -diff -Nrup a/intl/locale.alias b/intl/locale.alias ---- a/intl/locale.alias 2012-06-05 07:42:49.000000000 -0600 -+++ b/intl/locale.alias 2012-06-07 12:15:21.583319548 -0600 -@@ -56,8 +56,6 @@ korean ko_KR.eucKR - korean.euc ko_KR.eucKR - ko_KR ko_KR.eucKR - lithuanian lt_LT.ISO-8859-13 --no_NO nb_NO.ISO-8859-1 --no_NO.ISO-8859-1 nb_NO.ISO-8859-1 - norwegian nb_NO.ISO-8859-1 - nynorsk nn_NO.ISO-8859-1 - polish pl_PL.ISO-8859-2 -diff -Nrup a/libio/stdio.h b/libio/stdio.h ---- a/libio/stdio.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/libio/stdio.h 2012-06-07 12:15:21.584319544 -0600 -@@ -168,10 +168,12 @@ typedef _G_fpos64_t fpos64_t; - extern struct _IO_FILE *stdin; /* Standard input stream. */ - extern struct _IO_FILE *stdout; /* Standard output stream. */ - extern struct _IO_FILE *stderr; /* Standard error output stream. */ -+#ifdef __STDC__ - /* C89/C99 say they're macros. Make them happy. */ - #define stdin stdin - #define stdout stdout - #define stderr stderr -+#endif - - __BEGIN_NAMESPACE_STD - /* Remove file FILENAME. */ -diff -Nrup a/locale/iso-4217.def b/locale/iso-4217.def ---- a/locale/iso-4217.def 2012-06-05 07:42:49.000000000 -0600 -+++ b/locale/iso-4217.def 2012-06-07 12:15:21.584319544 -0600 -@@ -8,6 +8,7 @@ - * - * !!! The list has to be sorted !!! - */ -+DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ - DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ - DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ - DEFINE_INT_CURR("ALL") /* Albanian Lek */ -@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram - DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ - DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ - DEFINE_INT_CURR("ARS") /* Argentine Peso */ -+DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ - DEFINE_INT_CURR("AUD") /* Australian Dollar */ - DEFINE_INT_CURR("AWG") /* Aruba Guilder */ - DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ - DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ - DEFINE_INT_CURR("BBD") /* Barbados Dollar */ - DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ -+DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ - DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ - DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ - DEFINE_INT_CURR("BIF") /* Burundi Franc */ -@@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * - DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ - DEFINE_INT_CURR("CYP") /* Cypriot Pound */ - DEFINE_INT_CURR("CZK") /* Czech Koruna */ -+DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ - DEFINE_INT_CURR("DJF") /* Djibouti Franc */ - DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ - DEFINE_INT_CURR("DOP") /* Dominican Republic */ -@@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina - DEFINE_INT_CURR("EEK") /* Estonian Kroon */ - DEFINE_INT_CURR("EGP") /* Egyptian Pound */ - DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ -+DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ - DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ - DEFINE_INT_CURR("EUR") /* European Union Euro */ -+DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ - DEFINE_INT_CURR("FJD") /* Fiji Dollar */ - DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ -+DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ - DEFINE_INT_CURR("GBP") /* British Pound */ - DEFINE_INT_CURR("GEL") /* Georgia Lari */ - DEFINE_INT_CURR("GHC") /* Ghana Cedi */ - DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ - DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ - DEFINE_INT_CURR("GNF") /* Guinea Franc */ -+DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ - DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ - DEFINE_INT_CURR("GYD") /* Guyana Dollar */ - DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ -@@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna - DEFINE_INT_CURR("HTG") /* Haiti Gourde */ - DEFINE_INT_CURR("HUF") /* Hungarian Forint */ - DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ -+DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ - DEFINE_INT_CURR("ILS") /* Israeli Shekel */ - DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ - DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ - DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ - DEFINE_INT_CURR("IRR") /* Iranian Rial */ - DEFINE_INT_CURR("ISK") /* Iceland Krona */ -+DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ - DEFINE_INT_CURR("JEP") /* Jersey Pound */ - DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ - DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ -@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru - DEFINE_INT_CURR("LRD") /* Liberian Dollar */ - DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ - DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ -+DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ - DEFINE_INT_CURR("LVL") /* Latvia Lat */ - DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ - DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ -@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me - DEFINE_INT_CURR("NAD") /* Namibia Dollar */ - DEFINE_INT_CURR("NGN") /* Nigeria Naira */ - DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ -+DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ - DEFINE_INT_CURR("NOK") /* Norwegian Krone */ - DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ - DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ -@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui - DEFINE_INT_CURR("PHP") /* Philippines Peso */ - DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ - DEFINE_INT_CURR("PLN") /* Polish Zloty */ -+DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ - DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ - DEFINE_INT_CURR("QAR") /* Qatar Rial */ - DEFINE_INT_CURR("ROL") /* Romanian Leu */ -diff -Nrup a/locale/programs/locarchive.c b/locale/programs/locarchive.c ---- a/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 -@@ -252,9 +252,9 @@ oldlocrecentcmp (const void *a, const vo - /* forward decls for below */ - static uint32_t add_locale (struct locarhandle *ah, const char *name, - locale_data_t data, bool replace); --static void add_alias (struct locarhandle *ah, const char *alias, -- bool replace, const char *oldname, -- uint32_t *locrec_offset_p); -+void add_alias (struct locarhandle *ah, const char *alias, -+ bool replace, const char *oldname, -+ uint32_t *locrec_offset_p); - - - static bool -@@ -635,7 +635,7 @@ close_archive (struct locarhandle *ah) - #include "../../intl/explodename.c" - #include "../../intl/l10nflist.c" - --static struct namehashent * -+struct namehashent * - insert_name (struct locarhandle *ah, - const char *name, size_t name_len, bool replace) - { -@@ -693,7 +693,7 @@ insert_name (struct locarhandle *ah, - return &namehashtab[idx]; - } - --static void -+void - add_alias (struct locarhandle *ah, const char *alias, bool replace, - const char *oldname, uint32_t *locrec_offset_p) - { -diff -Nrup a/localedata/ChangeLog b/localedata/ChangeLog ---- a/localedata/ChangeLog 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/ChangeLog 2012-06-07 12:15:21.683319174 -0600 -@@ -181,6 +181,14 @@ - * tests-mbwc/tst_funcs.h (TST_DECL_VARS, TST_HEAD_LOCALE): - Remove unused variable. - -+2011-06-28 Andreas Schwab -+ -+ * charmaps/GB18030: Correct some entries. -+ -+2011-06-21 Andreas Schwab -+ -+ * charmaps/GB18030: Readd lost characters. -+ - 2011-05-21 Ulrich Drepper - - [BZ #12788] -diff -Nrup a/localedata/Makefile b/localedata/Makefile ---- a/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 -@@ -211,6 +211,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo - echo -n '...'; \ - input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ - $(LOCALEDEF) --alias-file=../intl/locale.alias \ -+ --no-archive \ - -i locales/$$input -c -f charmaps/$$charset \ - $(addprefix --prefix=,$(install_root)) $$locale; \ - echo ' done'; \ -diff -Nrup a/localedata/SUPPORTED b/localedata/SUPPORTED ---- a/localedata/SUPPORTED 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/SUPPORTED 2012-06-07 12:15:21.805318719 -0600 -@@ -88,6 +88,7 @@ cy_GB.UTF-8/UTF-8 \ - cy_GB/ISO-8859-14 \ - da_DK.UTF-8/UTF-8 \ - da_DK/ISO-8859-1 \ -+da_DK.ISO-8859-15/ISO-8859-15 \ - de_AT.UTF-8/UTF-8 \ - de_AT/ISO-8859-1 \ - de_AT@euro/ISO-8859-15 \ -@@ -119,6 +120,7 @@ en_DK.UTF-8/UTF-8 \ - en_DK/ISO-8859-1 \ - en_GB.UTF-8/UTF-8 \ - en_GB/ISO-8859-1 \ -+en_GB.ISO-8859-15/ISO-8859-15 \ - en_HK.UTF-8/UTF-8 \ - en_HK/ISO-8859-1 \ - en_IE.UTF-8/UTF-8 \ -@@ -134,6 +136,7 @@ en_SG.UTF-8/UTF-8 \ - en_SG/ISO-8859-1 \ - en_US.UTF-8/UTF-8 \ - en_US/ISO-8859-1 \ -+en_US.ISO-8859-15/ISO-8859-15 \ - en_ZA.UTF-8/UTF-8 \ - en_ZA/ISO-8859-1 \ - en_ZM/UTF-8 \ -@@ -317,6 +320,8 @@ nl_NL/ISO-8859-1 \ - nl_NL@euro/ISO-8859-15 \ - nn_NO.UTF-8/UTF-8 \ - nn_NO/ISO-8859-1 \ -+no_NO.UTF-8/UTF-8 \ -+no_NO/ISO-8859-1 \ - nr_ZA/UTF-8 \ - nso_ZA/UTF-8 \ - oc_FR.UTF-8/UTF-8 \ -@@ -378,6 +383,7 @@ sv_FI/ISO-8859-1 \ - sv_FI@euro/ISO-8859-15 \ - sv_SE.UTF-8/UTF-8 \ - sv_SE/ISO-8859-1 \ -+sv_SE.ISO-8859-15/ISO-8859-15 \ - sw_KE/UTF-8 \ - sw_TZ/UTF-8 \ - ta_IN/UTF-8 \ -diff -Nrup a/localedata/locales/cy_GB b/localedata/locales/cy_GB ---- a/localedata/locales/cy_GB 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/locales/cy_GB 2012-06-07 12:15:21.805318719 -0600 -@@ -248,9 +248,9 @@ mon "" - d_fmt "" - t_fmt "" --am_pm "";"" -+am_pm "";"" - t_fmt_ampm "" --date_fmt "/ -+date_fmt "/ - / - " - first_workday 2 -diff -Nrup a/localedata/locales/en_GB b/localedata/locales/en_GB ---- a/localedata/locales/en_GB 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/locales/en_GB 2012-06-07 12:15:21.806318715 -0600 -@@ -116,7 +116,7 @@ mon "" - d_fmt "" - t_fmt "" --am_pm "";"" -+am_pm "";"" - t_fmt_ampm "" - date_fmt "/ - / -diff -Nrup a/localedata/locales/no_NO b/localedata/locales/no_NO ---- a/localedata/locales/no_NO 1969-12-31 17:00:00.000000000 -0700 -+++ b/localedata/locales/no_NO 2012-06-07 12:15:21.806318715 -0600 -@@ -0,0 +1,69 @@ -+escape_char / -+comment_char % -+ -+% Norwegian language locale for Norway -+% Source: Norsk Standardiseringsforbund -+% Address: University Library, -+% Drammensveien 41, N-9242 Oslo, Norge -+% Contact: Kolbjoern Aamboe -+% Tel: +47 - 22859109 -+% Fax: +47 - 22434497 -+% Email: kolbjorn.aambo@usit.uio.no -+% Language: no -+% Territory: NO -+% Revision: 4.3 -+% Date: 1996-10-15 -+% Application: general -+% Users: general -+% Repertoiremap: mnemonic.ds -+% Charset: ISO-8859-1 -+% Distribution and use is free, also -+% for commercial purposes. -+ -+LC_IDENTIFICATION -+copy "nb_NO" -+END LC_IDENTIFICATION -+ -+LC_COLLATE -+copy "nb_NO" -+END LC_COLLATE -+ -+LC_CTYPE -+copy "nb_NO" -+END LC_CTYPE -+ -+LC_MONETARY -+copy "nb_NO" -+END LC_MONETARY -+ -+LC_NUMERIC -+copy "nb_NO" -+END LC_NUMERIC -+ -+LC_TIME -+copy "nb_NO" -+END LC_TIME -+ -+LC_MESSAGES -+copy "nb_NO" -+END LC_MESSAGES -+ -+LC_PAPER -+copy "nb_NO" -+END LC_PAPER -+ -+LC_TELEPHONE -+copy "nb_NO" -+END LC_TELEPHONE -+ -+LC_MEASUREMENT -+copy "nb_NO" -+END LC_MEASUREMENT -+ -+LC_NAME -+copy "nb_NO" -+END LC_NAME -+ -+LC_ADDRESS -+copy "nb_NO" -+END LC_ADDRESS -diff -Nrup a/localedata/locales/zh_TW b/localedata/locales/zh_TW ---- a/localedata/locales/zh_TW 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/locales/zh_TW 2012-06-07 12:15:21.807318711 -0600 -@@ -1,7 +1,7 @@ - comment_char % - escape_char / - % --% Chinese language locale for Taiwan R.O.C. -+% Chinese language locale for Taiwan - % charmap: BIG5-CP950 - % - % Original Author: -@@ -17,7 +17,7 @@ escape_char / - % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf - - LC_IDENTIFICATION --title "Chinese locale for Taiwan R.O.C." -+title "Chinese locale for Taiwan" - source "" - address "" - contact "" -@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" - tel "" - fax "" - language "Chinese" --territory "Taiwan R.O.C." -+territory "Taiwan" - revision "0.2" - date "2000-08-02" - % -diff -Nrup a/login/programs/pt_chown.c b/login/programs/pt_chown.c ---- a/login/programs/pt_chown.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/login/programs/pt_chown.c 2012-06-07 12:15:21.807318711 -0600 -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - #ifdef HAVE_LIBCAP - # include - # include -@@ -142,7 +143,7 @@ main (int argc, char *argv[]) - uid_t uid = getuid (); - int remaining; - -- if (argc == 1 && euid == 0) -+ if (argc == 1 && fcntl (PTY_FILENO, F_GETFD) == 0) - { - #ifdef HAVE_LIBCAP - /* Drop privileges. */ -@@ -175,6 +176,13 @@ main (int argc, char *argv[]) - - /* We aren't going to be using privileges, so drop them right now. */ - setuid (uid); -+#ifdef HAVE_LIBCAP -+ cap_t caps = cap_init (); -+ if (caps == NULL) -+ error (1, errno, "cap_init"); -+ cap_set_proc (caps); -+ cap_free (caps); -+#endif - - /* Set locale via LC_ALL. */ - setlocale (LC_ALL, ""); -@@ -194,9 +202,5 @@ main (int argc, char *argv[]) - return EXIT_FAILURE; - } - -- /* Check if we are properly installed. */ -- if (euid != 0) -- error (FAIL_EXEC, 0, gettext ("needs to be installed setuid `root'")); -- - return EXIT_SUCCESS; - } -diff -Nrup a/manual/libc.texinfo b/manual/libc.texinfo ---- a/manual/libc.texinfo 2012-06-05 07:42:49.000000000 -0600 -+++ b/manual/libc.texinfo 2012-06-07 12:15:21.808318708 -0600 -@@ -7,7 +7,7 @@ - @include macros.texi - - @comment Tell install-info what to do. --@dircategory Software libraries -+@dircategory Libraries - @direntry - * Libc: (libc). C library. - @end direntry -diff -Nrup a/misc/sys/cdefs.h b/misc/sys/cdefs.h ---- a/misc/sys/cdefs.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/misc/sys/cdefs.h 2012-06-07 12:15:21.808318708 -0600 -@@ -142,7 +142,10 @@ - #define __bos0(ptr) __builtin_object_size (ptr, 0) - #define __fortify_function __extern_always_inline __attribute_artificial__ - --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __warndecl(name, msg) \ - extern void name (void) __attribute__((__warning__ (msg))) - # define __warnattr(msg) __attribute__((__warning__ (msg))) -@@ -320,7 +323,10 @@ - - /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. */ --#if !defined __cplusplus || __GNUC_PREREQ (4,3) -+#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # if defined __GNUC_STDC_INLINE__ || defined __cplusplus - # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) - # define __extern_always_inline \ -@@ -333,7 +339,10 @@ - - /* GCC 4.3 and above allow passing all anonymous arguments of an - __extern_always_inline function to some other vararg function. */ --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __va_arg_pack() __builtin_va_arg_pack () - # define __va_arg_pack_len() __builtin_va_arg_pack_len () - #endif -diff -Nrup a/nis/Makefile b/nis/Makefile ---- a/nis/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nis/Makefile 2012-06-07 12:15:21.810318702 -0600 -@@ -71,6 +71,8 @@ libnss_nisplus-inhibit-o = $(filter-out - - include ../Rules - -+CFLAGS-nis_findserv.c += -fno-strict-aliasing -+CFLAGS-ypclnt.c += -fno-strict-aliasing - - $(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version) - $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \ -diff -Nrup a/nis/nss b/nis/nss ---- a/nis/nss 2012-06-05 07:42:49.000000000 -0600 -+++ b/nis/nss 2012-06-07 12:15:21.811318698 -0600 -@@ -25,7 +25,7 @@ - # memory with every getXXent() call. Otherwise each getXXent() call - # might result into a network communication with the server to get - # the next entry. --#SETENT_BATCH_READ=TRUE -+SETENT_BATCH_READ=TRUE - # - # ADJUNCT_AS_SHADOW - # If set to TRUE, the passwd routines in the NIS NSS module will not -diff -Nrup a/nptl/ChangeLog b/nptl/ChangeLog ---- a/nptl/ChangeLog 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/ChangeLog 2012-06-07 12:15:21.813318690 -0600 -@@ -5562,6 +5562,11 @@ - Move definition inside libpthread, libc, librt check. Provide - definition for rtld. - -+2004-09-02 Jakub Jelinek -+ -+ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are -+ waiters, awake all waiters on the associated mutex. -+ - 2004-09-02 Ulrich Drepper - - * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. -@@ -7636,6 +7641,11 @@ - - * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). - -+2003-07-22 Jakub Jelinek -+ -+ * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h -+ if __need_struct_pthread_size, instead define lll_lock_t. -+ - 2003-07-25 Jakub Jelinek - - * tst-cancel17.c (do_test): Check if aio_cancel failed. -diff -Nrup a/nptl/Makefile b/nptl/Makefile ---- a/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 -@@ -529,15 +529,19 @@ $(addprefix $(objpfx), \ - $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so --# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, -+# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, - # since otherwise libpthread.so comes before libc.so when linking. - $(addprefix $(objpfx), $(tests-reverse)): \ -- $(objpfx)../libc.so $(objpfx)libpthread.so \ -+ $(objpfx)linklibc.so $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)../libc.so: $(common-objpfx)libc.so ; - $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a - - $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so -+ -+$(objpfx)linklibc.so: $(common-objpfx)libc.so -+ ln -s ../libc.so $@ -+generated += libclink.so - else - $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a - endif -diff -Nrup a/nptl/Versions b/nptl/Versions ---- a/nptl/Versions 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/Versions 2012-06-07 12:15:21.817318674 -0600 -@@ -30,6 +30,7 @@ libc { - __libc_alloca_cutoff; - # Internal libc interface to libpthread - __libc_dl_error_tsd; -+ __getrlimit; - } - } - -diff -Nrup a/nptl/nptl-init.c b/nptl/nptl-init.c ---- a/nptl/nptl-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/nptl-init.c 2012-06-07 12:15:21.817318674 -0600 -@@ -414,7 +414,7 @@ __pthread_initialize_minimal_internal (v - /* Determine the default allowed stack size. This is the size used - in case the user does not specify one. */ - struct rlimit limit; -- if (getrlimit (RLIMIT_STACK, &limit) != 0 -+ if (__getrlimit (RLIMIT_STACK, &limit) != 0 - || limit.rlim_cur == RLIM_INFINITY) - /* The system limit is not usable. Use an architecture-specific - default. */ -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h ---- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600 -@@ -188,4 +188,7 @@ - /* Typed memory objects are not available. */ - #define _POSIX_TYPED_MEMORY_OBJECTS -1 - -+/* Streams are not available. */ -+#define _XOPEN_STREAMS -1 -+ - #endif /* bits/posix_opt.h */ -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/i386/Versions b/nptl/sysdeps/unix/sysv/linux/i386/Versions ---- a/nptl/sysdeps/unix/sysv/linux/i386/Versions 1969-12-31 17:00:00.000000000 -0700 -+++ b/nptl/sysdeps/unix/sysv/linux/i386/Versions 2012-06-07 12:15:21.818318670 -0600 -@@ -0,0 +1,6 @@ -+libc { -+ GLIBC_PRIVATE { -+ # Internal libc interface to libpthread -+ __uname; -+ } -+} -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/i386/smp.h b/nptl/sysdeps/unix/sysv/linux/i386/smp.h ---- a/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-06-07 12:15:21.818318670 -0600 -@@ -36,7 +36,7 @@ is_smp_system (void) - char *cp; - - /* Try reading the number using `sysctl' first. */ -- if (uname (&u.uts) == 0) -+ if (__uname (&u.uts) == 0) - cp = u.uts.version; - else - { -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/kernel-features.h b/nptl/sysdeps/unix/sysv/linux/kernel-features.h ---- a/nptl/sysdeps/unix/sysv/linux/kernel-features.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/nptl/sysdeps/unix/sysv/linux/kernel-features.h 2012-06-07 12:15:21.818318670 -0600 -@@ -0,0 +1,6 @@ -+#include_next -+ -+/* NPTL can always assume all clone thread flags work. */ -+#ifndef __ASSUME_CLONE_THREAD_FLAGS -+# define __ASSUME_CLONE_THREAD_FLAGS 1 -+#endif -diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf ---- a/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600 -@@ -33,7 +33,7 @@ - # logfile /var/log/nscd.log - # threads 4 - # max-threads 32 --# server-user nobody -+ server-user nscd - # stat-user somebody - debug-level 0 - # reload-count 5 -diff -Nrup a/nscd/nscd.init b/nscd/nscd.init ---- a/nscd/nscd.init 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/nscd.init 2012-06-07 12:15:21.818318670 -0600 -@@ -9,6 +9,7 @@ - # slow naming services like NIS, NIS+, LDAP, or hesiod. - # processname: /usr/sbin/nscd - # config: /etc/nscd.conf -+# config: /etc/sysconfig/nscd - # - ### BEGIN INIT INFO - # Provides: nscd -@@ -28,20 +29,8 @@ - # Source function library. - . /etc/init.d/functions - --# nscd does not run on any kernel lower than 2.2.0 because of threading --# problems, so we require that in first place. --case $(uname -r) in -- 2.[2-9].*) -- # this is okay -- ;; -- [3-9]*) -- # these are of course also okay -- ;; -- *) -- #this is not -- exit 1 -- ;; --esac -+# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. -+[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd - - RETVAL=0 - prog=nscd -@@ -50,7 +39,7 @@ start () { - [ -d /var/run/nscd ] || mkdir /var/run/nscd - [ -d /var/db/nscd ] || mkdir /var/db/nscd - echo -n $"Starting $prog: " -- daemon /usr/sbin/nscd -+ daemon /usr/sbin/nscd $NSCD_OPTIONS - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd -@@ -83,11 +72,11 @@ restart() { - # See how we were called. - case "$1" in - start) -- start -+ [ -e /var/lock/subsys/nscd ] || start - RETVAL=$? - ;; - stop) -- stop -+ [ ! -e /var/lock/subsys/nscd ] || stop - RETVAL=$? - ;; - status) -@@ -99,14 +88,17 @@ case "$1" in - RETVAL=$? - ;; - try-restart | condrestart) -- [ -e /var/lock/subsys/nscd ] && restart -+ [ ! -e /var/lock/subsys/nscd ] || restart - RETVAL=$? - ;; - force-reload | reload) - echo -n $"Reloading $prog: " -- killproc /usr/sbin/nscd -HUP -- RETVAL=$? -- echo -+ RETVAL=0 -+ /usr/sbin/nscd -i passwd || RETVAL=$? -+ /usr/sbin/nscd -i group || RETVAL=$? -+ /usr/sbin/nscd -i hosts || RETVAL=$? -+ /usr/sbin/nscd -i services || RETVAL=$? -+ echo - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" -diff -Nrup a/nscd/selinux.c b/nscd/selinux.c ---- a/nscd/selinux.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/selinux.c 2012-06-07 12:15:21.819318667 -0600 -@@ -269,6 +269,18 @@ avc_create_thread (void (*run) (void)) - { - int rc; - -+#if defined HAVE_LIBAUDIT && defined HAVE_LIBCAP -+ if (server_user != NULL && getuid () == 0) -+ { -+ /* We need to preserve the capabilities in the AVC thread. */ -+ if (prctl (PR_SET_KEEPCAPS, 1) == -1) -+ { -+ dbg_log (_("Failed to set keep-capabilities")); -+ error (EXIT_FAILURE, errno, _("prctl(KEEPCAPS) failed")); -+ } -+ } -+#endif -+ - rc = - pthread_create (&avc_notify_thread, NULL, (void *(*) (void *)) run, NULL); - if (rc != 0) -diff -Nrup a/nss/Makefile b/nss/Makefile ---- a/nss/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nss/Makefile 2012-06-07 12:15:21.819318667 -0600 -@@ -101,6 +101,7 @@ $(libnss_db-dbs:%=$(objpfx)%.c): $(objpf - echo '#include "$<"') > $@.new - mv -f $@.new $@ - -+CFLAGS-files-hosts.c += -fno-strict-aliasing - - $(objpfx)makedb: $(makedb-modules:%=$(objpfx)%.o) - -diff -Nrup a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c ---- a/nss/nss_files/files-XXX.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/nss/nss_files/files-XXX.c 2012-06-07 12:15:21.819318667 -0600 -@@ -189,7 +189,7 @@ internal_getent (struct STRUCTURE *resul - { - char *p; - struct parser_data *data = (void *) buffer; -- int linebuflen = buffer + buflen - data->linebuffer; -+ size_t linebuflen = buffer + buflen - data->linebuffer; - int parse_result; - - if (buflen < sizeof *data + 2) -diff -Nrup a/posix/Makefile b/posix/Makefile ---- a/posix/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/posix/Makefile 2012-06-07 12:15:21.820318664 -0600 -@@ -305,15 +305,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi - mv -f $@/$$spec.new $@/$$spec; \ - done < $(objpfx)getconf.speclist - --$(objpfx)getconf.speclist: $(objpfx)getconf --ifeq (no,$(cross-compiling)) -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new --else -- > $@.new --endif -+$(objpfx)getconf.speclist: getconf.speclist.h -+ $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ -+ | sed -n -e '/START_OF_STRINGS/,$${/\(POSIX_V[67]\|XBS5\)_/{s/^[^"]*"//;s/".*$$//;p}}' \ -+ > $@.new - mv -f $@.new $@ -diff -Nrup a/posix/gai.conf b/posix/gai.conf ---- a/posix/gai.conf 2012-06-05 07:42:49.000000000 -0600 -+++ b/posix/gai.conf 2012-06-07 12:15:21.820318664 -0600 -@@ -41,7 +41,7 @@ - # - # precedence - # Add another rule to the RFC 3484 precedence table. See section 2.1 --# and 10.3 in RFC 3484. The default is: -+# and 10.3 in RFC 3484. The RFC requires: - # - #precedence ::1/128 50 - #precedence ::/0 40 -@@ -58,7 +58,7 @@ - # Add another rule to the RFC 3484 scope table for IPv4 addresses. - # By default the scope IDs described in section 3.2 in RFC 3484 are - # used. Changing these defaults should hardly ever be necessary. --# The defaults are equivalent to: -+# The definitions in RFC 1918 are equivalent to: - # - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 -@@ -75,3 +75,5 @@ - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 - #scopev4 ::ffff:0.0.0.0/96 14 -+# -+# This is what the Red Hat setting currently uses. -diff -Nrup a/posix/getconf.speclist.h b/posix/getconf.speclist.h ---- a/posix/getconf.speclist.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/posix/getconf.speclist.h 2012-06-07 12:15:21.820318664 -0600 -@@ -0,0 +1,39 @@ -+#include -+const char *START_OF_STRINGS = -+#if _POSIX_V7_ILP32_OFF32 == 1 -+"POSIX_V7_ILP32_OFF32" -+#endif -+#if _POSIX_V7_ILP32_OFFBIG == 1 -+"POSIX_V7_ILP32_OFFBIG" -+#endif -+#if _POSIX_V7_LP64_OFF64 == 1 -+"POSIX_V7_LP64_OFF64" -+#endif -+#if _POSIX_V7_LPBIG_OFFBIG == 1 -+"POSIX_V7_LPBIG_OFFBIG" -+#endif -+#if _POSIX_V6_ILP32_OFF32 == 1 -+"POSIX_V6_ILP32_OFF32" -+#endif -+#if _POSIX_V6_ILP32_OFFBIG == 1 -+"POSIX_V6_ILP32_OFFBIG" -+#endif -+#if _POSIX_V6_LP64_OFF64 == 1 -+"POSIX_V6_LP64_OFF64" -+#endif -+#if _POSIX_V6_LPBIG_OFFBIG == 1 -+"POSIX_V6_LPBIG_OFFBIG" -+#endif -+#if _XBS5_ILP32_OFF32 == 1 -+"XBS5_ILP32_OFF32" -+#endif -+#if _XBS5_ILP32_OFFBIG == 1 -+"XBS5_ILP32_OFFBIG" -+#endif -+#if _XBS5_LP64_OFF64 == 1 -+"XBS5_LP64_OFF64" -+#endif -+#if _XBS5_LPBIG_OFFBIG == 1 -+"XBS5_LPBIG_OFFBIG" -+#endif -+""; -diff -Nrup a/posix/regcomp.c b/posix/regcomp.c ---- a/posix/regcomp.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/posix/regcomp.c 2012-06-07 12:15:21.821318661 -0600 -@@ -2772,40 +2772,29 @@ parse_bracket_exp (re_string_t *regexp, - - /* Local function for parse_bracket_exp used in _LIBC environement. - Seek the collating symbol entry correspondings to NAME. -- Return the index of the symbol in the SYMB_TABLE. */ -+ Return the index of the symbol in the SYMB_TABLE, -+ or -1 if not found. */ - - auto inline int32_t - __attribute ((always_inline)) -- seek_collating_symbol_entry (name, name_len) -- const unsigned char *name; -- size_t name_len; -+ seek_collating_symbol_entry (const unsigned char *name, size_t name_len) - { -- int32_t hash = elem_hash ((const char *) name, name_len); -- int32_t elem = hash % table_size; -- if (symb_table[2 * elem] != 0) -- { -- int32_t second = hash % (table_size - 2) + 1; -+ int32_t elem; - -- do -- { -- /* First compare the hashing value. */ -- if (symb_table[2 * elem] == hash -- /* Compare the length of the name. */ -- && name_len == extra[symb_table[2 * elem + 1]] -- /* Compare the name. */ -- && memcmp (name, &extra[symb_table[2 * elem + 1] + 1], -- name_len) == 0) -- { -- /* Yep, this is the entry. */ -- break; -- } -- -- /* Next entry. */ -- elem += second; -- } -- while (symb_table[2 * elem] != 0); -- } -- return elem; -+ for (elem = 0; elem < table_size; elem++) -+ if (symb_table[2 * elem] != 0) -+ { -+ int32_t idx = symb_table[2 * elem + 1]; -+ /* Skip the name of collating element name. */ -+ idx += 1 + extra[idx]; -+ if (/* Compare the length of the name. */ -+ name_len == extra[idx] -+ /* Compare the name. */ -+ && memcmp (name, &extra[idx + 1], name_len) == 0) -+ /* Yep, this is the entry. */ -+ return elem; -+ } -+ return -1; - } - - /* Local function for parse_bracket_exp used in _LIBC environment. -@@ -2814,8 +2803,7 @@ parse_bracket_exp (re_string_t *regexp, - - auto inline unsigned int - __attribute ((always_inline)) -- lookup_collation_sequence_value (br_elem) -- bracket_elem_t *br_elem; -+ lookup_collation_sequence_value (bracket_elem_t *br_elem) - { - if (br_elem->type == SB_CHAR) - { -@@ -2843,7 +2831,7 @@ parse_bracket_exp (re_string_t *regexp, - int32_t elem, idx; - elem = seek_collating_symbol_entry (br_elem->opr.name, - sym_name_len); -- if (symb_table[2 * elem] != 0) -+ if (elem != -1) - { - /* We found the entry. */ - idx = symb_table[2 * elem + 1]; -@@ -2861,7 +2849,7 @@ parse_bracket_exp (re_string_t *regexp, - /* Return the collation sequence value. */ - return *(unsigned int *) (extra + idx); - } -- else if (symb_table[2 * elem] == 0 && sym_name_len == 1) -+ else if (sym_name_len == 1) - { - /* No valid character. Match it as a single byte - character. */ -@@ -2883,11 +2871,8 @@ parse_bracket_exp (re_string_t *regexp, - - auto inline reg_errcode_t - __attribute ((always_inline)) -- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem) -- re_charset_t *mbcset; -- int *range_alloc; -- bitset_t sbcset; -- bracket_elem_t *start_elem, *end_elem; -+ build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc, -+ bracket_elem_t *start_elem, bracket_elem_t *end_elem) - { - unsigned int ch; - uint32_t start_collseq; -@@ -2966,25 +2951,22 @@ parse_bracket_exp (re_string_t *regexp, - - auto inline reg_errcode_t - __attribute ((always_inline)) -- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name) -- re_charset_t *mbcset; -- int *coll_sym_alloc; -- bitset_t sbcset; -- const unsigned char *name; -+ build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset, -+ int *coll_sym_alloc, const unsigned char *name) - { - int32_t elem, idx; - size_t name_len = strlen ((const char *) name); - if (nrules != 0) - { - elem = seek_collating_symbol_entry (name, name_len); -- if (symb_table[2 * elem] != 0) -+ if (elem != -1) - { - /* We found the entry. */ - idx = symb_table[2 * elem + 1]; - /* Skip the name of collating element name. */ - idx += 1 + extra[idx]; - } -- else if (symb_table[2 * elem] == 0 && name_len == 1) -+ else if (name_len == 1) - { - /* No valid character, treat it as a normal - character. */ -diff -Nrup a/resolv/Makefile b/resolv/Makefile ---- a/resolv/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/resolv/Makefile 2012-06-07 12:15:21.822318657 -0600 -@@ -80,6 +80,7 @@ ifeq (yes,$(have-ssp)) - CFLAGS-libresolv += -fstack-protector - endif - CFLAGS-res_hconf.c = -fexceptions -+CFLAGS-res_send.c += -fno-strict-aliasing - - # The BIND code elicits some harmless warnings. - +cflags += -Wno-strict-prototypes -Wno-write-strings -diff -Nrup a/resource/getrlimit.c b/resource/getrlimit.c ---- a/resource/getrlimit.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/resource/getrlimit.c 2012-06-07 12:15:21.823318653 -0600 -@@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource reso - __set_errno (ENOSYS); - return -1; - } -+libc_hidden_def (__getrlimit) - weak_alias (__getrlimit, getrlimit) - - stub_warning (getrlimit) -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/stdio-common/vfprintf.c 2012-06-07 12:15:21.823318653 -0600 -@@ -1168,42 +1168,9 @@ vfprintf (FILE *s, const CHAR_T *format, - else if (!is_long && spec != L_('S')) \ - { \ - if (prec != -1) \ -- { \ -- /* Search for the end of the string, but don't search past \ -- the length (in bytes) specified by the precision. Also \ -- don't use incomplete characters. */ \ -- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX) == 1) \ -- len = __strnlen (string, prec); \ -- else \ -- { \ -- /* In case we have a multibyte character set the \ -- situation is more complicated. We must not copy \ -- bytes at the end which form an incomplete character. */\ -- size_t ignore_size = (unsigned) prec > 1024 ? 1024 : prec;\ -- wchar_t ignore[ignore_size]; \ -- const char *str2 = string; \ -- const char *strend = string + prec; \ -- if (strend < string) \ -- strend = (const char *) UINTPTR_MAX; \ -- \ -- mbstate_t ps; \ -- memset (&ps, '\0', sizeof (ps)); \ -- \ -- while (str2 != NULL && str2 < strend) \ -- if (__mbsnrtowcs (ignore, &str2, strend - str2, \ -- ignore_size, &ps) == (size_t) -1) \ -- { \ -- /* Conversion function has set errno. */ \ -- done = -1; \ -- goto all_done; \ -- } \ -- \ -- if (str2 == NULL) \ -- len = strlen (string); \ -- else \ -- len = str2 - string - (ps.__count & 7); \ -- } \ -- } \ -+ /* Search for th eend of the string, but don't search past \ -+ the length (in bytes) specified by the precision. */ \ -+ len = __strnlen (string, prec); \ - else \ - len = strlen (string); \ - } \ -diff -Nrup a/streams/Makefile b/streams/Makefile ---- a/streams/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/streams/Makefile 2012-06-07 12:15:21.824318649 -0600 -@@ -20,7 +20,7 @@ - # - subdir := streams - --headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h -+#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h - routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach - - include ../Rules -diff -Nrup a/sunrpc/Makefile b/sunrpc/Makefile ---- a/sunrpc/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sunrpc/Makefile 2012-06-07 12:15:21.825318645 -0600 -@@ -52,7 +52,7 @@ headers-in-tirpc = $(addprefix rpc/,auth - des_crypt.h) - headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \ - $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h --headers = rpc/netdb.h -+headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc) - install-others = $(inst_sysconfdir)/rpc - generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \ - $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen -@@ -150,6 +150,10 @@ sunrpc-CPPFLAGS = -D_RPC_THREAD_SAFE_ - CPPFLAGS += $(sunrpc-CPPFLAGS) - BUILD_CPPFLAGS += $(sunrpc-CPPFLAGS) - -+CFLAGS-clnt_tcp.c += -fno-strict-aliasing -+CFLAGS-clnt_udp.c += -fno-strict-aliasing -+CFLAGS-clnt_unix.c += -fno-strict-aliasing -+ - $(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so - $(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so - $(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so -diff -Nrup a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h ---- a/sysdeps/generic/dl-cache.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/generic/dl-cache.h 2012-06-07 12:15:21.825318645 -0600 -@@ -35,6 +35,14 @@ - # define add_system_dir(dir) add_dir (dir) - #endif - -+#ifndef arch_startup -+# define arch_startup(argc, argv) do { } while (0) -+#endif -+ -+#ifndef add_arch_dirs -+# define add_arch_dirs(config_file) do { } while (0) -+#endif -+ - #define CACHEMAGIC "ld.so-1.7.0" - - /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another -diff -Nrup a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile ---- a/sysdeps/i386/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/i386/Makefile 2012-06-07 12:15:21.826318641 -0600 -@@ -2,6 +2,8 @@ - # Every i386 port in use uses gas syntax (I think). - asm-CPPFLAGS += -DGAS_SYNTAX - -+sysdep-ASFLAGS += -U__i686 -+ - # The i386 `long double' is a distinct type we support. - long-double-fcts = yes - -@@ -62,6 +64,14 @@ endif - - ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) - defines += -DNO_TLS_DIRECT_SEG_REFS -+else -+# .a libraries are not performance critical and so we -+# build them without direct TLS segment references -+# always. -+CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.o += -mno-tls-direct-seg-refs -+CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.oS += -mno-tls-direct-seg-refs - endif - - ifeq ($(subdir),elf) -diff -Nrup a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile ---- a/sysdeps/i386/i686/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/i386/i686/Makefile 2012-06-07 12:15:21.826318641 -0600 -@@ -9,19 +9,3 @@ stack-align-test-flags += -msse - ifeq ($(subdir),string) - sysdep_routines += cacheinfo - endif -- --ifeq (yes,$(config-asflags-i686)) --CFLAGS-.o += -Wa,-mtune=i686 --CFLAGS-.os += -Wa,-mtune=i686 --CFLAGS-.op += -Wa,-mtune=i686 --CFLAGS-.og += -Wa,-mtune=i686 --CFLAGS-.ob += -Wa,-mtune=i686 --CFLAGS-.oS += -Wa,-mtune=i686 -- --ASFLAGS-.o += -Wa,-mtune=i686 --ASFLAGS-.os += -Wa,-mtune=i686 --ASFLAGS-.op += -Wa,-mtune=i686 --ASFLAGS-.og += -Wa,-mtune=i686 --ASFLAGS-.ob += -Wa,-mtune=i686 --ASFLAGS-.oS += -Wa,-mtune=i686 --endif -diff -Nrup a/sysdeps/ia64/libgcc-compat.c b/sysdeps/ia64/libgcc-compat.c ---- a/sysdeps/ia64/libgcc-compat.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/ia64/libgcc-compat.c 2012-06-07 12:15:21.826318641 -0600 -@@ -0,0 +1,84 @@ -+/* pre-.hidden libgcc compatibility -+ Copyright (C) 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+ -+#include -+#include -+ -+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) -+ -+typedef int int128_t __attribute__((__mode__(TI))); -+ -+extern long double __divtf3 (long double, long double) attribute_hidden; -+long double INTUSE (__divtf3) (long double x, long double y) -+{ -+ return __divtf3 (x, y); -+} -+symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); -+ -+extern double __divdf3 (double, double) attribute_hidden; -+double INTUSE (__divdf3) (double x, double y) -+{ -+ return __divdf3 (x, y); -+} -+symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); -+ -+extern float __divsf3 (float, float) attribute_hidden; -+float INTUSE (__divsf3) (float x, float y) -+{ -+ return __divsf3 (x, y); -+} -+symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); -+ -+extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__divdi3) (int64_t x, int64_t y) -+{ -+ return __divdi3 (x, y); -+} -+symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); -+ -+extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__moddi3) (int64_t x, int64_t y) -+{ -+ return __moddi3 (x, y); -+} -+symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); -+ -+extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) -+{ -+ return __udivdi3 (x, y); -+} -+symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); -+ -+extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) -+{ -+ return __umoddi3 (x, y); -+} -+symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); -+ -+extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; -+int128_t INTUSE (__multi3) (int128_t x, int128_t y) -+{ -+ return __multi3 (x, y); -+} -+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); -+ -+#endif -diff -Nrup a/sysdeps/mach/hurd/getrlimit.c b/sysdeps/mach/hurd/getrlimit.c ---- a/sysdeps/mach/hurd/getrlimit.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/mach/hurd/getrlimit.c 2012-06-07 12:15:21.826318641 -0600 -@@ -43,4 +43,5 @@ __getrlimit (enum __rlimit_resource reso - - return 0; - } -+libc_hidden_def (__getrlimit) - weak_alias (__getrlimit, getrlimit) -diff -Nrup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-06-07 12:15:21.827318637 -0600 -@@ -565,8 +565,8 @@ gaih_inet (const char *name, const struc - - /* If we do not have to look for IPv6 addresses, use - the simple, old functions, which do not support -- IPv6 scope ids. */ -- if (req->ai_family == AF_INET) -+ IPv6 scope ids, nor retrieving the canonical name. */ -+ if (req->ai_family == AF_INET && (req->ai_flags & AI_CANONNAME) == 0) - { - size_t tmpbuflen = 512; - assert (tmpbuf == NULL); -@@ -1105,68 +1105,10 @@ gaih_inet (const char *name, const struc - /* Only the first entry gets the canonical name. */ - if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) - { -- char *tmpbuf2 = NULL; -- bool malloc_tmpbuf2 = false; -- - if (canon == NULL) -- { -- struct hostent *h = NULL; -- int herrno; -- struct hostent th; -- size_t tmpbuf2len = 512; -- -- do -- { -- if (__libc_use_alloca (alloca_used + 2 * tmpbuf2len)) -- tmpbuf2 = extend_alloca_account (tmpbuf2, tmpbuf2len, -- tmpbuf2len * 2, -- alloca_used); -- else -- { -- char *newp = realloc (malloc_tmpbuf2 ? tmpbuf2 : NULL, -- 2 * tmpbuf2len); -- if (newp == NULL) -- { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- result = -EAI_MEMORY; -- goto free_and_return; -- } -- -- tmpbuf2 = newp; -- tmpbuf2len = 2 * tmpbuf2len; -- malloc_tmpbuf2 = true; -- } -- -- rc = __gethostbyaddr_r (at2->addr, -- ((at2->family == AF_INET6) -- ? sizeof (struct in6_addr) -- : sizeof (struct in_addr)), -- at2->family, &th, tmpbuf2, -- tmpbuf2len, &h, &herrno); -- } -- while (rc == ERANGE && herrno == NETDB_INTERNAL); -- -- if (rc != 0 && herrno == NETDB_INTERNAL) -- { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- -- __set_h_errno (herrno); -- result = -EAI_SYSTEM; -- goto free_and_return; -- } -- -- if (h != NULL) -- canon = h->h_name; -- else -- { -- assert (orig_name != NULL); -- /* If the canonical name cannot be determined, use -- the passed in string. */ -- canon = orig_name; -- } -- } -+ /* If the canonical name cannot be determined, use -+ the passed in string. */ -+ canon = orig_name; - - #ifdef HAVE_LIBIDN - if (req->ai_flags & AI_CANONIDN) -@@ -1181,9 +1123,6 @@ gaih_inet (const char *name, const struc - int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); - if (rc != IDNA_SUCCESS) - { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- - if (rc == IDNA_MALLOC_ERROR) - result = -EAI_MEMORY; - else if (rc == IDNA_DLOPEN_ERROR) -@@ -1213,17 +1152,11 @@ gaih_inet (const char *name, const struc - canon = strdup (canon); - if (canon == NULL) - { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- - result = -EAI_MEMORY; - goto free_and_return; - } - } - } -- -- if (malloc_tmpbuf2) -- free (tmpbuf2); - } - - family = at2->family; -@@ -1360,10 +1293,12 @@ static const struct scopeentry - /* Link-local addresses: scope 2. */ - { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, - { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, -+#if 0 - /* Site-local addresses: scope 5. */ - { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, - { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, - { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, -+#endif - /* Default: scope 14. */ - { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } - }; -diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile ---- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 -@@ -35,6 +35,9 @@ CFLAGS-rtld-memmove.os = $(no-special-re - CFLAGS-rtld-memchr.os = $(no-special-regs) - CFLAGS-rtld-strnlen.os = $(no-special-regs) - -+CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables -+CFLAGS-gmon-start.c = -fno-strict-aliasing -+ - ifeq ($(subdir),csu) - sysdep_routines += hp-timing - elide-routines.os += hp-timing -diff -Nrup a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c ---- a/sysdeps/s390/s390-64/utf16-utf32-z9.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c 2012-06-07 12:15:21.829318630 -0600 -@@ -168,10 +168,7 @@ gconv_end (struct __gconv_step *data) - register unsigned long long outlen asm("11") = outend - outptr; \ - uint64_t cc = 0; \ - \ -- asm volatile (".machine push \n\t" \ -- ".machine \"z9-109\" \n\t" \ -- "0: " INSTRUCTION " \n\t" \ -- ".machine pop \n\t" \ -+ asm volatile ("0: " INSTRUCTION " \n\t" \ - " jo 0b \n\t" \ - " ipm %2 \n" \ - : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ -diff -Nrup a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c ---- a/sysdeps/s390/s390-64/utf8-utf16-z9.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c 2012-06-07 12:15:21.829318630 -0600 -@@ -150,10 +150,7 @@ gconv_end (struct __gconv_step *data) - register unsigned long long outlen asm("11") = outend - outptr; \ - uint64_t cc = 0; \ - \ -- asm volatile (".machine push \n\t" \ -- ".machine \"z9-109\" \n\t" \ -- "0: " INSTRUCTION " \n\t" \ -- ".machine pop \n\t" \ -+ asm volatile ("0: " INSTRUCTION " \n\t" \ - " jo 0b \n\t" \ - " ipm %2 \n" \ - : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ -diff -Nrup a/sysdeps/s390/s390-64/utf8-utf32-z9.c b/sysdeps/s390/s390-64/utf8-utf32-z9.c ---- a/sysdeps/s390/s390-64/utf8-utf32-z9.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c 2012-06-07 12:15:21.829318630 -0600 -@@ -154,10 +154,7 @@ gconv_end (struct __gconv_step *data) - register unsigned long long outlen asm("11") = outend - outptr; \ - uint64_t cc = 0; \ - \ -- asm volatile (".machine push \n\t" \ -- ".machine \"z9-109\" \n\t" \ -- "0: " INSTRUCTION " \n\t" \ -- ".machine pop \n\t" \ -+ asm volatile ("0: " INSTRUCTION " \n\t" \ - " jo 0b \n\t" \ - " ipm %2 \n" \ - : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ -diff -Nrup a/sysdeps/unix/nice.c b/sysdeps/unix/nice.c ---- a/sysdeps/unix/nice.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/nice.c 2012-06-07 12:15:21.829318630 -0600 -@@ -41,7 +41,12 @@ nice (int incr) - __set_errno (save); - } - -- result = setpriority (PRIO_PROCESS, 0, prio + incr); -+ prio += incr; -+ if (prio < PRIO_MIN) -+ prio = PRIO_MIN; -+ else if (prio >= PRIO_MAX) -+ prio = PRIO_MAX - 1; -+ result = setpriority (PRIO_PROCESS, 0, prio); - if (result == -1) - { - if (errno == EACCES) -diff -Nrup a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c ---- a/sysdeps/unix/sysv/linux/check_pf.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/check_pf.c 2012-06-07 12:15:21.830318627 -0600 -@@ -26,16 +26,14 @@ - #include - #include - --#include --#include --#include -- - #include - #include - #include - #include - #include - -+#include "netlinkaccess.h" -+ - - #ifndef IFA_F_HOMEADDRESS - # define IFA_F_HOMEADDRESS 0 -diff -Nrup a/sysdeps/unix/sysv/linux/futimesat.c b/sysdeps/unix/sysv/linux/futimesat.c ---- a/sysdeps/unix/sysv/linux/futimesat.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/futimesat.c 2012-06-07 12:15:21.830318627 -0600 -@@ -36,14 +36,14 @@ futimesat (fd, file, tvp) - { - int result; - -+ if (file == NULL) -+ return __futimes (fd, tvp); -+ - #ifdef __NR_futimesat - # ifndef __ASSUME_ATFCTS - if (__have_atfcts >= 0) - # endif - { -- if (file == NULL) -- return __futimes (fd, tvp); -- - result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); - # ifndef __ASSUME_ATFCTS - if (result == -1 && errno == ENOSYS) -@@ -57,22 +57,7 @@ futimesat (fd, file, tvp) - #ifndef __ASSUME_ATFCTS - char *buf = NULL; - -- if (file == NULL) -- { -- static const char procfd[] = "/proc/self/fd/%d"; -- /* Buffer for the path name we are going to use. It consists of -- - the string /proc/self/fd/ -- - the file descriptor number. -- The final NUL is included in the sizeof. A bit of overhead -- due to the format elements compensates for possible negative -- numbers. */ -- size_t buflen = sizeof (procfd) + sizeof (int) * 3; -- buf = alloca (buflen); -- -- __snprintf (buf, buflen, procfd, fd); -- file = buf; -- } -- else if (fd != AT_FDCWD && file[0] != '/') -+ if (fd != AT_FDCWD && file[0] != '/') - { - size_t filelen = strlen (file); - if (__builtin_expect (filelen == 0, 0)) -diff -Nrup a/sysdeps/unix/sysv/linux/i386/dl-cache.h b/sysdeps/unix/sysv/linux/i386/dl-cache.h ---- a/sysdeps/unix/sysv/linux/i386/dl-cache.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/unix/sysv/linux/i386/dl-cache.h 2012-06-07 12:15:21.830318627 -0600 -@@ -0,0 +1,59 @@ -+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. -+ Copyright (C) 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+static inline int -+is_ia64 (void) -+{ -+ unsigned int fl1, fl2; -+ -+ /* See if we can use cpuid. */ -+ __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" -+ "pushl %0; popfl; pushfl; popl %0; popfl" -+ : "=&r" (fl1), "=&r" (fl2) -+ : "i" (0x00200000)); -+ if (((fl1 ^ fl2) & 0x00200000) == 0) -+ return 0; -+ -+ /* Host supports cpuid. See if cpuid gives capabilities, try -+ CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we -+ don't need their CPUID values here, and %ebx may be the PIC -+ register. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=a" (fl1) : "0" (0) : "edx", "cc"); -+ if (fl1 == 0) -+ return 0; -+ -+ /* Invoke CPUID(1), return %edx; caller can examine bits to -+ determine what's supported. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); -+ return (fl2 & (1 << 30)) != 0; -+} -+ -+#define arch_startup(argc, argv) \ -+ do { \ -+ /* On IA-64, try to execute 64-bit ldconfig if possible. \ -+ This is because the badly designed /emul/ia32-linux hack \ -+ will cause 32-bit ldconfig to do all sorts of weird things. */ \ -+ if (is_ia64 ()) \ -+ execv ("/emul/ia32-linux/../../sbin/ldconfig", \ -+ (char *const *) argv); \ -+ } while (0) -+ -+#include_next -diff -Nrup a/sysdeps/unix/sysv/linux/i386/getrlimit.c b/sysdeps/unix/sysv/linux/i386/getrlimit.c ---- a/sysdeps/unix/sysv/linux/i386/getrlimit.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/i386/getrlimit.c 2012-06-07 12:15:21.830318627 -0600 -@@ -35,4 +35,5 @@ __new_getrlimit (enum __rlimit_resource - } - - weak_alias (__new_getrlimit, __getrlimit); -+libc_hidden_weak (__getrlimit) - versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_2); -diff -Nrup a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c ---- a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 2012-06-07 12:15:21.831318623 -0600 -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include -+#else -+#include -+#endif -diff -Nrup a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h ---- a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 2012-06-07 12:15:21.831318623 -0600 -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include -+#else -+#include -+#endif -diff -Nrup a/sysdeps/unix/sysv/linux/netlinkaccess.h b/sysdeps/unix/sysv/linux/netlinkaccess.h ---- a/sysdeps/unix/sysv/linux/netlinkaccess.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/netlinkaccess.h 2012-06-07 12:15:21.831318623 -0600 -@@ -24,6 +24,24 @@ - - #include - -+#ifndef IFA_MAX -+/* 2.6.19 kernel headers helpfully removed some macros and -+ moved lots of stuff into new headers, some of which aren't -+ included by linux/rtnetlink.h. */ -+#include -+#endif -+ -+#ifndef IFA_RTA -+# define IFA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) -+# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) -+#endif -+ -+#ifndef IFLA_RTA -+# define IFLA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) -+# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) -+#endif - - struct netlink_res - { -diff -Nrup a/sysdeps/unix/sysv/linux/paths.h b/sysdeps/unix/sysv/linux/paths.h ---- a/sysdeps/unix/sysv/linux/paths.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/paths.h 2012-06-07 12:15:21.831318623 -0600 -@@ -62,7 +62,7 @@ - #define _PATH_TTY "/dev/tty" - #define _PATH_UNIX "/boot/vmlinux" - #define _PATH_UTMP "/var/run/utmp" --#define _PATH_VI "/usr/bin/vi" -+#define _PATH_VI "/bin/vi" - #define _PATH_WTMP "/var/log/wtmp" - - /* Provide trailing slash, since mostly used for building pathnames. */ -diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c ---- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 -@@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios - { - struct __kernel_termios k_termios; - unsigned long int cmd; -+ int retval; - - switch (optional_actions) - { -@@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios - memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)); - -- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ -+ if (retval == 0 && cmd == TCSETS) -+ { -+ /* The Linux kernel has a bug which silently ignore the invalid -+ c_cflag on pty. We have to check it here. */ -+ int save = errno; -+ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); -+ if (retval) -+ { -+ /* We cannot verify if the setting is ok. We don't return -+ an error (?). */ -+ __set_errno (save); -+ retval = 0; -+ } -+ else if ((termios_p->c_cflag & (PARENB | CREAD)) -+ != (k_termios.c_cflag & (PARENB | CREAD)) -+ || ((termios_p->c_cflag & CSIZE) -+ && ((termios_p->c_cflag & CSIZE) -+ != (k_termios.c_cflag & CSIZE)))) -+ { -+ /* It looks like the Linux kernel silently changed the -+ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an -+ error. */ -+ __set_errno (EINVAL); -+ retval = -1; -+ } -+ } -+ -+ return retval; - } - libc_hidden_def (tcsetattr)