aboutsummaryrefslogtreecommitdiff
path: root/bfd/configure.ac
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-02-10 19:01:42 -0800
committerH.J. Lu <hjl.tools@gmail.com>2020-02-10 19:01:53 -0800
commit0aa99dcd70bce68f8efef310350a6294e1143382 (patch)
treeff8678bad1747516104097a8860d8eb775f370b8 /bfd/configure.ac
parent2f5dd314d60e25b3094694999889c72a49fee76b (diff)
downloadgdb-0aa99dcd70bce68f8efef310350a6294e1143382.zip
gdb-0aa99dcd70bce68f8efef310350a6294e1143382.tar.gz
gdb-0aa99dcd70bce68f8efef310350a6294e1143382.tar.bz2
Use GCC LTO wrapper to get real symbols from LTO IR objects
GCC LTO wrapper is needed to extract real symbols from LTO IR objects. This patch does the following: 1. Set up GCC LTO wrapper for each LTO IR object. 2. Run GCC LTO wrapper to get the real object. 3. Extract symbol info from the real object. 4. Cleanup afterwards. bfd/ PR binutils/25355 * configure.ac (HAVE_EXECUTABLE_SUFFIX): New AC_DEFINE. (EXECUTABLE_SUFFIX): Likewise. * config.in: Regenerated. * configure: Likewise. * plugin.c (bfd_plugin_close_and_cleanup): Removed. (plugin_list_entry): Add all_symbols_read, cleanup_handler, gcc, lto_wrapper, resolution_file, resolution_option, gcc_env, real_bfd, real_nsyms, real_syms, lto_nsyms and lto_syms. (get_lto_wrapper): New. (setup_lto_wrapper_env): Likewise. (current_plugin): Likewise. (register_all_symbols_read): Likewise. (register_cleanup): Likewise. (get_symbols): Likewise. (add_input_file): Likewise. (bfd_plugin_close_and_cleanup): Likewise. (claim_file): Removed. (register_claim_file): Set current_plugin->claim_file. (add_symbols): Make a copy of LTO symbols. Set lto_nsyms and lto_syms in current_plugin. (try_claim): Use current_plugin->claim_file. Call LTO plugin all_symbols_read handler. Copy real symbols to plugin_data. Call LTO plugin cleanup handler. Clean up for LTO wrapper. (try_load_plugin): Don't reuse the previous plugin for LTO wrapper. Set up GCC LTO wrapper if possible. Don't set plugin_list_iter->claim_file. (bfd_plugin_canonicalize_symtab): Use real LTO symbols if possible. * plugin.h (plugin_data_struct): Add real_bfd, real_nsyms and real_syms. ld/ PR binutils/25355 * testsuite/ld-plugin/lto.exp: Run PR binutils/25355 test. * testsuite/ld-plugin/pr25355.c: New file. * testsuite/ld-plugin/pr25355.d: Likewise. * testsuite/lib/ld-lib.exp (run_cc_link_tests): Support compile only dump.
Diffstat (limited to 'bfd/configure.ac')
-rw-r--r--bfd/configure.ac6
1 files changed, 6 insertions, 0 deletions
diff --git a/bfd/configure.ac b/bfd/configure.ac
index c5bfbd5..af4d4b8 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -157,6 +157,12 @@ AM_MAINTAINER_MODE
AM_CONDITIONAL(GENINSRC_NEVER, false)
AM_INSTALL_LIBBFD
AC_EXEEXT
+if test -n "$EXEEXT"; then
+ AC_DEFINE(HAVE_EXECUTABLE_SUFFIX, 1,
+ [Does the platform use an executable suffix?])
+fi
+AC_DEFINE_UNQUOTED(EXECUTABLE_SUFFIX, "${EXEEXT}",
+ [Suffix used for executables, if any.])
host64=false
target64=false