X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfigure.ac;h=0ec9aa85e91afeadc20aa7ab2140d9d3a5dbaf0e;hb=8177d9d5c9b4aa996982e8d2e4e3919b48402415;hp=b6bc311b728bc1703f8c7828ca1323a8c344c9ec;hpb=c656b8fda2b22fa00e7aacf132702ddef2a140f3;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/configure.ac b/gcc/configure.ac index b6bc311b728..0ec9aa85e91 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,55 @@ 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 + 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], @@ -3122,7 +3213,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*-*-*) @@ -3218,45 +3309,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 @@ -3469,7 +3521,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" @@ -3505,6 +3557,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"])