diff options
author | Dave Korn <dave.korn.cygwin@gmail.com> | 2010-04-27 02:22:40 +0000 |
---|---|---|
committer | Dave Korn <davek@gcc.gnu.org> | 2010-04-27 02:22:40 +0000 |
commit | 3bec79c52e613995dd3b07b119a67cd7ad3d72a8 (patch) | |
tree | f1cd7b961ac18dc1a7983cdd108f5b91bbc0cb46 /gcc/configure.ac | |
parent | 45c384e375c0a05accdd60deaf54d0727dab9feb (diff) | |
download | gcc-3bec79c52e613995dd3b07b119a67cd7ad3d72a8.zip gcc-3bec79c52e613995dd3b07b119a67cd7ad3d72a8.tar.gz gcc-3bec79c52e613995dd3b07b119a67cd7ad3d72a8.tar.bz2 |
re PR lto/42776 (LTO doesn't work on non-ELF platforms.)
ChangeLog:
PR lto/42776
* configure.ac (--enable-lto): Refactor handling so libelf tests
are only performed inside then-clause of ACX_ELF_TARGET_IFELSE,
and allow LTO to be explicitly enabled on non-ELF platforms that
are known to support it inside else-clause.
* configure: Regenerate.
gcc/ChangeLog:
PR lto/42776
* configure.ac (gcc_cv_as_section_has_align): Set if installed
binutils supports extended .section directive needed by LTO, or
warn if older binutils found.
(LTO_BINARY_READER): New AC_SUBST'd variable.
(LTO_USE_LIBELF): Likewise.
* gcc/config.gcc (lto_binary_reader): New target-specific configure
variable.
* gcc/Makefile.in (LTO_BINARY_READER): Import AC_SUBST'd autoconf var.
(LTO_USE_LIBELF): Likewise.
* configure: Regenerate.
* collect2.c (is_elf): Rename from this ...
(is_elf_or_coff): ... to this, and recognize and allow i386 COFF
object files in addition to ELF-formatted ones.
(scan_prog_file): Caller updated. Also allow for LTO info marker
symbol to be prefixed or not by an extra underscore.
* config/i386/t-cygming (winnt.o): Also depend on LTO_STREAMER_H.
* config/i386/winnt.c: Also #include lto-streamer.h
(i386_pe_asm_named_section): Specify 1-byte section alignment for
LTO named sections.
(i386_pe_asm_output_aligned_decl_common): Add comment.
(i386_pe_maybe_record_exported_symbol): Allow decl arg to be NULL.
gcc/lto/ChangeLog:
PR lto/42776
* Make-lang.in (LTO_OBJS): Use LTO_BINARY_READER instead of
hardcoding 'lto-elf.o'.
($(LTO_EXE)): Use LTO_USE_LIBELF instead of hardcoding '-lelf'.
* lto-coff.h: New file.
* lto-coff.c: Likewise.
gcc/testsuite/ChangeLog:
PR lto/42776
* lib/lto.exp (lto_prune_vis_warns): New function.
(lto-link-and-maybe-run): Call it.
From-SVN: r158762
Diffstat (limited to 'gcc/configure.ac')
-rw-r--r-- | gcc/configure.ac | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/configure.ac b/gcc/configure.ac index 1676c40..67973b1 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3202,6 +3202,19 @@ foo: nop rm -f conftest], [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1, [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])]) + # Test if the assembler supports the extended form of the .section + # directive that specifies section alignment. LTO support uses this, + # but normally only after installation, so we warn but don't fail the + # configure if LTO is enabled but the assembler does not support it. + gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align, + [2,20,1],-fatal-warnings,[.section lto_test,"dr0"]) + if test x$gcc_cv_as_section_has_align != xyes; then + case ",$enable_languages," in + *,lto,*) + AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.]) + ;; + esac + fi ;; esac @@ -4270,6 +4283,17 @@ changequote([,])dnl AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.]) enable_lto=yes AC_SUBST(enable_lto) + # LTO needs to speak the platform's object file format, and has a + # number of implementations of the required binary file access APIs. + # ELF is the most common, and default. We only link libelf if ELF + # is indeed the selected format. + LTO_BINARY_READER=${lto_binary_reader} + LTO_USE_LIBELF=-lelf + if test "x$lto_binary_reader" != "xlto-elf" ; then + LTO_USE_LIBELF= + fi + AC_SUBST(LTO_BINARY_READER) + AC_SUBST(LTO_USE_LIBELF) ;; *) ;; esac |