forked from Imagelibrary/binutils-gdb
PR ld/12365
PR ld/12672 bfd/ * bfd.c (BFD_PLUGIN): Define. (BFD_FLAGS_SAVED, BFD_FLAGS_FOR_BFD_USE_MASK): Add BFD_PLUGIN. * bfd-in2.h: Regenerate. * elflink.c (elf_link_output_extsym): Strip undefined plugin syms. * opncls.c (bfd_make_readable): Don't lose original bfd flags. ld/ * ldfile.c (ldfile_try_open_bfd): Don't attempt any plugin action when no_more_claiming. * ldmain.c (add_archive_element): Likewise. (multiple_definition): Remove plugin_multiple_definition call. (notice): Remove plugin_notice call. * ldlang.c (lang_list_insert_after, void lang_list_remove_tail): Move. Delete prototype. (plugin_insert): New static var. (open_input_bfds): Only rescan libs after plugin insert point. (lang_gc_sections): Omit plugin claimed files. (lang_process): Set plugin_insert. Only rescan when plugin adds objects. * plugin.h (no_more_claiming): Declare. (plugin_notice, plugin_multiple_definition): Don't declare. * plugin.c: Formatting. (orig_notice_all, orig_allow_multiple_defs, orig_callbacks, plugin_callbacks): New static vars. (no_more_claiming): Make global. (plugin_cached_allow_multiple_defs): Delete. (plugin_get_ir_dummy_bfd): Set SEC_EXCLUDE on dummy .text section, use newer bfd_make_section variant. Make COMMON section too. Error handling. Correct setting of gp size. (asymbol_from_plugin_symbol): Properly cast last arg of concat. (message): Likewise for ACONCAT. (asymbol_from_plugin_symbol): Use our COMMON section. (get_symbols): When report_plugin_symbols, show visibility too. (init_non_ironly_hash): Move. Don't test non_ironly_hash. (plugin_load_plugins): Save state of linker callbacks, set up to call plugin_notice instead. Call init_non_ironly_hash here. (plugin_call_all_symbols_read): Set plugin_multiple_definition in plugin callbacks. (plugin_notice): Rewrite. (plugin_multiple_definition): Make static, call original callback. ld/testsuite/ * ld-plugin/plugin-7.d: Adjust for plugin changes. * ld-plugin/plugin-8.d: Likewise. * ld-plugin/plugin.exp: Pass --verbose=2 for visibility test, and compare ld output to.. * ld-plugin/plugin-12.d: New.
This commit is contained in:
17
ld/plugin.h
17
ld/plugin.h
@@ -24,6 +24,10 @@
|
||||
/* Report plugin symbols. */
|
||||
extern bfd_boolean report_plugin_symbols;
|
||||
|
||||
/* Set at all symbols read time, to avoid recursively offering the plugin
|
||||
its own newly-added input files and libs to claim. */
|
||||
extern bfd_boolean no_more_claiming;
|
||||
|
||||
/* This is the only forward declaration we need to avoid having
|
||||
to include the plugin-api.h header in order to use this file. */
|
||||
struct ld_plugin_input_file;
|
||||
@@ -62,17 +66,4 @@ extern void plugin_call_cleanup (void);
|
||||
add_symbols hook has been called so that it can be read when linking. */
|
||||
extern bfd *plugin_get_ir_dummy_bfd (const char *name, bfd *template);
|
||||
|
||||
/* Notice-symbol bfd linker callback hook. */
|
||||
extern bfd_boolean plugin_notice (struct bfd_link_info *info,
|
||||
const char *name, bfd *abfd,
|
||||
asection *section, bfd_vma value);
|
||||
|
||||
/* Multiple-definition bfd linker callback hook. */
|
||||
extern bfd_boolean plugin_multiple_definition (struct bfd_link_info *info,
|
||||
const char *name,
|
||||
bfd *obfd, asection *osec,
|
||||
bfd_vma oval, bfd *nbfd,
|
||||
asection *nsec,
|
||||
bfd_vma nval);
|
||||
|
||||
#endif /* !def GLD_PLUGIN_H */
|
||||
|
||||
Reference in New Issue
Block a user