* dlfcn/dlfcn.c (init): Put it in .init_array section.
authorRoland McGrath <roland@gnu.org>
Thu, 10 Feb 2005 09:25:49 +0000 (09:25 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 10 Feb 2005 09:25:49 +0000 (09:25 +0000)
ChangeLog
dlfcn/dlfcn.c

index 7a15f2f..f9486d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2005-01-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * dlfcn/dlfcn.c (init): Put it in .init_array section.
+
 2005-02-10  Roland McGrath  <roland@redhat.com>
 
        [BZ #632]
index 9c0a84a..8047150 100644 (file)
 int __dlfcn_argc attribute_hidden;
 char **__dlfcn_argv attribute_hidden;
 
-
-void
-__attribute__ ((constructor))
+#ifdef HAVE_INITFINI_ARRAY
+static void
 init (int argc, char *argv[])
 {
   __dlfcn_argc = argc;
   __dlfcn_argv = 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