* elf/dl-load.c (_dl_init_paths): Don't use strdupa in function
[kopensolaris-gnu/glibc.git] / elf / soinit.c
index 7db054e..42e6cf1 100644 (file)
@@ -3,6 +3,12 @@
    the `.ctors' and `.dtors' sections so the lists are terminated, and
    calling those lists of functions.  */
 
+#include <libc-internal.h>
+
+#ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
+# include <gccframe.h>
+#endif
+
 static void (*const __CTOR_LIST__[1]) (void)
      __attribute__ ((section (".ctors")))
      = { (void (*) (void)) -1 };
@@ -22,16 +28,6 @@ static char __EH_FRAME_BEGIN__[]
      __attribute__ ((section (".eh_frame")))
      = { };
 # ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
-/* This must match what's in frame.h in gcc. How can one do that? */
-struct object
-{
-  void *pc_begin;
-  void *pc_end;
-  void *fde_begin;
-  void *fde_array;
-  __SIZE_TYPE__ count;
-  struct object *next;
-};
 extern void __register_frame_info (const void *, struct object *);
 extern void __deregister_frame_info (const void *);
 # else
@@ -49,13 +45,14 @@ __libc_global_ctors (void)
 {
   /* Call constructor functions.  */
   run_hooks (__CTOR_LIST__);
-#ifdef HAVE_DWARF2_UNWIND_INFO
-# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
+
   /* Initialize the thread library at least a bit since the libgcc functions
      are using thread functions if these are available.  */
   if (__pthread_initialize_minimal)
     __pthread_initialize_minimal ();
 
+#ifdef HAVE_DWARF2_UNWIND_INFO
+# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
   {
     static struct object ob;
     __register_frame_info (__EH_FRAME_BEGIN__, &ob);