/* Plugin control for the GNU linker.
- Copyright 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2022 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
#ifndef GLD_PLUGIN_H
#define GLD_PLUGIN_H
+/* Report plugin symbols. */
+extern bool 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 bool 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;
-/* Handle -plugin arg: find and load plugin, or return error. */
-extern int plugin_opt_plugin (const char *plugin);
+/* Handle -plugin arg: find and load plugin. */
+extern void plugin_opt_plugin (const char *plugin);
/* Accumulate option arguments for last-loaded plugin, or return
error if none. */
extern int plugin_opt_plugin_arg (const char *arg);
/* Load up and initialise all plugins after argument parsing. */
-extern int plugin_load_plugins (void);
+extern void plugin_load_plugins (void);
/* Return name of plugin which caused an error in any of the above. */
extern const char *plugin_error_plugin (void);
/* Call 'claim file' hook for all plugins. */
-extern int plugin_call_claim_file (const struct ld_plugin_input_file *file,
- int *claimed);
+extern void plugin_maybe_claim (lang_input_statement_type *);
/* Call 'all symbols read' hook for all plugins. */
extern int plugin_call_all_symbols_read (void);
-/* Call 'cleanup' hook for all plugins. */
-extern int plugin_call_cleanup (void);
-
-/* Generate a dummy BFD to represent an IR file, for any callers of
- plugin_call_claim_file to use as the handle in the ld_plugin_input_file
- struct that they build to pass in. The BFD is initially writable, so
- that symbols can be added to it; it must be made readable after the
- 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);
-
-/* Check if the BFD passed in is an IR dummy object file. */
-extern bfd_boolean is_ir_dummy_bfd (const bfd *abfd);
-
-/* 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);
+/* Call 'cleanup' hook for all plugins at exit. */
+extern void plugin_call_cleanup (void);
#endif /* !def GLD_PLUGIN_H */