Import fixes for using the LTO plugin with nm. 59/257359/2
authorNick Clifton <nickc@redhat.com>
Sun, 16 Feb 2020 11:33:15 +0000 (11:33 +0000)
committerDongkyun Son <dongkyun.s@samsung.com>
Wed, 28 Apr 2021 03:39:16 +0000 (12:39 +0900)
commitf699e3ce04d9528d89ecb52b1e93e26a0a16d7e8
treef97def23753c50996eda6a05d14fd15ae75b0cbe
parent2e7fb988ea7e12dfd194fdf3c861ec55e1684178
Import fixes for using the LTO plugin with nm.

  PR 25355

bfd:
 2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>

 * plugin.c (try_load_plugin): Make plugin_list_iter an argument
 and use it if it isn't NULL.  Remove has_plugin_p argument.  Add
 a build_list_p argument.  Don't search plugin_list.  Short circuit
 when building the plugin list.
 (has_plugin): Renamed to has_plugin_list.
 (bfd_plugin_set_plugin): Don't set has_plugin.
 (bfd_plugin_specified_p): Check plugin_list instead.
 (build_plugin_list): New function.
 (load_plugin): Call build_plugin_list and use plugin_list.

 2020-02-11  H.J. Lu  <hongjiu.lu@intel.com>

 PR binutils/25355
 * plugin.c (try_claim): Always clean up for LTO wrapper.
 (try_load_plugin): Treat each object as independent.  Create a
 copy for plugin name.

 2020-02-11  H.J. Lu  <hongjiu.lu@intel.com>

 * plugin.c (add_symbols): Clear plugin_data memory.

 2020-02-10  H.J. Lu  <hongjiu.lu@intel.com>

 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:
 2020-02-10  H.J. Lu  <hongjiu.lu@intel.com>

 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.

(cherry picked from commit 804b7fd4fdc545a6ed18aee3d4186574861634ef)

Change-Id: I66c47c2ea84f7ad7cf21d090dd7179eb2659a41c
bfd/ChangeLog
bfd/config.in
bfd/configure
bfd/configure.ac
bfd/plugin.c
bfd/plugin.h
ld/ChangeLog
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr25355.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr25355.d [new file with mode: 0644]
ld/testsuite/lib/ld-lib.exp