X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfigure.ac;h=c067770cb5935f6e2eedd9e6217fb0260213516a;hb=49b6dba67f06de2ec02bf958c556fc34b171408e;hp=37ed6787064e14d2a16ec03604fcff5c4141f83e;hpb=c3aa71d49773329d5af1212a7738c1ebea8d8787;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/configure.ac b/gcc/configure.ac index 37ed6787064..c067770cb59 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1188,14 +1188,8 @@ fi # For platforms with the unwind ABI which includes an unwind library, # libunwind, we can choose to use the system libunwind. -AC_ARG_WITH(system-libunwind, -[ --with-system-libunwind use installed libunwind]) - # config.gcc also contains tests of with_system_libunwind. -if test x$with_system_libunwind = xyes; then - AC_DEFINE(HAVE_GETIPINFO, 1, -[Define to 1 if system unwind library has _Unwind_GetIPInfo.]) -fi +GCC_CHECK_UNWIND_GETIPINFO # -------------------------------------------------------- # Build, host, and target specific configuration fragments @@ -1421,20 +1415,6 @@ if test x$enable___cxa_atexit = xyes || \ fi fi -use_getipinfo=yes -if test x$with_system_libunwind = xyes; then - if test x$host = x$target; then - AC_SEARCH_LIBS(_Unwind_GetIPInfo, unwind,, [use_getipinfo=no]) - fi -fi -GCC_TARGET_TEMPLATE(HAVE_GETIPINFO) -if test x$use_getipinfo = xyes; then - AC_DEFINE(HAVE_GETIPINFO, 1, - [Define to 1 if system unwind library has _Unwind_GetIPInfo.]) -else - echo "The system unwind library does not support _Unwind_GetIPInfo." -fi - # Look for a file containing extra machine modes. if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then extra_modes_file='$(srcdir)'/config/${extra_modes} @@ -2025,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],, @@ -2101,10 +2104,10 @@ AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden, gcc_cv_ld_hidden=yes fi else +changequote(,)dnl gcc_cv_ld_hidden=yes ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q` if echo "$ld_ver" | grep GNU > /dev/null; then -changequote(,)dnl ld_vers=`echo $ld_ver | sed -n \ -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'` ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` @@ -2128,18 +2131,21 @@ changequote(,)dnl gcc_cv_ld_hidden=no fi fi -changequote([,])dnl fi else case "${target}" in hppa64*-*-hpux* | ia64*-*-hpux*) gcc_cv_ld_hidden=yes ;; + *-*-solaris2.9* | *-*-solaris2.1[0-9]*) + gcc_cv_ld_hidden=yes + ;; *) gcc_cv_ld_hidden=no ;; esac fi +changequote([,])dnl fi]) libgcc_visibility=no AC_SUBST(libgcc_visibility) @@ -2150,6 +2156,45 @@ if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then [Define if your assembler and linker support .hidden.]) fi +AC_MSG_CHECKING(linker read-only and read-write section mixing) +gcc_cv_ld_ro_rw_mix=unknown +if test $in_tree_ld = yes ; then + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ + && test $in_tree_ld_is_elf = yes; then + gcc_cv_ld_ro_rw_mix=read-write + fi +elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then + echo '.section myfoosect, "a"' > conftest1.s + echo '.section myfoosect, "aw"' > conftest2.s + echo '.byte 1' >> conftest2.s + echo '.section myfoosect, "a"' > conftest3.s + echo '.byte 0' >> conftest3.s + if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ + && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ + && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ + && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ + conftest2.o conftest3.o > /dev/null 2>&1; then + gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ + | sed -e '/myfoosect/!d' -e N` + if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then + if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then + gcc_cv_ld_ro_rw_mix=read-only + else + gcc_cv_ld_ro_rw_mix=read-write + fi + fi + fi +changequote(,)dnl + rm -f conftest.* conftest[123].* +changequote([,])dnl +fi +if test x$gcc_cv_ld_ro_rw_mix = xread-write; then + AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1, + [Define if your linker links a mix of read-only + and read-write sections into a read-write section.]) +fi +AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix) + # Check if we have .[us]leb128, and support symbol arithmetic with it. gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128, [elf,2,11,0],, @@ -2189,9 +2234,56 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive, .cfi_same_value 1 .cfi_def_cfa 1, 2 .cfi_escape 1, 2, 3, 4, 5 - .cfi_endproc]) + .cfi_endproc], +[case "$target" in + *-*-solaris*) + # If the linker used on Solaris (like Sun ld) isn't capable of merging + # read-only and read-write sections, we need to make sure that the + # assembler used emits read-write .eh_frame sections. + if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then + if test "x$gcc_cv_objdump" != x; then + if $gcc_cv_objdump -h conftest.o 2>/dev/null | \ + sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then + gcc_cv_as_cfi_directive=no + else + gcc_cv_as_cfi_directive=yes + fi + else + # no objdump, err on the side of caution + gcc_cv_as_cfi_directive=no + fi + else + gcc_cv_as_cfi_directive=yes + fi + ;; + *-*-*) + 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 + # no readelf, err on the side of caution + gcc_cv_as_cfi_advance_working=no +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], @@ -2322,7 +2414,7 @@ AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP, [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`], [Define 0/1 if your assembler and linker support COMDAT groups.]) -# Thread-local storage - the check is heavily parametrized. +# Thread-local storage - the check is heavily parameterized. conftest_s= tls_first_major= tls_first_minor= @@ -2655,6 +2747,17 @@ foo: .long 25 tls_as_opt="-32 --fatal-warnings" fi ;; + xtensa*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +foo: .long 25 + .text + movi a8, foo@TLSFUNC + movi a10, foo@TLSARG + callx8.tls a8, foo@TLSCALL' + tls_first_major=2 + tls_first_minor=19 + ;; changequote([,])dnl esac set_have_as_tls=no @@ -3111,7 +3214,7 @@ case "$target" in i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \ | x86_64*-*-* | hppa*-*-* | arm*-*-* \ | xstormy16*-*-* | cris-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \ - | spu-*-* | fido*-*-*) + | spu-*-* | fido*-*-* | m32c-*-*) insn="nop" ;; ia64*-*-* | s390*-*-*) @@ -3177,6 +3280,12 @@ if test x"$insn" != x; then [Define if your assembler supports the --debug-prefix-map option.])]) fi +gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment, + ,, +[.lcomm bar,4,16],, +[AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1, + [Define if your assembler supports .lcomm with an alignment field.])]) + AC_CACHE_CHECK([assembler for tolerance to line number 0], [gcc_cv_as_line_zero], [gcc_cv_as_line_zero=no @@ -3201,45 +3310,6 @@ if test "x$gcc_cv_as_line_zero" = xyes; then [Define if the assembler won't complain about a line such as # 0 "" 2.]) fi -AC_MSG_CHECKING(linker read-only and read-write section mixing) -gcc_cv_ld_ro_rw_mix=unknown -if test $in_tree_ld = yes ; then - if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ - && test $in_tree_ld_is_elf = yes; then - gcc_cv_ld_ro_rw_mix=read-write - fi -elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then - echo '.section myfoosect, "a"' > conftest1.s - echo '.section myfoosect, "aw"' > conftest2.s - echo '.byte 1' >> conftest2.s - echo '.section myfoosect, "a"' > conftest3.s - echo '.byte 0' >> conftest3.s - if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ - && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ - && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ - && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ - conftest2.o conftest3.o > /dev/null 2>&1; then - gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ - | sed -e '/myfoosect/!d' -e N` - if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then - if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then - gcc_cv_ld_ro_rw_mix=read-only - else - gcc_cv_ld_ro_rw_mix=read-write - fi - fi - fi -changequote(,)dnl - rm -f conftest.* conftest[123].* -changequote([,])dnl -fi -if test x$gcc_cv_ld_ro_rw_mix = xread-write; then - AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1, - [Define if your linker links a mix of read-only - and read-write sections into a read-write section.]) -fi -AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix) - AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support) gcc_cv_ld_eh_frame_hdr=no if test $in_tree_ld = yes ; then @@ -3452,7 +3522,7 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library, gcc_cv_libc_provides_ssp, [gcc_cv_libc_provides_ssp=no case "$target" in - *-*-linux*) + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then if test "x$with_sysroot" = x; then glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include" @@ -3488,6 +3558,12 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library, fi fi ;; + *-*-gnu*) + # Avoid complicated tests (see + # ) and for now + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. + gcc_cv_libc_provides_ssp=yes;; *-*-darwin*) AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes], [echo "no __stack_chk_fail on this target"])