From fb633eaa14bb4c2b35f26c6ec2f4d829f27819ac Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Aug 20 2012 19:25:02 +0000 Subject: - Remove obsolete patches from glibc-fedora.patch. Explode remaining patches into distinct patchfiles. Thanks to Dmitry V. Levin for identifying them! Drop ia64 specific patches and specfile fragments --- diff --git a/glibc-fedora-__libc_multiple_libcs.patch b/glibc-fedora-__libc_multiple_libcs.patch new file mode 100644 index 0000000..d15920a --- /dev/null +++ b/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-fedora-cdefs-gnuc.patch b/glibc-fedora-cdefs-gnuc.patch new file mode 100644 index 0000000..7a151ac --- /dev/null +++ b/glibc-fedora-cdefs-gnuc.patch @@ -0,0 +1,39 @@ +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 --git a/glibc-fedora-elf-ORIGIN.patch b/glibc-fedora-elf-ORIGIN.patch new file mode 100644 index 0000000..bfaff83 --- /dev/null +++ b/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-fedora-elf-init-hidden_undef.patch b/glibc-fedora-elf-init-hidden_undef.patch new file mode 100644 index 0000000..cd50d3b --- /dev/null +++ b/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-fedora-elf-rh737223.patch b/glibc-fedora-elf-rh737223.patch new file mode 100644 index 0000000..c20ba96 --- /dev/null +++ b/glibc-fedora-elf-rh737223.patch @@ -0,0 +1,27 @@ +From 0c95ab64cb4ec0d22bb222647d9d20c7b4903e38 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Fri, 7 Oct 2011 09:31:27 +0200 +Subject: [PATCH] Horrible workaround for horribly broken software + +* Tue Oct 11 2011 Andreas Schwab - 2.14.90-11 +- Horrible workaround for horribly broken software (#737223) + +--- + elf/rtld.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 978c609..8422b9f 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -1404,7 +1404,9 @@ of this helper program; chances are you did not intend to run this program.\n\ + 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-fedora-gai-canonical.patch b/glibc-fedora-gai-canonical.patch new file mode 100644 index 0000000..c058ecf --- /dev/null +++ b/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-fedora-gai-rfc1918.patch b/glibc-fedora-gai-rfc1918.patch new file mode 100644 index 0000000..bde4253 --- /dev/null +++ b/glibc-fedora-gai-rfc1918.patch @@ -0,0 +1,54 @@ +From 1080954fbcf54814875eb988673004d25a1655cf Mon Sep 17 00:00:00 2001 +From: Ulrich Drepper +Date: Tue, 6 Apr 2010 12:27:58 +0200 +Subject: [PATCH] Assign global scope to RFC 1918 addresses + +* sysdeps/posix/getaddrinfo.c (default_scopes): Assign global +scope to RFC 1918 addresses. +* posix/gai.conf: Document difference from RFC 3484. + +--- + ChangeLog | 6 ++++++ + posix/gai.conf | 6 ++++-- + sysdeps/posix/getaddrinfo.c | 2 ++ + 3 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/posix/gai.conf b/posix/gai.conf +index 195287e..bd40684 100644 +--- a/posix/gai.conf ++++ b/posix/gai.conf +@@ -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 +diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +index 2e0c724..3eb5971 100644 +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -1099,10 +1099,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 --git a/glibc-fedora-getconf.patch b/glibc-fedora-getconf.patch new file mode 100644 index 0000000..a878d5b --- /dev/null +++ b/glibc-fedora-getconf.patch @@ -0,0 +1,74 @@ +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. + +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/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 --git a/glibc-fedora-getrlimit-PLT.patch b/glibc-fedora-getrlimit-PLT.patch new file mode 100644 index 0000000..bd77bb3 --- /dev/null +++ b/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-fedora-i386-tls-direct-seg-refs.patch b/glibc-fedora-i386-tls-direct-seg-refs.patch new file mode 100644 index 0000000..80c0f0d --- /dev/null +++ b/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-fedora-i686-nopl.patch b/glibc-fedora-i686-nopl.patch new file mode 100644 index 0000000..7acc9eb --- /dev/null +++ b/glibc-fedora-i686-nopl.patch @@ -0,0 +1,36 @@ +From b82207b25ed05d2e31563859382036ec385fc650 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Mon, 21 Jun 2010 16:54:50 +0200 +Subject: [PATCH] Workaround assembler bug sneaking in nopl + +* sysdeps/i386/i686/Makefile: Don't pass -mtune to assembler. + +--- + ChangeLog | 4 ++++ + sysdeps/i386/i686/Makefile | 16 ---------------- + 2 files changed, 4 insertions(+), 16 deletions(-) + +diff --git a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile +index e6b2924..dbcf1c3 100644 +--- a/sysdeps/i386/i686/Makefile ++++ b/sysdeps/i386/i686/Makefile +@@ -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 --git a/glibc-fedora-include-bits-ldbl.patch b/glibc-fedora-include-bits-ldbl.patch new file mode 100644 index 0000000..1e5d763 --- /dev/null +++ b/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-fedora-ldd.patch b/glibc-fedora-ldd.patch new file mode 100644 index 0000000..51aec73 --- /dev/null +++ b/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-fedora-linux-tcsetattr.patch b/glibc-fedora-linux-tcsetattr.patch new file mode 100644 index 0000000..066ac48 --- /dev/null +++ b/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-fedora-locale-euro.patch b/glibc-fedora-locale-euro.patch new file mode 100644 index 0000000..87ce37c --- /dev/null +++ b/glibc-fedora-locale-euro.patch @@ -0,0 +1,99 @@ +* Tue Mar 26 2002 Jakub Jelinek 2.2.5-28 +- readd temporarily currencies which were superceeded by Euro + into the list of accepted currencies by localedef to make + standard conformance testsuites happy + +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 --git a/glibc-fedora-localedata-locales-fixes.patch b/glibc-fedora-localedata-locales-fixes.patch new file mode 100644 index 0000000..a1a254e --- /dev/null +++ b/glibc-fedora-localedata-locales-fixes.patch @@ -0,0 +1,57 @@ +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/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 --git a/glibc-fedora-localedata-no_NO.patch b/glibc-fedora-localedata-no_NO.patch new file mode 100644 index 0000000..9f3b568 --- /dev/null +++ b/glibc-fedora-localedata-no_NO.patch @@ -0,0 +1,102 @@ +* Mon Dec 1 2003 Jakub Jelinek 2.3.3-1 +- for the time being, include both nb_NO* and no_NO* as locales + so that the distribution can catch up with the no_NO->nb_NO + transition + +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/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 +@@ -320,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 \ +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 --git a/glibc-fedora-localedata-rh61908.patch b/glibc-fedora-localedata-rh61908.patch new file mode 100644 index 0000000..ebc807c --- /dev/null +++ b/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-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 \ +@@ -378,6 +381,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 --git a/glibc-fedora-localedef.patch b/glibc-fedora-localedef.patch new file mode 100644 index 0000000..ee1463a --- /dev/null +++ b/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-fedora-locarchive.patch b/glibc-fedora-locarchive.patch new file mode 100644 index 0000000..9a702af --- /dev/null +++ b/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-fedora-manual-dircategory.patch b/glibc-fedora-manual-dircategory.patch new file mode 100644 index 0000000..f681620 --- /dev/null +++ b/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-fedora-nis-rh188246.patch b/glibc-fedora-nis-rh188246.patch new file mode 100644 index 0000000..9389901 --- /dev/null +++ b/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-fedora-nptl-linklibc.patch b/glibc-fedora-nptl-linklibc.patch new file mode 100644 index 0000000..350c350 --- /dev/null +++ b/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-fedora-nscd.patch b/glibc-fedora-nscd.patch new file mode 100644 index 0000000..96180d9 --- /dev/null +++ b/glibc-fedora-nscd.patch @@ -0,0 +1,91 @@ +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 --git a/glibc-fedora-nss-files-overflow-fix.patch b/glibc-fedora-nss-files-overflow-fix.patch new file mode 100644 index 0000000..523f82a --- /dev/null +++ b/glibc-fedora-nss-files-overflow-fix.patch @@ -0,0 +1,25 @@ +From f7001472d8d6ee9c5f83170c850a8a3b3ca0635f Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Fri, 20 Aug 2010 17:04:03 +0200 +Subject: [PATCH] Fix overflow in nss files parser + +* nss/nss_files/files-XXX.c (internal_getent): Declare linebuflen +as size_t. + +--- + ChangeLog | 3 +++ + nss/nss_files/files-XXX.c | 4 ++-- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c +--- a/nss/nss_files/files-XXX.c ++++ b/nss/nss_files/files-XXX.c +@@ -189,7 +189,7 @@ internal_getent (struct STRUCTURE *result, + { + 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 --git a/glibc-fedora-path-vi.patch b/glibc-fedora-path-vi.patch new file mode 100644 index 0000000..44469d4 --- /dev/null +++ b/glibc-fedora-path-vi.patch @@ -0,0 +1,12 @@ +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 --git a/glibc-fedora-ppc-unwind.patch b/glibc-fedora-ppc-unwind.patch new file mode 100644 index 0000000..7e9b7ab --- /dev/null +++ b/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-fedora-pt_chown.patch b/glibc-fedora-pt_chown.patch new file mode 100644 index 0000000..f64f449 --- /dev/null +++ b/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-fedora-regcomp-sw11561.patch b/glibc-fedora-regcomp-sw11561.patch new file mode 100644 index 0000000..0edc04f --- /dev/null +++ b/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-fedora-s390-rh711330.patch b/glibc-fedora-s390-rh711330.patch new file mode 100644 index 0000000..d9eb36b --- /dev/null +++ b/glibc-fedora-s390-rh711330.patch @@ -0,0 +1,80 @@ +From 5a0546afb448a71cf045b980eb27c13bf5783920 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 9 Jun 2011 15:36:02 +0200 +Subject: [PATCH] Revert "Use .machine to prevent AS from complaining about + z9-109 instructions in iconv modules" + +This reverts commit 2739047682590b1df473401b4febf424f857fccf. +--- + ChangeLog | 7 ------- + sysdeps/s390/s390-64/utf16-utf32-z9.c | 5 +---- + sysdeps/s390/s390-64/utf8-utf16-z9.c | 5 +---- + sysdeps/s390/s390-64/utf8-utf32-z9.c | 5 +---- + 4 files changed, 3 insertions(+), 19 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 3ed77d0..90590d9 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -684,13 +684,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 +diff --git a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c +index 5bcaaae..14daf21 100644 +--- a/sysdeps/s390/s390-64/utf16-utf32-z9.c ++++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c +@@ -169,10 +169,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 --git a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c +index 812a42f..5f73f3c 100644 +--- a/sysdeps/s390/s390-64/utf8-utf16-z9.c ++++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c +@@ -151,10 +151,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 --git a/sysdeps/s390/s390-64/utf8-utf32-z9.c b/sysdeps/s390/s390-64/utf8-utf32-z9.c +index 0ffd848..17ef8bc 100644 +--- a/sysdeps/s390/s390-64/utf8-utf32-z9.c ++++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c +@@ -155,10 +155,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 --git a/glibc-fedora-streams-rh436349.patch b/glibc-fedora-streams-rh436349.patch new file mode 100644 index 0000000..44b9195 --- /dev/null +++ b/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-fedora-strict-aliasing.patch b/glibc-fedora-strict-aliasing.patch new file mode 100644 index 0000000..26f111e --- /dev/null +++ b/glibc-fedora-strict-aliasing.patch @@ -0,0 +1,91 @@ +From 96aefb90e843648812d1832789f4a88ea5350605 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Tue, 25 May 2010 15:09:20 +0200 +Subject: [PATCH] Avoid strict-aliasing issues + +--- + elf/Makefile | 1 + + inet/Makefile | 2 ++ + nis/Makefile | 2 ++ + nss/Makefile | 1 + + resolv/Makefile | 1 + + sunrpc/Makefile | 4 ++++ + sysdeps/powerpc/powerpc64/elf/Makefile | 2 ++ + 7 files changed, 13 insertions(+), 0 deletions(-) + +--- 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 +--- 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 +--- 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) \ +--- 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) + +--- 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 +--- a/sunrpc/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/sunrpc/Makefile 2012-06-07 12:15:21.825318645 -0600 +@@ -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 +--- 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-gmon-start.c += -fno-strict-aliasing ++ + ifeq ($(subdir),csu) + sysdep_routines += hp-timing + elide-routines.os += hp-timing diff --git a/glibc-fedora-test-debug-gnuc-compat.patch b/glibc-fedora-test-debug-gnuc-compat.patch new file mode 100644 index 0000000..e10ff7c --- /dev/null +++ b/glibc-fedora-test-debug-gnuc-compat.patch @@ -0,0 +1,31 @@ +From 8c508c82e7ded8bb87e2784e25be9d9f8871d6b9 Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Mon, 15 Nov 2004 13:15:02 +0000 +Subject: [PATCH] Restore change unintentionally killed during merge. + +--- + debug/tst-chk1.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/debug/tst-chk1.c b/debug/tst-chk1.c +index 37320c3..0e5ba88 100644 +--- a/debug/tst-chk1.c ++++ b/debug/tst-chk1.c +@@ -244,7 +244,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 +359,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 --git a/glibc-fedora-test-debug-gnuc-hack.patch b/glibc-fedora-test-debug-gnuc-hack.patch new file mode 100644 index 0000000..977bd76 --- /dev/null +++ b/glibc-fedora-test-debug-gnuc-hack.patch @@ -0,0 +1,22 @@ +From e818d7d5034bd33373aebf570402abdb8e434f6e Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Sat, 19 Mar 2005 20:18:00 +0000 +Subject: [PATCH] Updated to fedora-glibc-20050319T1907 + +--- + debug/tst-chk1.c | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 229 insertions(+), 5 deletions(-) + +diff --git a/debug/tst-chk1.c b/debug/tst-chk1.c +--- a/debug/tst-chk1.c ++++ b/debug/tst-chk1.c +@@ -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 diff --git a/glibc-fedora-tls-offset-rh731228.patch b/glibc-fedora-tls-offset-rh731228.patch new file mode 100644 index 0000000..8ad88cb --- /dev/null +++ b/glibc-fedora-tls-offset-rh731228.patch @@ -0,0 +1,24 @@ +From a45bd0d9682db986191b075e64bcacd038af5993 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 1 Sep 2011 10:45:00 +0200 +Subject: [PATCH] Don't treat tls_offset == 1 as forced dynamic + +* include/link.h (FORCED_DYNAMIC_TLS_OFFSET) [NO_TLS_OFFSET == 0]: +Change to -1. + +--- + ChangeLog | 5 +++++ + include/link.h | 2 +- + 2 files changed, 6 insertions(+), 1 deletions(-) + +--- a/include/link.h ++++ b/include/link.h +@@ -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 --git a/glibc-fedora-uname-getrlimit.patch b/glibc-fedora-uname-getrlimit.patch new file mode 100644 index 0000000..86383d4 --- /dev/null +++ b/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-fedora-vfprintf-sw6530.patch b/glibc-fedora-vfprintf-sw6530.patch new file mode 100644 index 0000000..f4dcc40 --- /dev/null +++ b/glibc-fedora-vfprintf-sw6530.patch @@ -0,0 +1,62 @@ +From 8a34866d978e4281d69104372056ba0211d1373a Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Tue, 31 Aug 2010 12:20:05 +0200 +Subject: [PATCH] Don't parse %s format argument as multibyte string + +[BZ #6530] +* stdio-common/vfprintf.c (process_string_arg): Revert 2000-07-22 +change. + +--- + ChangeLog | 4 ++++ + stdio-common/vfprintf.c | 40 ++++------------------------------------ + 2 files changed, 8 insertions(+), 36 deletions(-) + +--- a/stdio-common/vfprintf.c ++++ b/stdio-common/vfprintf.c +@@ -1168,42 +1168,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) + 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 the end 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 --git a/glibc-fedora.patch b/glibc-fedora.patch deleted file mode 100644 index 4eb3c31..0000000 --- a/glibc-fedora.patch +++ /dev/null @@ -1,2102 +0,0 @@ -diff -Nrup a/ChangeLog b/ChangeLog ---- a/ChangeLog 2012-08-13 13:12:18.000000000 -0600 -+++ b/ChangeLog 2012-08-13 13:31:50.488136763 -0600 -@@ -14271,6 +14276,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. -@@ -15076,6 +15086,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 -@@ -15207,6 +15225,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 -@@ -15829,6 +15851,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] -@@ -16106,13 +16135,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 -@@ -16410,6 +16432,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 -@@ -16626,6 +16652,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] -@@ -17313,6 +17345,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. -@@ -18105,6 +18150,16 @@ - 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/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 -@@ -18157,6 +18212,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-08-13 13:12:18.000000000 -0600 -+++ b/ChangeLog.15 2012-08-13 13:31:50.490136755 -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-08-13 13:12:18.000000000 -0600 -+++ b/ChangeLog.16 2012-08-13 13:31:50.510136674 -0600 -@@ -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-08-13 13:12:18.000000000 -0600 -+++ b/ChangeLog.17 2012-08-13 13:31:50.516136649 -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/. -@@ -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/csu/elf-init.c b/csu/elf-init.c ---- a/csu/elf-init.c 2012-08-13 13:12:18.000000000 -0600 -+++ b/csu/elf-init.c 2012-08-13 13:31:50.522136626 -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-08-13 13:12:18.000000000 -0600 -+++ b/debug/tst-chk1.c 2012-08-13 13:31:50.523136621 -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-08-13 13:12:18.000000000 -0600 -+++ b/elf/Makefile 2012-08-13 13:31:50.524136617 -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-08-13 13:12:18.000000000 -0600 -+++ b/elf/dl-init.c 2012-08-13 13:31:50.525136613 -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-08-13 13:12:18.000000000 -0600 -+++ b/elf/dl-load.c 2012-08-13 13:31:50.526136609 -0600 -@@ -250,8 +250,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; -@@ -280,12 +279,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; - } - -@@ -300,13 +293,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, '$'); -@@ -339,9 +329,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 (); -@@ -352,9 +349,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) -@@ -374,6 +371,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-08-13 13:12:18.000000000 -0600 -+++ b/elf/dl-support.c 2012-08-13 13:31:50.527136604 -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-08-13 13:12:18.000000000 -0600 -+++ b/elf/ldconfig.c 2012-08-13 13:31:50.528136599 -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-08-13 13:12:18.000000000 -0600 -+++ b/elf/ldd.bash.in 2012-08-13 13:31:50.529136595 -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-08-13 13:12:18.000000000 -0600 -+++ b/elf/rtld.c 2012-08-13 13:31:50.530136592 -0600 -@@ -107,7 +107,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 -@@ -117,7 +116,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). */ -@@ -932,10 +930,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) - { -@@ -1411,7 +1407,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. */ -@@ -2349,7 +2347,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-08-13 13:31:50.531136589 -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-08-13 13:31:50.532136585 -0600 -@@ -0,0 +1 @@ -+#include -diff -Nrup a/include/link.h b/include/link.h ---- a/include/link.h 2012-08-13 13:12:18.000000000 -0600 -+++ b/include/link.h 2012-08-13 13:31:50.533136581 -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-08-13 13:12:18.000000000 -0600 -+++ b/include/sys/resource.h 2012-08-13 13:31:50.533136581 -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-08-13 13:12:18.000000000 -0600 -+++ b/inet/Makefile 2012-08-13 13:31:50.534136577 -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-08-13 13:12:18.000000000 -0600 -+++ b/intl/locale.alias 2012-08-13 13:31:50.535136573 -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/locale/iso-4217.def b/locale/iso-4217.def ---- a/locale/iso-4217.def 2012-08-13 13:12:18.000000000 -0600 -+++ b/locale/iso-4217.def 2012-08-13 13:31:50.536136569 -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-08-13 13:12:18.000000000 -0600 -+++ b/locale/programs/locarchive.c 2012-08-13 13:31:50.537136564 -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/Makefile b/localedata/Makefile ---- a/localedata/Makefile 2012-08-13 13:12:18.000000000 -0600 -+++ b/localedata/Makefile 2012-08-13 13:31:50.612136258 -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-08-13 13:12:18.000000000 -0600 -+++ b/localedata/SUPPORTED 2012-08-13 13:31:50.613136253 -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-08-13 13:12:18.000000000 -0600 -+++ b/localedata/locales/cy_GB 2012-08-13 13:31:50.614136249 -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-08-13 13:12:18.000000000 -0600 -+++ b/localedata/locales/en_GB 2012-08-13 13:31:50.614136249 -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-08-13 13:31:50.614136249 -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-08-13 13:12:18.000000000 -0600 -+++ b/localedata/locales/zh_TW 2012-08-13 13:31:50.614136249 -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-08-13 13:12:18.000000000 -0600 -+++ b/login/programs/pt_chown.c 2012-08-13 13:31:50.615136246 -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-08-13 13:12:18.000000000 -0600 -+++ b/manual/libc.texinfo 2012-08-13 13:31:50.615136246 -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-08-13 13:12:18.000000000 -0600 -+++ b/misc/sys/cdefs.h 2012-08-13 13:31:50.615136246 -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-08-13 13:12:18.000000000 -0600 -+++ b/nis/Makefile 2012-08-13 13:31:50.615136246 -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-08-13 13:12:18.000000000 -0600 -+++ b/nis/nss 2012-08-13 13:31:50.616136243 -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-08-13 13:12:18.000000000 -0600 -+++ b/nptl/ChangeLog 2012-08-13 13:31:50.619136231 -0600 -@@ -5655,6 +5655,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. -@@ -7729,6 +7734,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-08-13 13:12:18.000000000 -0600 -+++ b/nptl/Makefile 2012-08-13 13:31:50.621136223 -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-08-13 13:12:18.000000000 -0600 -+++ b/nptl/Versions 2012-08-13 13:31:50.622136218 -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-08-13 13:12:18.000000000 -0600 -+++ b/nptl/nptl-init.c 2012-08-13 13:31:50.622136218 -0600 -@@ -404,7 +404,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-08-13 13:12:18.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-08-13 13:31:50.623136214 -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-08-13 13:31:50.623136214 -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-08-13 13:12:18.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-08-13 13:31:50.623136214 -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/nscd/nscd.conf b/nscd/nscd.conf ---- a/nscd/nscd.conf 2012-08-13 13:12:18.000000000 -0600 -+++ b/nscd/nscd.conf 2012-08-13 13:31:50.623136214 -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-08-13 13:12:18.000000000 -0600 -+++ b/nscd/nscd.init 2012-08-13 13:31:50.624136210 -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/nss/Makefile b/nss/Makefile ---- a/nss/Makefile 2012-08-13 13:12:18.000000000 -0600 -+++ b/nss/Makefile 2012-08-13 13:31:50.624136210 -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-08-13 13:12:18.000000000 -0600 -+++ b/nss/nss_files/files-XXX.c 2012-08-13 13:31:50.624136210 -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-08-13 13:12:18.000000000 -0600 -+++ b/posix/Makefile 2012-08-13 13:31:50.625136206 -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-08-13 13:12:18.000000000 -0600 -+++ b/posix/gai.conf 2012-08-13 13:31:50.625136206 -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-08-13 13:31:50.625136206 -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-08-13 13:12:18.000000000 -0600 -+++ b/posix/regcomp.c 2012-08-13 13:31:50.626136201 -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-08-13 13:12:18.000000000 -0600 -+++ b/resolv/Makefile 2012-08-13 13:31:50.628136192 -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-08-13 13:12:18.000000000 -0600 -+++ b/resource/getrlimit.c 2012-08-13 13:31:50.629136189 -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-08-13 13:12:18.000000000 -0600 -+++ b/stdio-common/vfprintf.c 2012-08-13 13:31:50.629136189 -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-08-13 13:12:18.000000000 -0600 -+++ b/streams/Makefile 2012-08-13 13:31:50.630136186 -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-08-13 13:12:18.000000000 -0600 -+++ b/sunrpc/Makefile 2012-08-13 13:31:50.631136182 -0600 -@@ -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/generic/dl-cache.h 2012-08-13 13:31:50.631136182 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/i386/Makefile 2012-08-13 13:31:50.632136178 -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 -Nrup a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile ---- a/sysdeps/i386/i686/Makefile 2012-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/i386/i686/Makefile 2012-08-13 13:31:50.632136178 -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-08-13 13:31:50.632136178 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/mach/hurd/getrlimit.c 2012-08-13 13:31:50.632136178 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-08-13 13:34:42.817465705 -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) - { - /* 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 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; -- /* 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 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) -@@ -1217,17 +1154,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; -@@ -1364,10 +1295,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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/powerpc/powerpc64/Makefile 2012-08-13 13:31:50.635136166 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c 2012-08-13 13:31:50.635136166 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c 2012-08-13 13:31:50.635136166 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c 2012-08-13 13:31:50.636136161 -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/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-08-13 13:31:50.637136157 -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/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-08-13 13:31:50.637136157 -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-08-13 13:31:50.637136157 -0600 -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include -+#else -+#include -+#endif -diff -Nrup a/sysdeps/unix/sysv/linux/paths.h b/sysdeps/unix/sysv/linux/paths.h ---- a/sysdeps/unix/sysv/linux/paths.h 2012-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/paths.h 2012-08-13 13:31:50.637136157 -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-08-13 13:12:18.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-08-13 13:31:50.638136153 -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.spec b/glibc.spec index 24f82f6..2d632bf 100644 --- a/glibc.spec +++ b/glibc.spec @@ -16,7 +16,7 @@ %else %define buildpower6 0 %endif -%define rtkaioarches %{ix86} x86_64 ia64 ppc ppc64 s390 s390x +%define rtkaioarches %{ix86} x86_64 ppc ppc64 s390 s390x %define biarcharches %{ix86} x86_64 ppc ppc64 s390 s390x %define debuginfocommonarches %{biarcharches} alpha alphaev6 %define multiarcharches ppc ppc64 %{ix86} x86_64 %{sparc} @@ -58,9 +58,6 @@ Source1: %{glibcsrcdir}-fedora.tar.gz # # Patches that are highly unlikely to ever be accepated upstream. # -# Still needs to be broken down into individual patches -Patch0000: %{name}-fedora.patch - # Is this still necessary, if so, it needs to go upstream Patch0001: %{name}-stap.patch @@ -98,6 +95,49 @@ Patch0010: %{name}-stap-libm.patch # Needs to be sent upstream Patch0029: %{name}-rh841318.patch +# All these were from the glibc-fedora.patch mega-patch and need another +# round of reviewing. Ideally they'll either be submitted upstream or +# dropped. + +Patch0031: %{name}-fedora-__libc_multiple_libcs.patch +Patch0032: %{name}-fedora-cdefs-gnuc.patch +Patch0033: %{name}-fedora-elf-ORIGIN.patch +Patch0034: %{name}-fedora-elf-init-hidden_undef.patch +Patch0035: %{name}-fedora-elf-rh737223.patch +Patch0036: %{name}-fedora-gai-canonical.patch +Patch0037: %{name}-fedora-gai-rfc1918.patch +Patch0038: %{name}-fedora-getconf.patch +Patch0039: %{name}-fedora-getrlimit-PLT.patch +Patch0040: %{name}-fedora-i386-tls-direct-seg-refs.patch +Patch0041: %{name}-fedora-i686-nopl.patch +Patch0042: %{name}-fedora-include-bits-ldbl.patch +Patch0043: %{name}-fedora-ldd.patch +Patch0044: %{name}-fedora-linux-tcsetattr.patch +Patch0045: %{name}-fedora-locale-euro.patch +Patch0046: %{name}-fedora-localedata-locales-fixes.patch +Patch0047: %{name}-fedora-localedata-no_NO.patch +Patch0048: %{name}-fedora-localedata-rh61908.patch +Patch0049: %{name}-fedora-localedef.patch +Patch0050: %{name}-fedora-locarchive.patch +Patch0051: %{name}-fedora-manual-dircategory.patch +Patch0052: %{name}-fedora-nis-rh188246.patch +Patch0053: %{name}-fedora-nptl-linklibc.patch +Patch0054: %{name}-fedora-nscd.patch +Patch0055: %{name}-fedora-nss-files-overflow-fix.patch +Patch0056: %{name}-fedora-path-vi.patch +Patch0057: %{name}-fedora-ppc-unwind.patch +Patch0058: %{name}-fedora-pt_chown.patch +Patch0059: %{name}-fedora-regcomp-sw11561.patch +Patch0060: %{name}-fedora-s390-rh711330.patch +Patch0061: %{name}-fedora-streams-rh436349.patch +Patch0062: %{name}-fedora-strict-aliasing.patch +Patch0063: %{name}-fedora-test-debug-gnuc-compat.patch +Patch0064: %{name}-fedora-test-debug-gnuc-hack.patch +Patch0065: %{name}-fedora-tls-offset-rh731228.patch +Patch0066: %{name}-fedora-uname-getrlimit.patch +Patch0067: %{name}-fedora-vfprintf-sw6530.patch + + # # Patches from upstream # @@ -132,7 +172,7 @@ Patch2020: %{name}-rh791161.patch # Upstream BZ 9954 Patch2021: %{name}-rh739743.patch -#Upstream BZ 13818 +# Upstream BZ 13818 Patch2022: %{name}-rh800224.patch # Upstream BZ 14247 @@ -153,7 +193,7 @@ Patch2027: %{name}-rh819430.patch # See http://sourceware.org/ml/libc-alpha/2012-06/msg00074.html Patch2028: %{name}-rh767693-2.patch -# Upstrem BZ 14459 +# Upstream BZ 14459 Patch2030: %{name}-rh847718.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -376,7 +416,6 @@ package or when debugging this package. %prep %setup -q -n %{glibcsrcdir} -b1 -%patch0000 -E -p1 %patch0001 -E -p1 %patch0002 -p1 %patch0003 -p1 @@ -407,6 +446,43 @@ package or when debugging this package. %patch2028 -p1 %patch0029 -p1 %patch2030 -p1 +%patch0031 -p1 +%patch0032 -p1 +%patch0033 -p1 +%patch0034 -p1 +%patch0035 -p1 +%patch0036 -p1 +%patch0037 -p1 +%patch0038 -p1 +%patch0039 -p1 +%patch0040 -p1 +%patch0041 -p1 +%patch0042 -p1 +%patch0043 -p1 +%patch0044 -p1 +%patch0045 -p1 +%patch0046 -p1 +%patch0047 -p1 +%patch0048 -p1 +%patch0049 -p1 +%patch0050 -p1 +%patch0051 -p1 +%patch0052 -p1 +%patch0053 -p1 +%patch0054 -p1 +%patch0055 -p1 +%patch0056 -p1 +%patch0057 -p1 +%patch0058 -p1 +%patch0059 -p1 +%patch0060 -p1 +%patch0061 -p1 +%patch0062 -p1 +%patch0063 -p1 +%patch0064 -p1 +%patch0065 -p1 +%patch0066 -p1 +%patch0067 -p1 # On powerpc32, hp timing is only available in power4/power6 # libs, not in base, so pre-power4 dynamic linker is incompatible @@ -863,13 +939,6 @@ cp posix/gai.conf documentation/ mkdir -p $RPM_BUILD_ROOT/lib ln -sf /%{_lib}/ld64.so.1 $RPM_BUILD_ROOT/lib/ld64.so.1 %endif -%ifarch ia64 -%if "%{_lib}" == "lib64" -# Compatibility symlink -mkdir -p $RPM_BUILD_ROOT/lib -ln -sf /%{_lib}/ld-linux-ia64.so.2 $RPM_BUILD_ROOT/lib/ld-linux-ia64.so.2 -%endif -%endif # Leave a compatibility symlink for the dynamic loader on armhfp targets, # at least until the world gets rebuilt @@ -1206,11 +1275,6 @@ rm -f *.filelist* %ifarch s390x /lib/ld64.so.1 %endif -%ifarch ia64 -%if "%{_lib}" == "lib64" -/lib/ld-linux-ia64.so.2 -%endif -%endif %ifarch armv7hl armv7hnl /lib/ld-linux.so.3 %endif @@ -1292,8 +1356,10 @@ rm -f *.filelist* %changelog * Mon Aug 20 2012 Jeff Law - 2.16.90-3 - - Remove obsolete patches from glibc-fedora.patch. Thanks to + - Remove obsolete patches from glibc-fedora.patch. Explode + remaining patches into distinct patchfiles. Thanks to Dmitry V. Levin for identifying them! + Drop ia64 specific patches and specfile fragments * Wed Aug 15 2012 Jeff Law - 2.16.90-2 - Fix integer overflow leading to buffer overflow in strto* (#847718)