aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7/gcc/configure
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2013-08-07 14:07:56 +0800
committerAndrew Hsieh <andrewhsieh@google.com>2013-08-07 14:10:19 +0800
commit3cbd714aa558ccb83ed8294779d9dcd4399dd24f (patch)
tree4fb3cd936d88cc6a8f6f96871f341af7e6c6580e /gcc-4.7/gcc/configure
parent34cef20a1108ff399ecbe13f42e1f6bc8c909b27 (diff)
downloadtoolchain_gcc-3cbd714aa558ccb83ed8294779d9dcd4399dd24f.tar.gz
toolchain_gcc-3cbd714aa558ccb83ed8294779d9dcd4399dd24f.tar.bz2
toolchain_gcc-3cbd714aa558ccb83ed8294779d9dcd4399dd24f.zip
[4.6,4.7] Always enable --eh-frame-hdr for static executable
See 23e3137ee2897464b051599b85a09f130d3ad05d for the reason why. backport 4.8 patch from http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00969.html Change-Id: I9496e11f314e5e2ec9359b993016723ab6366dad
Diffstat (limited to 'gcc-4.7/gcc/configure')
-rwxr-xr-xgcc-4.7/gcc/configure36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc-4.7/gcc/configure b/gcc-4.7/gcc/configure
index f7a75ca25..248370b0c 100755
--- a/gcc-4.7/gcc/configure
+++ b/gcc-4.7/gcc/configure
@@ -909,6 +909,7 @@ enable_gnu_indirect_function
enable_initfini_array
enable_comdat
enable_gnu_unique_object
+enable_eh_frame_hdr_for_static
enable_linker_build_id
with_long_double_128
with_gc
@@ -1620,6 +1621,9 @@ Optional Features:
--enable-gnu-unique-object
enable the use of the @gnu_unique_object ELF
extension on glibc systems
+ --enable-eh-frame-hdr-for-static
+ enable linker PT_GNU_EH_FRAME support for static
+ executable
--enable-linker-build-id
compiler will always pass --build-id to linker
--enable-maintainer-mode
@@ -26355,6 +26359,38 @@ if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
$as_echo "#define HAVE_LD_EH_FRAME_HDR 1" >>confdefs.h
+ # Check whether --enable-eh-frame-hdr-for-static was given.
+if test "${enable_eh_frame_hdr_for_static+set}" = set; then :
+ enableval=$enable_eh_frame_hdr_for_static; case $enable_eh_frame_hdr_for_static in
+ yes | no) ;;
+ *) as_fn_error "'$enable_eh_frame_hdr_for_static' is an invalid
+value for --enable-eh-frame-hdr-for-static.
+Valid choices are 'yes' and 'no'." "$LINENO" 5 ;;
+ esac
+else
+ # Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
+# Linux kernel.
+ if test x$host = x$build -a x$host = x$target &&
+ ldd --version 2>&1 >/dev/null &&
+ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
+ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
+ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
+ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
+ if test "$glibcnum" -ge 2003 ; then
+ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
+ if echo "$auvx" | grep AT_PHDR > /dev/null &&
+ echo "$auvx" | grep AT_PHNUM > /dev/null; then
+ enable_eh_frame_hdr_for_static=yes
+ fi
+ fi
+ fi
+fi
+
+ if test x$enable_eh_frame_hdr_for_static = xyes; then
+
+$as_echo "#define USE_EH_FRAME_HDR_FOR_STATIC 1" >>confdefs.h
+
+ fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_eh_frame_hdr" >&5
$as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; }