]> git.pld-linux.org Git - packages/glibc.git/commitdiff
- patch needed to build glibc on amd64 with gcc-3.3.2
authorJacek Konieczny <jajcus@pld-linux.org>
Thu, 18 Dec 2003 13:52:37 +0000 (13:52 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    glibc-soinit-EH_FRAME.patch -> 1.1

glibc-soinit-EH_FRAME.patch [new file with mode: 0644]

diff --git a/glibc-soinit-EH_FRAME.patch b/glibc-soinit-EH_FRAME.patch
new file mode 100644 (file)
index 0000000..6ca6259
--- /dev/null
@@ -0,0 +1,114 @@
+diff -durN glibc-2.3.2.orig/elf/soinit.c glibc-2.3.2/elf/soinit.c
+--- glibc-2.3.2.orig/elf/soinit.c      2001-11-16 00:09:20.000000000 +0100
++++ glibc-2.3.2/elf/soinit.c   2004-12-18 11:21:59.521615024 +0100
+@@ -25,7 +25,7 @@
+ }
+ #ifdef HAVE_DWARF2_UNWIND_INFO
+-static char __EH_FRAME_BEGIN__[]
++const static char __EH_FRAME_BEGIN__[]
+      __attribute__ ((section (".eh_frame")))
+      = { };
+ # ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
+diff -durN glibc-2.3.2.orig/elf/soinit.c~ glibc-2.3.2/elf/soinit.c~
+--- glibc-2.3.2.orig/elf/soinit.c~     1970-01-01 01:00:00.000000000 +0100
++++ glibc-2.3.2/elf/soinit.c~  2001-11-16 00:09:20.000000000 +0100
+@@ -0,0 +1,98 @@
++/* Initializer module for building the ELF shared C library.  This file and
++   sofini.c do the work normally done by crtbeginS.o and crtendS.o, to wrap
++   the `.ctors' and `.dtors' sections so the lists are terminated, and
++   calling those lists of functions.  */
++
++#include <libc-internal.h>
++#include <stdlib.h>
++
++#ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
++# include <gccframe.h>
++#endif
++
++static void (*const __CTOR_LIST__[1]) (void)
++     __attribute__ ((section (".ctors")))
++     = { (void (*) (void)) -1 };
++static void (*const __DTOR_LIST__[1]) (void)
++     __attribute__ ((section (".dtors")))
++     = { (void (*) (void)) -1 };
++
++static inline void
++run_hooks (void (*const list[]) (void))
++{
++  while (*++list)
++    (**list) ();
++}
++
++#ifdef HAVE_DWARF2_UNWIND_INFO
++static char __EH_FRAME_BEGIN__[]
++     __attribute__ ((section (".eh_frame")))
++     = { };
++# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
++extern void __register_frame_info (const void *, struct object *);
++extern void __register_frame_info_bases (const void *, struct object *,
++                                       void *, void *);
++extern void __deregister_frame_info (const void *);
++extern void __deregister_frame_info_bases (const void *);
++# else
++extern void __register_frame (const void *);
++extern void __deregister_frame (const void *);
++# endif
++#endif
++
++/* This function will be called from _init in init-first.c.  */
++void
++__libc_global_ctors (void)
++{
++  /* Call constructor functions.  */
++  run_hooks (__CTOR_LIST__);
++
++#ifdef HAVE_DWARF2_UNWIND_INFO
++# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
++  {
++    static struct object ob;
++#  if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA
++    void *tbase, *dbase;
++
++#   ifdef CRT_GET_RFIB_TEXT
++    CRT_GET_RFIB_TEXT (tbase);
++#   else
++    tbase = NULL;
++#   endif
++#   ifdef CRT_GET_RFIB_DATA
++    CRT_GET_RFIB_DATA (dbase);
++#   else
++    dbase = NULL;
++#   endif
++    __register_frame_info_bases (__EH_FRAME_BEGIN__, &ob, tbase, dbase);
++#  else
++    __register_frame_info (__EH_FRAME_BEGIN__, &ob);
++#  endif
++  }
++# else
++  __register_frame (__EH_FRAME_BEGIN__);
++# endif
++#endif
++}
++
++
++/* This function becomes the DT_FINI termination function
++   for the C library.  */
++void _fini (void) __attribute__ ((section (".fini"))); /* Just for kicks.  */
++void
++_fini (void)
++{
++  /* Call destructor functions.  */
++  run_hooks (__DTOR_LIST__);
++#ifdef HAVE_DWARF2_UNWIND_INFO
++# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
++#  if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA
++  __deregister_frame_info_bases (__EH_FRAME_BEGIN__);
++#  else
++  __deregister_frame_info (__EH_FRAME_BEGIN__);
++#  endif
++# else
++  __deregister_frame (__EH_FRAME_BEGIN__);
++# endif
++#endif
++}
This page took 0.041902 seconds and 4 git commands to generate.