Author: matthew
Date: 2011-10-07 13:50:51 -0600 (Fri, 07 Oct 2011)
New Revision: 2319
Added:
trunk/glibc/glibc-2.14.1-cpuid-1.patch
trunk/glibc/glibc-2.14.1-fixes-1.patch
trunk/glibc/glibc-2.14.1-gcc_fix-1.patch
Log:
Add patches for new upstream version of Glibc.
Added: trunk/glibc/glibc-2.14.1-cpuid-1.patch
===================================================================
--- trunk/glibc/glibc-2.14.1-cpuid-1.patch (rev 0)
+++ trunk/glibc/glibc-2.14.1-cpuid-1.patch 2011-10-07 19:50:51 UTC (rev
2319)
@@ -0,0 +1,21 @@
+Submitted By: Bruce Dubbs <bdubbs_at_linuxfromscratch_dot_org>
+Date: 2011-06-28
+Initial Package Version: 2.14
+Upstream Status: Not Submitted
+Origin: Bryan Kadzban
+Description: Fixes the following build problem with GCC-4.5.0:
+
+diff -Naur glibc-2.14/sysdeps/i386/configure
glibc-2.14-patched/sysdeps/i386/configure
+--- glibc-2.14/sysdeps/i386/configure 2011-05-30 21:12:33.000000000 -0700
++++ glibc-2.14-patched/sysdeps/i386/configure 2011-06-04 18:35:09.000000000
-0700
+@@ -632,7 +632,9 @@
+ done
+
+
+-ac_fn_c_check_header_mongrel "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h"
"$ac_includes_default"
++ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "
++
++"
+ if test "x$ac_cv_header_cpuid_h" = x""yes; then :
+
+ else
Added: trunk/glibc/glibc-2.14.1-fixes-1.patch
===================================================================
--- trunk/glibc/glibc-2.14.1-fixes-1.patch (rev 0)
+++ trunk/glibc/glibc-2.14.1-fixes-1.patch 2011-10-07 19:50:51 UTC (rev
2319)
@@ -0,0 +1,159 @@
+Submitted By: Matt Burgess <matthew_at_linuxfromscratch_dot_org>
+Date: 2011-10-07
+Initial Package Version: 2.14.1
+Upstream Status: From upstream
+Origin: Matt Burgess
+Description: Fixes Firefox crashes and a bug when programs link to
+ SDL.
+
+diff -Naur glibc-2.14.1.orig/elf/dl-close.c glibc-2.14.1/elf/dl-close.c
+--- glibc-2.14.1.orig/elf/dl-close.c 2011-10-07 09:48:55.000000000 +0000
++++ glibc-2.14.1/elf/dl-close.c 2011-10-07 19:43:10.346411120 +0000
+@@ -119,17 +119,8 @@
+ if (map->l_direct_opencount > 0 || map->l_type != lt_loaded
+ || dl_close_state != not_pending)
+ {
+- if (map->l_direct_opencount == 0)
+- {
+- if (map->l_type == lt_loaded)
+- dl_close_state = rerun;
+- else if (map->l_type == lt_library)
+- {
+- struct link_map **oldp = map->l_initfini;
+- map->l_initfini = map->l_orig_initfini;
+- _dl_scope_free (oldp);
+- }
+- }
++ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded)
++ dl_close_state = rerun;
+
+ /* There are still references to this object. Do nothing more. */
+ if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
+diff -Naur glibc-2.14.1.orig/elf/dl-deps.c glibc-2.14.1/elf/dl-deps.c
+--- glibc-2.14.1.orig/elf/dl-deps.c 2011-10-07 09:48:55.000000000 +0000
++++ glibc-2.14.1/elf/dl-deps.c 2011-10-07 19:43:10.348432639 +0000
+@@ -478,6 +478,7 @@
+ nneeded * sizeof needed[0]);
+ atomic_write_barrier ();
+ l->l_initfini = l_initfini;
++ l->l_free_initfini = 1;
+ }
+
+ /* If we have no auxiliary objects just go on to the next map. */
+@@ -678,6 +679,7 @@
+ l_initfini[nlist] = NULL;
+ atomic_write_barrier ();
+ map->l_initfini = l_initfini;
++ map->l_free_initfini = 1;
+ if (l_reldeps != NULL)
+ {
+ atomic_write_barrier ();
+@@ -686,7 +688,7 @@
+ _dl_scope_free (old_l_reldeps);
+ }
+ if (old_l_initfini != NULL)
+- map->l_orig_initfini = old_l_initfini;
++ _dl_scope_free (old_l_initfini);
+
+ if (errno_reason)
+ _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
+diff -Naur glibc-2.14.1.orig/elf/dl-libc.c glibc-2.14.1/elf/dl-libc.c
+--- glibc-2.14.1.orig/elf/dl-libc.c 2011-10-07 09:48:55.000000000 +0000
++++ glibc-2.14.1/elf/dl-libc.c 2011-10-07 19:43:10.352411141 +0000
+@@ -279,6 +279,10 @@
+ if (! old->dont_free)
+ free (old);
+ }
++
++ /* Free the initfini dependency list. */
++ if (l->l_free_initfini)
++ free (l->l_initfini);
+ }
+
+ if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0
+diff -Naur glibc-2.14.1.orig/elf/rtld.c glibc-2.14.1/elf/rtld.c
+--- glibc-2.14.1.orig/elf/rtld.c 2011-10-07 09:48:55.000000000 +0000
++++ glibc-2.14.1/elf/rtld.c 2011-10-07 19:43:10.355406263 +0000
+@@ -2263,6 +2263,7 @@
+ lnp->dont_free = 1;
+ lnp = lnp->next;
+ }
++ l->l_free_initfini = 0;
+
+ if (l != &GL(dl_rtld_map))
+ _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
+diff -Naur glibc-2.14.1.orig/include/link.h glibc-2.14.1/include/link.h
+--- glibc-2.14.1.orig/include/link.h 2011-10-07 09:48:55.000000000 +0000
++++ glibc-2.14.1/include/link.h 2011-10-07 19:43:10.357462703 +0000
+@@ -192,6 +192,9 @@
+ during LD_TRACE_PRELINKING=1
+ contains any DT_SYMBOLIC
+ libraries. */
++ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be
++ freed, ie. not allocated with
++ the dummy malloc in ld.so. */
+
+ /* Collected information about own RPATH directories. */
+ struct r_search_path_struct l_rpath_dirs;
+@@ -240,9 +243,6 @@
+
+ /* List of object in order of the init and fini calls. */
+ struct link_map **l_initfini;
+- /* The init and fini list generated at startup, saved when the
+- object is also loaded dynamically. */
+- struct link_map **l_orig_initfini;
+
+ /* List of the dependencies introduced through symbol binding. */
+ struct link_map_reldeps
+diff -Naur glibc-2.14.1.orig/resolv/res_query.c glibc-2.14.1/resolv/res_query.c
+--- glibc-2.14.1.orig/resolv/res_query.c 2011-10-07 09:48:55.000000000
+0000
++++ glibc-2.14.1/resolv/res_query.c 2011-10-07 19:43:10.361412711 +0000
+@@ -122,6 +122,7 @@
+ int *resplen2)
+ {
+ HEADER *hp = (HEADER *) answer;
++ HEADER *hp2;
+ int n, use_malloc = 0;
+ u_int oflags = statp->_flags;
+
+@@ -239,26 +240,25 @@
+ /* __libc_res_nsend might have reallocated the buffer. */
+ hp = (HEADER *) *answerp;
+
+- /* We simplify the following tests by assigning HP to HP2. It
+- is easy to verify that this is the same as ignoring all
+- tests of HP2. */
+- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp;
+-
+- if (n < (int) sizeof (HEADER) && answerp2 != NULL
+- && *resplen2 > (int) sizeof (HEADER))
++ /* We simplify the following tests by assigning HP to HP2 or
++ vice versa. It is easy to verify that this is the same as
++ ignoring all tests of HP or HP2. */
++ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER))
+ {
+- /* Special case of partial answer. */
+- assert (hp != hp2);
+- hp = hp2;
++ hp2 = hp;
+ }
+- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER)
+- && n > (int) sizeof (HEADER))
++ else
+ {
+- /* Special case of partial answer. */
+- assert (hp != hp2);
+- hp2 = hp;
++ hp2 = (HEADER *) *answerp2;
++ if (n < (int) sizeof (HEADER))
++ {
++ hp = hp2;
++ }
+ }
+
++ /* Make sure both hp and hp2 are defined */
++ assert((hp != NULL) && (hp2 != NULL));
++
+ if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0)
+ && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) {
+ #ifdef DEBUG
Added: trunk/glibc/glibc-2.14.1-gcc_fix-1.patch
===================================================================
--- trunk/glibc/glibc-2.14.1-gcc_fix-1.patch (rev 0)
+++ trunk/glibc/glibc-2.14.1-gcc_fix-1.patch 2011-10-07 19:50:51 UTC (rev
2319)
@@ -0,0 +1,49 @@
+Submitted By: Matt Burgess <matthew_at_linuxfromscratch_dot_org>
+Date: 2010-04-18
+Initial Package Version: 2.11.1
+Upstream Status: Not Submitted
+Origin: http://www.eglibc.org/archives/patches/msg00073.html
+Description: Fixes the following build problem with GCC-4.5.0:
+
+/mnt/lfs/sources/libc-build/math/s_frexp.os.dt -MT
/mnt/lfs/sources/libc-build/math/s_frexp.os
+./sysdeps/i386/fpu/s_frexp.S: Assembler messages:
+./sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier for ".ifdef"
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first
unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first
unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first
unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first
unrecognized character is `.'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first
unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: expected comma after name `' in .size
directive
+./sysdeps/i386/fpu/s_frexp.S:66: Error: ".endif" without ".if"
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk `.get_pc_thunk.dx' after
expression
+make[2]: *** [/mnt/lfs/sources/libc-build/math/s_frexp.os] Error 1
+
+diff -Naur glibc-2.11.1.orig/nptl/sysdeps/pthread/pt-initfini.c
glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c
+--- glibc-2.11.1.orig/nptl/sysdeps/pthread/pt-initfini.c 2009-12-08
20:10:20.000000000 +0000
++++ glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c 2010-04-17
11:34:06.882681001 +0000
+@@ -45,6 +45,11 @@
+ /* Embed an #include to pull in the alignment and .end directives. */
+ asm ("\n#include \"defs.h\"");
+
++asm ("\n#if defined __i686 && defined __ASSEMBLER__");
++asm ("\n#undef __i686");
++asm ("\n#define __i686 __i686");
++asm ("\n#endif");
++
+ /* The initial common code ends here. */
+ asm ("\n/*@HEADER_ENDS*/");
+
+diff -Naur glibc-2.11.1.orig/sysdeps/unix/sysv/linux/i386/sysdep.h
glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h
+--- glibc-2.11.1.orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2009-12-08
20:10:20.000000000 +0000
++++ glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h 2010-04-17
11:34:06.882681001 +0000
+@@ -29,6 +29,10 @@
+ #include <dl-sysdep.h>
+ #include <tls.h>
+
++#if defined __i686 && defined __ASSEMBLER__
++#undef __i686
++#define __i686 __i686
++#endif
+
+ /* For Linux we can use the system call table in the header file
+ /usr/include/asm/unistd.h
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page