Commit 6e97481b by Jakub Jelinek Committed by Jakub Jelinek

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
parent 0ce2b299
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> 2008-12-03 Eric Botcazou <ebotcazou@adacore.com>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
Andrew Pinski <andrew_pinski@playstation.sony.com> Andrew Pinski <andrew_pinski@playstation.sony.com>
...@@ -458,7 +458,7 @@ ac_includes_default="\ ...@@ -458,7 +458,7 @@ ac_includes_default="\
# include <unistd.h> # include <unistd.h>
#endif" #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_subst_files='language_hooks'
ac_pwd=`pwd` ac_pwd=`pwd`
...@@ -20966,6 +20966,76 @@ else ...@@ -20966,6 +20966,76 @@ else
echo "${ECHO_T}$gcc_cv_objdump" >&6 echo "${ECHO_T}$gcc_cv_objdump" >&6
fi 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. # Figure out what assembler alignment features are present.
echo "$as_me:$LINENO: checking assembler for .balign and .p2align" >&5 echo "$as_me:$LINENO: checking assembler for .balign and .p2align" >&5
echo $ECHO_N "checking assembler for .balign and .p2align... $ECHO_C" >&6 echo $ECHO_N "checking assembler for .balign and .p2align... $ECHO_C" >&6
...@@ -21502,9 +21572,50 @@ fi ...@@ -21502,9 +21572,50 @@ fi
echo "$as_me:$LINENO: result: $gcc_cv_as_cfi_directive" >&5 echo "$as_me:$LINENO: result: $gcc_cv_as_cfi_directive" >&5
echo "${ECHO_T}$gcc_cv_as_cfi_directive" >&6 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 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 _ACEOF
...@@ -25432,6 +25543,7 @@ s,@ORIGINAL_LD_FOR_TARGET@,$ORIGINAL_LD_FOR_TARGET,;t t ...@@ -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,@gcc_cv_nm@,$gcc_cv_nm,;t t
s,@ORIGINAL_NM_FOR_TARGET@,$ORIGINAL_NM_FOR_TARGET,;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_objdump@,$gcc_cv_objdump,;t t
s,@gcc_cv_readelf@,$gcc_cv_readelf,;t t
s,@libgcc_visibility@,$libgcc_visibility,;t t s,@libgcc_visibility@,$libgcc_visibility,;t t
s,@GGC@,$GGC,;t t s,@GGC@,$GGC,;t t
s,@zlibdir@,$zlibdir,;t t s,@zlibdir@,$zlibdir,;t t
......
...@@ -2005,6 +2005,29 @@ else ...@@ -2005,6 +2005,29 @@ else
AC_MSG_RESULT($gcc_cv_objdump) AC_MSG_RESULT($gcc_cv_objdump)
fi 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. # Figure out what assembler alignment features are present.
gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align, gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
[2,6,0],, [2,6,0],,
...@@ -2234,8 +2257,29 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive, ...@@ -2234,8 +2257,29 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
gcc_cv_as_cfi_directive=yes gcc_cv_as_cfi_directive=yes
;; ;;
esac]) 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, 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.]) [Define 0/1 if your assembler supports CFI directives.])
gcc_GAS_CHECK_FEATURE([cfi personality directive], gcc_GAS_CHECK_FEATURE([cfi personality directive],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment