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 | |
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
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rwxr-xr-x | gcc/configure | 116 | ||||
-rw-r--r-- | gcc/configure.ac | 46 |
3 files changed, 169 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4afc7e..3eef937 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2008-12-03 Jakub Jelinek <jakub@redhat.com> + + 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. + 2008-12-03 Eric Botcazou <ebotcazou@adacore.com> Jakub Jelinek <jakub@redhat.com> Andrew Pinski <andrew_pinski@playstation.sony.com> diff --git a/gcc/configure b/gcc/configure index e0b0e2e..9da1269 100755 --- a/gcc/configure +++ b/gcc/configure @@ -458,7 +458,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS' ac_subst_files='language_hooks' ac_pwd=`pwd` @@ -20966,6 +20966,76 @@ else echo "${ECHO_T}$gcc_cv_objdump" >&6 fi +# Figure out what readelf we will be using. +if test "${gcc_cv_readelf+set}" = set; then + : +else + +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 + # Extract the first word of "readelf", so it can be a program name with args. +set dummy readelf; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_gcc_cv_readelf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $gcc_cv_readelf in + [\\/]* | ?:[\\/]*) + ac_cv_path_gcc_cv_readelf="$gcc_cv_readelf" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_gcc_cv_readelf="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +gcc_cv_readelf=$ac_cv_path_gcc_cv_readelf + +if test -n "$gcc_cv_readelf"; then + echo "$as_me:$LINENO: result: $gcc_cv_readelf" >&5 +echo "${ECHO_T}$gcc_cv_readelf" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +fi + + +echo "$as_me:$LINENO: checking what readelf to use" >&5 +echo $ECHO_N "checking what readelf to use... $ECHO_C" >&6 +if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then + # Single tree build which includes binutils. + echo "$as_me:$LINENO: result: newly built readelf" >&5 +echo "${ECHO_T}newly built readelf" >&6 +elif test x$gcc_cv_readelf = x; then + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +else + echo "$as_me:$LINENO: result: $gcc_cv_readelf" >&5 +echo "${ECHO_T}$gcc_cv_readelf" >&6 +fi + # Figure out what assembler alignment features are present. echo "$as_me:$LINENO: checking assembler for .balign and .p2align" >&5 echo $ECHO_N "checking assembler for .balign and .p2align... $ECHO_C" >&6 @@ -21502,9 +21572,50 @@ fi echo "$as_me:$LINENO: result: $gcc_cv_as_cfi_directive" >&5 echo "${ECHO_T}$gcc_cv_as_cfi_directive" >&6 +if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_readelf != x; then +echo "$as_me:$LINENO: checking assembler for working cfi advance" >&5 +echo $ECHO_N "checking assembler for working cfi advance... $ECHO_C" >&6 +if test "${gcc_cv_as_cfi_advance_working+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gcc_cv_as_cfi_advance_working=no + if test x$gcc_cv_as != x; then + echo ' .text + .cfi_startproc + .cfi_adjust_cfa_offset 64 + .skip 512, 0 + .cfi_adjust_cfa_offset 128 + .cfi_endproc' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + +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 + + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +echo "$as_me:$LINENO: result: $gcc_cv_as_cfi_advance_working" >&5 +echo "${ECHO_T}$gcc_cv_as_cfi_advance_working" >&6 + +else + gcc_cv_as_cfi_advance_working=yes +fi cat >>confdefs.h <<_ACEOF -#define HAVE_GAS_CFI_DIRECTIVE `if test $gcc_cv_as_cfi_directive = yes; then echo 1; else echo 0; fi` +#define HAVE_GAS_CFI_DIRECTIVE `if test $gcc_cv_as_cfi_directive = yes \ + && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi` _ACEOF @@ -25432,6 +25543,7 @@ s,@ORIGINAL_LD_FOR_TARGET@,$ORIGINAL_LD_FOR_TARGET,;t t s,@gcc_cv_nm@,$gcc_cv_nm,;t t s,@ORIGINAL_NM_FOR_TARGET@,$ORIGINAL_NM_FOR_TARGET,;t t s,@gcc_cv_objdump@,$gcc_cv_objdump,;t t +s,@gcc_cv_readelf@,$gcc_cv_readelf,;t t s,@libgcc_visibility@,$libgcc_visibility,;t t s,@GGC@,$GGC,;t t s,@zlibdir@,$zlibdir,;t t 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], |