Remove trace of optional init_array/fini_array support.
authordrepper <drepper>
Sat, 5 Nov 2005 17:41:38 +0000 (17:41 +0000)
committerdrepper <drepper>
Sat, 5 Nov 2005 17:41:38 +0000 (17:41 +0000)
config.h.in
config.make.in
csu/elf-init.c
dlfcn/dlfcn.c
elf/soinit.c
sysdeps/ia64/elf/initfini.c

index 552523a..261ee73 100644 (file)
 /* Define if binutils support TLS handling.  */
 #undef HAVE_TLS_SUPPORT
 
-/* Define if the linker supports .preinit_array/.init_array/.fini_array
-   sections.  */
-#undef HAVE_INITFINI_ARRAY
-
 /* Define if the compiler's exception support is based on libunwind.  */
 #undef HAVE_CC_WITH_LIBUNWIND
 
index 3687507..e701212 100644 (file)
@@ -53,7 +53,6 @@ with-fp = @with_fp@
 with-cvs = @with_cvs@
 old-glibc-headers = @old_glibc_headers@
 unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
-have-initfini-array = @libc_cv_initfinit_array@
 have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
 enable-check-abi = @enable_check_abi@
 have-forced-unwind = @libc_cv_forced_unwind@
index 4343b8a..27eae15 100644 (file)
@@ -36,7 +36,7 @@
 
 #include <stddef.h>
 
-#ifdef HAVE_INITFINI_ARRAY
+
 /* These magic symbols are provided by the linker.  */
 extern void (*__preinit_array_start []) (int, char **, char **)
   attribute_hidden;
@@ -48,7 +48,7 @@ extern void (*__init_array_end []) (int, char **, char **)
   attribute_hidden;
 extern void (*__fini_array_start []) (void) attribute_hidden;
 extern void (*__fini_array_end []) (void) attribute_hidden;
-#endif
+
 
 /* These function symbols are provided for the .init/.fini section entry
    points automagically by the linker.  */
@@ -63,11 +63,10 @@ extern void _fini (void);
 void
 __libc_csu_init (int argc, char **argv, char **envp)
 {
-#ifdef HAVE_INITFINI_ARRAY
   /* For dynamically linked executables the preinit array is executed by
      the dynamic linker (before initializing any shared object.  */
 
-# ifndef LIBC_NONSHARED
+#ifndef LIBC_NONSHARED
   /* For static executables, preinit happens rights before init.  */
   {
     const size_t size = __preinit_array_end - __preinit_array_start;
@@ -75,19 +74,13 @@ __libc_csu_init (int argc, char **argv, char **envp)
     for (i = 0; i < size; i++)
       (*__preinit_array_start [i]) (argc, argv, envp);
   }
-# endif
 #endif
 
   _init ();
 
-#ifdef HAVE_INITFINI_ARRAY
-  {
-    const size_t size = __init_array_end - __init_array_start;
-    size_t i;
-    for (i = 0; i < size; i++)
+  const size_t size = __init_array_end - __init_array_start;
+  for (size_t i = 0; i < size; i++)
       (*__init_array_start [i]) (argc, argv, envp);
-  }
-#endif
 }
 
 /* This function should not be used anymore.  We run the executable's
@@ -97,11 +90,9 @@ void
 __libc_csu_fini (void)
 {
 #ifndef LIBC_NONSHARED
-# ifdef HAVE_INITFINI_ARRAY
   size_t i = __fini_array_end - __fini_array_start;
   while (i-- > 0)
     (*__fini_array_start [i]) ();
-# endif
 
   _fini ();
 #endif
index 8047150..1ee225b 100644 (file)
@@ -23,7 +23,7 @@
 int __dlfcn_argc attribute_hidden;
 char **__dlfcn_argv attribute_hidden;
 
-#ifdef HAVE_INITFINI_ARRAY
+
 static void
 init (int argc, char *argv[])
 {
@@ -33,7 +33,7 @@ init (int argc, char *argv[])
 
 static void (*const init_array []) (int argc, char *argv[])
      __attribute__ ((section (".init_array"), aligned (sizeof (void *))))
-     __attribute_used__ = { init };
-#else
-# error "Need linker with .init_array support."
-#endif
+     __attribute_used__ =
+{
+  init
+};
index 2015ea2..29e4707 100644 (file)
@@ -78,14 +78,8 @@ __libc_global_ctors (void)
 
 /* This function becomes the DT_FINI termination function
    for the C library.  */
-#ifndef HAVE_INITFINI_ARRAY
-void _fini (void) __attribute__ ((section (".fini"))); /* Just for kicks.  */
-void
-_fini (void)
-#else
 void
 __libc_fini (void)
-#endif
 {
   /* Call destructor functions.  */
   run_hooks (__DTOR_LIST__);
@@ -101,7 +95,6 @@ __libc_fini (void)
 # endif
 #endif
 }
-#ifdef HAVE_INITFINI_ARRAY
+
 void (*_fini_ptr) (void) __attribute__ ((section (".fini_array")))
      = &__libc_fini;
-#endif
index 3aa44de..d0a65ec 100644 (file)
@@ -1,5 +1,5 @@
 /* Special .init and .fini section support for ia64.
-   Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2003, 2005 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
@@ -51,7 +51,6 @@ __asm__ ("\n\n"
 "\n"
 "/*@_init_PROLOG_BEGINS*/\n");
 
-#ifdef HAVE_INITFINI_ARRAY
 
 /* If we have working .init_array support, we want to keep the .init
    section empty (apart from the mandatory prologue/epilogue.  This
@@ -75,7 +74,6 @@ gmon_initializer (void)
 __asm__ (".section .init_array, \"aw\"\n"
         "\tdata8 @fptr(gmon_initializer)\n");
 
-#endif
 
 __asm__ (".section .init\n"
 "      .global _init#\n"
@@ -90,27 +88,7 @@ __asm__ (".section .init\n"
 "      mov r33 = b0\n"
 "      .body\n"
 "      adds r12 = -16, r12\n"
-#ifdef HAVE_INITFINI_ARRAY
 "      ;;\n"           /* see gmon_initializer() above */
-#else
-"      .weak   __gmon_start__#\n"
-"      addl r14 = @ltoff(@fptr(__gmon_start__#)), gp\n"
-"      ;;\n"
-"      ld8 r15 = [r14]\n"
-"      ;;\n"
-"      cmp.eq p6, p7 = 0, r15\n"
-"      (p6) br.cond.dptk .L5\n"
-"\n"
-"/* we could use r35 to save gp, but we use the stack since that's what\n"
-" * all the other init routines will do --davidm 00/04/05 */\n"
-"      st8 [r12] = gp, -16\n"
-"      br.call.sptk.many b0 = __gmon_start__# ;;\n"
-"      adds r12 = 16, r12\n"
-"      ;;\n"
-"      ld8 gp = [r12]\n"
-"      ;;\n"
-".L5:\n"
-#endif
 "      .endp _init#\n"
 "\n"
 "/*@_init_PROLOG_ENDS*/\n"