aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--config.h.in4
-rw-r--r--config.make.in1
-rw-r--r--configure.in29
4 files changed, 42 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b809c48..5f12977 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2002-03-15 H.J. Lu <hjl@gnu.org>
+ Ulrich Drepper <drepper@redhat.com>
+
+ * configure.in: Check for availability of
+ init_array/fini_array/preinit_array handling in binutils.
+ * config.h.in (HAVE_INITFINI_ARRAY): New macro.
+ * config.make.in (have-initfini-array): New variable.
+
2002-03-15 Ulrich Drepper <drepper@redhat.com>
* stdio-common/tst-printf.c (main): Comment out one test which
diff --git a/config.h.in b/config.h.in
index 42e7e48..30e63d5 100644
--- a/config.h.in
+++ b/config.h.in
@@ -111,6 +111,10 @@
/* 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
+
/* Defined to some form of __attribute__ ((...)) if the compiler supports
a different, more efficient calling convention. */
diff --git a/config.make.in b/config.make.in
index 7604895..edd47a5 100644
--- a/config.make.in
+++ b/config.make.in
@@ -48,6 +48,7 @@ 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@
static-libgcc = @libc_cv_gcc_static_libgcc@
diff --git a/configure.in b/configure.in
index c48c4c1..4846149 100644
--- a/configure.in
+++ b/configure.in
@@ -1039,6 +1039,35 @@ EOF
fi
fi
+ AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
+ libc_cv_initfinit_array, [dnl
+ cat > conftest.c <<EOF
+int _start (void) { return 0; }
+int __start (void) { return 0; }
+int foo (void) { return 1; }
+#ifdef __i386__
+asm (".section .init_array\n\t.long foo");
+#else
+# error "define appropriately for the architecture"
+#endif
+EOF
+ if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
+ -static -nostartfiles -nostdlib 1>&AC_FD_CC])
+ then
+ if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
+ libc_cv_initfinit_array=yes
+ else
+ libc_cv_initfinit_array=no
+ fi
+ else
+ libc_cv_initfinit_array=no
+ fi
+ rm -f conftest*])
+ AC_SUBST(libc_cv_initfinit_array)
+ if test $libc_cv_initfinit_array = yes; then
+ AC_DEFINE(HAVE_INITFINI_ARRAY)
+ fi
+
AC_CACHE_CHECK(for -z nodelete option,
libc_cv_z_nodelete, [dnl
cat > conftest.c <<EOF