aboutsummaryrefslogtreecommitdiff
path: root/gcc/configure.ac
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-12-03 10:09:43 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2008-12-03 10:09:43 +0100
commit6e97481b1548e223dabc76d94a541b2de4d9762a (patch)
treec4257262e0a24bc5d073d2055b871b6fc05a8205 /gcc/configure.ac
parent0ce2b2991c6cef3d65055cc06ad76aeffb3587a3 (diff)
downloadgcc-6e97481b1548e223dabc76d94a541b2de4d9762a.zip
gcc-6e97481b1548e223dabc76d94a541b2de4d9762a.tar.gz
gcc-6e97481b1548e223dabc76d94a541b2de4d9762a.tar.bz2
re PR target/37610 (FAIL: g++.dg/eh/pr29166.C execution test)
PR target/37610 * configure.ac (gcc_cv_readelf): Look for readelf. (gcc_cv_as_cfi_advance_working): Check for working cfi advances with code alignment factor > 1. (HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances don't work properly. * configure: Regenerated. From-SVN: r142389
Diffstat (limited to 'gcc/configure.ac')
-rw-r--r--gcc/configure.ac46
1 files changed, 45 insertions, 1 deletions
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 0ffa8f6..559332f 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2005,6 +2005,29 @@ else
AC_MSG_RESULT($gcc_cv_objdump)
fi
+# Figure out what readelf we will be using.
+AS_VAR_SET_IF(gcc_cv_readelf,, [
+if test -f $gcc_cv_binutils_srcdir/configure.in \
+ && test -f ../binutils/Makefile \
+ && test x$build = x$host; then
+ # Single tree build which includes binutils.
+ gcc_cv_readelf=../binutils/readelf$build_exeext
+elif test -x readelf$build_exeext; then
+ gcc_cv_readelf=./readelf$build_exeext
+else
+ AC_PATH_PROG(gcc_cv_readelf, readelf)
+fi])
+
+AC_MSG_CHECKING(what readelf to use)
+if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
+ # Single tree build which includes binutils.
+ AC_MSG_RESULT(newly built readelf)
+elif test x$gcc_cv_readelf = x; then
+ AC_MSG_RESULT(not found)
+else
+ AC_MSG_RESULT($gcc_cv_readelf)
+fi
+
# Figure out what assembler alignment features are present.
gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
[2,6,0],,
@@ -2234,8 +2257,29 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
gcc_cv_as_cfi_directive=yes
;;
esac])
+if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_readelf != x; then
+gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
+ ,,
+[ .text
+ .cfi_startproc
+ .cfi_adjust_cfa_offset 64
+ .skip 512, 0
+ .cfi_adjust_cfa_offset 128
+ .cfi_endproc],
+[
+changequote(,)dnl
+if $gcc_cv_readelf -wf conftest.o 2>/dev/null \
+ | grep 'DW_CFA_advance_loc[12]:[ ][ ]*512[ ]' >/dev/null; then
+ gcc_cv_as_cfi_advance_working=yes
+fi
+changequote([,])dnl
+])
+else
+ gcc_cv_as_cfi_advance_working=yes
+fi
AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
- [`if test $gcc_cv_as_cfi_directive = yes; then echo 1; else echo 0; fi`],
+ [`if test $gcc_cv_as_cfi_directive = yes \
+ && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
[Define 0/1 if your assembler supports CFI directives.])
gcc_GAS_CHECK_FEATURE([cfi personality directive],