packages: glibc/glibc.spec, glibc/glibc-bug-12343.patch (NEW) - fix build w...

arekm arekm at pld-linux.org
Sat Jan 8 20:25:35 CET 2011


Author: arekm                        Date: Sat Jan  8 19:25:35 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- fix build with new binutils (ld-linux was segfaulting)

---- Files affected:
packages/glibc:
   glibc.spec (1.886 -> 1.887) , glibc-bug-12343.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/glibc/glibc.spec
diff -u packages/glibc/glibc.spec:1.886 packages/glibc/glibc.spec:1.887
--- packages/glibc/glibc.spec:1.886	Sun Dec 19 21:45:35 2010
+++ packages/glibc/glibc.spec	Sat Jan  8 20:25:30 2011
@@ -77,6 +77,7 @@
 Patch29:	%{name}-arm-alignment-fix.patch
 Patch30:	%{name}-static-glro-init.patch
 Patch31:	%{name}-origin.patch
+Patch32:	%{name}-bug-12343.patch
 URL:		http://www.gnu.org/software/libc/
 %{?with_selinux:BuildRequires:	audit-libs-devel}
 BuildRequires:	autoconf
@@ -924,6 +925,7 @@
 %patch29 -p1
 %patch30 -p1
 %patch31 -p1
+%patch32 -p1
 
 # cleanup backups after patching
 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
@@ -1688,6 +1690,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.887  2011/01/08 19:25:30  arekm
+- fix build with new binutils (ld-linux was segfaulting)
+
 Revision 1.886  2010/12/19 20:45:35  qboosh
 - ports 2.12.1
 

================================================================
Index: packages/glibc/glibc-bug-12343.patch
diff -u /dev/null packages/glibc/glibc-bug-12343.patch:1.1
--- /dev/null	Sat Jan  8 20:25:35 2011
+++ packages/glibc/glibc-bug-12343.patch	Sat Jan  8 20:25:30 2011
@@ -0,0 +1,152 @@
+From 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 Mon Sep 17 00:00:00 2001
+From: H.J. Lu <hongjiu.lu at intel.com>
+Date: Fri, 24 Dec 2010 20:14:37 -0500
+Subject: [PATCH 1/1] Remove `.ctors' and `.dtors' output sections
+
+---
+ ChangeLog                              |   15 ++
+ config.h.in                            |    3 +
+ configure                              |  334 +++++++++++++++++---------------
+ configure.in                           |    2 +
+ elf/sofini.c                           |    2 +
+ elf/soinit.c                           |    2 +
+ sysdeps/i386/init-first.c              |    2 +
+ sysdeps/mach/hurd/i386/init-first.c    |    2 +-
+ sysdeps/mach/hurd/powerpc/init-first.c |    2 +-
+ sysdeps/sh/init-first.c                |    2 +
+ sysdeps/unix/sysv/linux/init-first.c   |    2 +-
+ 11 files changed, 209 insertions(+), 159 deletions(-)
+
+diff --git a/config.h.in b/config.h.in
+index 18bf01a..9e797eb 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -201,6 +201,9 @@
+ /* Define if multi-arch DSOs should be generated.  */
+ #undef USE_MULTIARCH
+ 
++/* Define if `.ctors' and `.dtors' sections shouldn't be used.  */
++#undef	NO_CTORS_DTORS_SECTIONS
++
+ /*
+  */
+ 
+diff --git a/configure.in b/configure.in
+index d8cd5f1..ad25b9b 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1497,6 +1497,8 @@ EOF
+   rm -f conftest*])
+   if test $libc_cv_initfini_array != yes; then
+     AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
++  elif AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep SORT_BY_INIT_PRIORITY 1>&AS_MESSAGE_LOG_FD]); then
++    AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
+   fi
+ 
+   AC_CACHE_CHECK(for libunwind-support in compiler,
+diff --git a/elf/sofini.c b/elf/sofini.c
+index 5e06f0c..13e74b7 100644
+--- a/elf/sofini.c
++++ b/elf/sofini.c
+@@ -1,12 +1,14 @@
+ /* Finalizer module for ELF shared C library.  This provides terminating
+    null pointer words in the `.ctors' and `.dtors' sections.  */
+ 
++#ifndef NO_CTORS_DTORS_SECTIONS
+ static void (*const __CTOR_END__[1]) (void)
+      __attribute__ ((used, section (".ctors")))
+      = { 0 };
+ static void (*const __DTOR_END__[1]) (void)
+      __attribute__ ((used, section (".dtors")))
+      = { 0 };
++#endif
+ 
+ /* Terminate the frame unwind info section with a 4byte 0 as a sentinel;
+    this would be the 'length' field in a real FDE.  */
+diff --git a/elf/soinit.c b/elf/soinit.c
+index 6fecbb5..1db676a 100644
+--- a/elf/soinit.c
++++ b/elf/soinit.c
+@@ -3,6 +3,7 @@
+    the `.ctors' and `.dtors' sections so the lists are terminated, and
+    calling those lists of functions.  */
+ 
++#ifndef NO_CTORS_DTORS_SECTIONS
+ #include <libc-internal.h>
+ #include <stdlib.h>
+ 
+@@ -40,3 +41,4 @@ __libc_fini (void)
+ 
+ void (*_fini_ptr) (void) __attribute__ ((section (".fini_array")))
+      = &__libc_fini;
++#endif
+diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c
+index c6355a8..2af042f 100644
+--- a/sysdeps/i386/init-first.c
++++ b/sysdeps/i386/init-first.c
+@@ -59,7 +59,9 @@ _init (int argc, ...)
+ {
+   init (&argc);
+ 
++#ifndef NO_CTORS_DTORS_SECTIONS
+   __libc_global_ctors ();
++#endif
+ }
+ #endif
+ 
+diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c
+index f9a7a58..60823bd 100644
+--- a/sysdeps/mach/hurd/i386/init-first.c
++++ b/sysdeps/mach/hurd/i386/init-first.c
+@@ -92,7 +92,7 @@ posixland_init (int argc, char **argv, char **envp)
+   __getopt_clean_environment (envp);
+ #endif
+ 
+-#ifdef SHARED
++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS
+   __libc_global_ctors ();
+ #endif
+ }
+diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c
+index 20fa1d4..21b5054 100644
+--- a/sysdeps/mach/hurd/powerpc/init-first.c
++++ b/sysdeps/mach/hurd/powerpc/init-first.c
+@@ -82,7 +82,7 @@ posixland_init (int argc, char **argv, char **envp)
+   __getopt_clean_environment (__environ);
+ #endif
+ 
+-#ifdef SHARED
++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS
+   __libc_global_ctors ();
+ #endif
+ }
+diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c
+index d816625..1f3a821 100644
+--- a/sysdeps/sh/init-first.c
++++ b/sysdeps/sh/init-first.c
+@@ -59,7 +59,9 @@ _init (int argc, ...)
+ {
+   init (&argc);
+ 
++#ifndef NO_CTORS_DTORS_SECTIONS
+   __libc_global_ctors ();
++#endif
+ }
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c
+index 7b2333d..a60212f 100644
+--- a/sysdeps/unix/sysv/linux/init-first.c
++++ b/sysdeps/unix/sysv/linux/init-first.c
+@@ -93,7 +93,7 @@ _init (int argc, char **argv, char **envp)
+   __getopt_clean_environment (envp);
+ #endif
+ 
+-#ifdef SHARED
++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS
+   __libc_global_ctors ();
+ #endif
+ }
+-- 
+1.7.3.4
+
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/glibc/glibc.spec?r1=1.886&r2=1.887&f=u



More information about the pld-cvs-commit mailing list