summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--aclocal.m428
-rwxr-xr-xconfigure140
-rw-r--r--configure.in71
5 files changed, 126 insertions, 121 deletions
diff --git a/ChangeLog b/ChangeLog
index b2b2538713..4f1985309f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2012-11-21 H.J. Lu <hongjiu.lu@intel.com>
+ [BZ #14865]
+ * aclocal.m4 (LIBC_LINKER_FEATURE): New macro.
+ * configure.in: Use LIBC_LINKER_FEATURE to check -z nodelete,
+ -z nodlopen, -z initfirst and -z execstack support.
+ * configure: Regenerated.
+
* elf/elf.h (DF_1_NODIRECT): New macro.
(DF_1_IGNMULDEF): Likewise.
(DF_1_NOKSYMS): Likewise.
diff --git a/NEWS b/NEWS
index 9eb0a10ab6..8df3022946 100644
--- a/NEWS
+++ b/NEWS
@@ -21,7 +21,7 @@ Version 2.17
14638, 14645, 14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694,
14716, 14719, 14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797,
14801, 14805, 14807, 14809, 14811, 14815, 14821, 14824, 14828, 14831,
- 14835, 14838, 14856, 14866.
+ 14835, 14838, 14856, 14865, 14866.
* Port to ARM AArch64 contributed by Linaro.
diff --git a/aclocal.m4 b/aclocal.m4
index b173e9e339..956ea8616c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -213,3 +213,31 @@ AC_DEFUN([ACX_BUGURL],[
AC_SUBST(REPORT_BUGS_TO)
AC_SUBST(REPORT_BUGS_TEXI)
])
+
+dnl Check linker option support.
+dnl LIBC_LINKER_FEATURE([ld_option], [cc_option], [action-if-true], [action-if-false])
+AC_DEFUN([LIBC_LINKER_FEATURE],
+[AC_MSG_CHECKING([for linker that supports $1])
+libc_linker_feature=no
+if test x"$gnu_ld" = x"yes"; then
+ libc_linker_check=`$LD -v --help 2>/dev/null | grep "\$1"`
+ if test -n "$libc_linker_check"; then
+ cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ $2 -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&AS_MESSAGE_LOG_FD])
+ then
+ libc_linker_feature=yes
+ fi
+ rm -f conftest*
+ fi
+fi
+if test $libc_linker_feature = yes; then
+ $3
+else
+ $4
+fi
+AC_MSG_RESULT($libc_linker_feature)])
diff --git a/configure b/configure
index 1927ce81c6..ff2d34ca9c 100755
--- a/configure
+++ b/configure
@@ -6235,86 +6235,101 @@ if test $libc_cv_cc_with_libunwind = yes; then
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z nodelete option" >&5
-$as_echo_n "checking for -z nodelete option... " >&6; }
-if ${libc_cv_z_nodelete+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z nodelete" >&5
+$as_echo_n "checking for linker that supports -z nodelete... " >&6; }
+libc_linker_feature=no
+if test x"$gnu_ld" = x"yes"; then
+ libc_linker_check=`$LD -v --help 2>/dev/null | grep "\-z nodelete"`
+ if test -n "$libc_linker_check"; then
+ cat > conftest.c <<EOF
int _start (void) { return 42; }
EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodelete 1>&5'
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -Wl,--enable-new-dtags,-z,nodelete -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
-then
+ then
+ libc_linker_feature=yes
+ fi
+ rm -f conftest*
+ fi
+fi
+if test $libc_linker_feature = yes; then
libc_cv_z_nodelete=yes
else
as_fn_error $? "linker with -z nodelete support required" "$LINENO" 5
fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_nodelete" >&5
-$as_echo "$libc_cv_z_nodelete" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z nodlopen option" >&5
-$as_echo_n "checking for -z nodlopen option... " >&6; }
-if ${libc_cv_z_nodlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z nodlopen" >&5
+$as_echo_n "checking for linker that supports -z nodlopen... " >&6; }
+libc_linker_feature=no
+if test x"$gnu_ld" = x"yes"; then
+ libc_linker_check=`$LD -v --help 2>/dev/null | grep "\-z nodlopen"`
+ if test -n "$libc_linker_check"; then
+ cat > conftest.c <<EOF
int _start (void) { return 42; }
EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodlopen 1>&5'
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -Wl,--enable-new-dtags,-z,nodlopen -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
-then
+ then
+ libc_linker_feature=yes
+ fi
+ rm -f conftest*
+ fi
+fi
+if test $libc_linker_feature = yes; then
libc_cv_z_nodlopen=yes
else
as_fn_error $? "linker with -z nodlopen support required" "$LINENO" 5
fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_nodlopen" >&5
-$as_echo "$libc_cv_z_nodlopen" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z initfirst option" >&5
-$as_echo_n "checking for -z initfirst option... " >&6; }
-if ${libc_cv_z_initfirst+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z initfirst" >&5
+$as_echo_n "checking for linker that supports -z initfirst... " >&6; }
+libc_linker_feature=no
+if test x"$gnu_ld" = x"yes"; then
+ libc_linker_check=`$LD -v --help 2>/dev/null | grep "\-z initfirst"`
+ if test -n "$libc_linker_check"; then
+ cat > conftest.c <<EOF
int _start (void) { return 42; }
EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,initfirst 1>&5'
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -Wl,--enable-new-dtags,-z,initfirst -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
-then
+ then
+ libc_linker_feature=yes
+ fi
+ rm -f conftest*
+ fi
+fi
+if test $libc_linker_feature = yes; then
libc_cv_z_initfirst=yes
else
as_fn_error $? "linker with -z initfirst support required" "$LINENO" 5
fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_initfirst" >&5
-$as_echo "$libc_cv_z_initfirst" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
# Add-on fragments can set these for other machines.
libc_commonpagesize=${libc_commonpagesize:-no}
@@ -6511,32 +6526,37 @@ if test "$libc_cv_z_combreloc" = yes; then
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z execstack" >&5
-$as_echo_n "checking for -z execstack... " >&6; }
-if ${libc_cv_z_execstack+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z execstack" >&5
+$as_echo_n "checking for linker that supports -z execstack... " >&6; }
+libc_linker_feature=no
+if test x"$gnu_ld" = x"yes"; then
+ libc_linker_check=`$LD -v --help 2>/dev/null | grep "\-z execstack"`
+ if test -n "$libc_linker_check"; then
+ cat > conftest.c <<EOF
int _start (void) { return 42; }
EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -Wl,-z,execstack -nostdlib
- 1>&5'
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -Wl,-z,execstack -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
-then
+ then
+ libc_linker_feature=yes
+ fi
+ rm -f conftest*
+ fi
+fi
+if test $libc_linker_feature = yes; then
libc_cv_z_execstack=yes
else
libc_cv_z_execstack=no
fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_execstack" >&5
-$as_echo "$libc_cv_z_execstack" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie" >&5
diff --git a/configure.in b/configure.in
index 9decd7d24b..a7f7198818 100644
--- a/configure.in
+++ b/configure.in
@@ -1409,53 +1409,17 @@ if test $libc_cv_cc_with_libunwind = yes; then
AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
fi
-AC_CACHE_CHECK(for -z nodelete option,
- libc_cv_z_nodelete, [dnl
-cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_z_nodelete=yes
-else
- AC_MSG_ERROR(linker with -z nodelete support required)
-fi
-rm -f conftest*])
+LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
+ [libc_cv_z_nodelete=yes],
+ [AC_MSG_ERROR(linker with -z nodelete support required)])
-AC_CACHE_CHECK(for -z nodlopen option,
- libc_cv_z_nodlopen, [dnl
-cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_z_nodlopen=yes
-else
- AC_MSG_ERROR(linker with -z nodlopen support required)
-fi
-rm -f conftest*])
+LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
+ [libc_cv_z_nodlopen=yes],
+ [AC_MSG_ERROR(linker with -z nodlopen support required)])
-AC_CACHE_CHECK(for -z initfirst option,
- libc_cv_z_initfirst, [dnl
-cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_z_initfirst=yes
-else
- AC_MSG_ERROR(linker with -z initfirst support required)
-fi
-rm -f conftest*])
+LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
+ [libc_cv_z_initfirst=yes],
+ [AC_MSG_ERROR(linker with -z initfirst support required)])
# Add-on fragments can set these for other machines.
libc_commonpagesize=${libc_commonpagesize:-no}
@@ -1593,21 +1557,8 @@ if test "$libc_cv_z_combreloc" = yes; then
fi
AC_SUBST(libc_cv_z_combreloc)
-AC_CACHE_CHECK(for -z execstack,
- libc_cv_z_execstack, [dnl
-cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -Wl,-z,execstack -nostdlib
- 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_z_execstack=yes
-else
- libc_cv_z_execstack=no
-fi
-rm -f conftest*])
+LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
+ [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
AC_SUBST(libc_cv_z_execstack)
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl