[PATCH] Use GCC LTO wrapper to get real symbols from LTO IR objects
H.J. Lu
hjl.tools@gmail.com
Mon Feb 10 21:31:00 GMT 2020
On Mon, Feb 10, 2020 at 6:24 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> 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
> * 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.
Here is the updated patch to avoid mallocing plugin_list_iter for
each IR object.
--
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Use-GCC-LTO-wrapper-to-get-real-symbols-from-LTO-IR-.patch
Type: text/x-patch
Size: 19496 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20200210/be58b7e4/attachment.bin>
More information about the Binutils
mailing list