diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-12-03 10:09:43 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-12-03 10:09:43 +0100 |
commit | 6e97481b1548e223dabc76d94a541b2de4d9762a (patch) | |
tree | c4257262e0a24bc5d073d2055b871b6fc05a8205 /gcc/configure.ac | |
parent | 0ce2b2991c6cef3d65055cc06ad76aeffb3587a3 (diff) | |
download | gcc-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.ac | 46 |
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], |