mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-15 13:48:26 +08:00
ld: Add -plugin-save-temps
Add -plugin-save-temps to store plugin intermediate files permanently. It can be used to exam the final input object files generated from IR inputs. * NEWS: Mention -plugin-save-temps. * ld.h (ld_config_type): Add plugin_save_temps. * ld.texi: Document -plugin-save-temps. * ldlex.h (option_values): Add OPTION_PLUGIN_SAVE_TEMPS. * lexsup.c (ld_options): Add -plugin-save-temps. (parse_args): Handle OPTION_PLUGIN_SAVE_TEMPS. * plugin.c (plugin_call_cleanup): Don't call plugin cleanup_handler for -plugin-save-temps.
This commit is contained in:
2
ld/NEWS
2
ld/NEWS
@@ -1,5 +1,7 @@
|
||||
-*- text -*-
|
||||
|
||||
* Add -plugin-save-temps to store plugin intermediate files permanently.
|
||||
|
||||
Changes in 2.42:
|
||||
|
||||
* Add -z mark-plt/-z nomark-plt options to x86-64 ELF linker to mark PLT
|
||||
|
||||
3
ld/ld.h
3
ld/ld.h
@@ -300,6 +300,9 @@ typedef struct
|
||||
/* The size of the hash table to use. */
|
||||
unsigned long hash_table_size;
|
||||
|
||||
/* If set, store plugin intermediate files permanently. */
|
||||
bool plugin_save_temps;
|
||||
|
||||
/* If set, print discarded sections in map file output. */
|
||||
bool print_map_discarded;
|
||||
|
||||
|
||||
@@ -1140,6 +1140,10 @@ Omit debugger symbol information (but not all symbols) from the output file.
|
||||
Omit (or do not omit) global symbols defined in discarded sections.
|
||||
Enabled by default.
|
||||
|
||||
@kindex -plugin-save-temps
|
||||
@item -plugin-save-temps
|
||||
Store the plugin ``temporary'' intermediate files permanently.
|
||||
|
||||
@kindex -t
|
||||
@kindex --trace
|
||||
@cindex input files, displaying
|
||||
|
||||
@@ -146,6 +146,7 @@ enum option_values
|
||||
#if BFD_SUPPORTS_PLUGINS
|
||||
OPTION_PLUGIN,
|
||||
OPTION_PLUGIN_OPT,
|
||||
OPTION_PLUGIN_SAVE_TEMPS,
|
||||
#endif /* BFD_SUPPORTS_PLUGINS */
|
||||
OPTION_DEFAULT_SCRIPT,
|
||||
OPTION_PRINT_OUTPUT_FORMAT,
|
||||
|
||||
@@ -187,6 +187,9 @@ static const struct ld_option ld_options[] =
|
||||
'\0', N_("PLUGIN"), N_("Load named plugin"), ONE_DASH },
|
||||
{ {"plugin-opt", required_argument, NULL, OPTION_PLUGIN_OPT},
|
||||
'\0', N_("ARG"), N_("Send arg to last-loaded plugin"), ONE_DASH },
|
||||
{ {"plugin-save-temps", no_argument, NULL, OPTION_PLUGIN_SAVE_TEMPS},
|
||||
'\0', NULL, N_("Store plugin intermediate files permanently"),
|
||||
ONE_DASH },
|
||||
{ {"flto", optional_argument, NULL, OPTION_IGNORE},
|
||||
'\0', NULL, N_("Ignored for GCC LTO option compatibility"),
|
||||
ONE_DASH },
|
||||
@@ -1211,6 +1214,9 @@ parse_args (unsigned argc, char **argv)
|
||||
if (plugin_opt_plugin_arg (optarg))
|
||||
einfo (_("%F%P: bad -plugin-opt option\n"));
|
||||
break;
|
||||
case OPTION_PLUGIN_SAVE_TEMPS:
|
||||
config.plugin_save_temps = true;
|
||||
break;
|
||||
#endif /* BFD_SUPPORTS_PLUGINS */
|
||||
case 'q':
|
||||
link_info.emitrelocations = true;
|
||||
|
||||
19
ld/plugin.c
19
ld/plugin.c
@@ -1367,14 +1367,17 @@ plugin_call_cleanup (void)
|
||||
{
|
||||
if (curplug->cleanup_handler && !curplug->cleanup_done)
|
||||
{
|
||||
enum ld_plugin_status rv;
|
||||
curplug->cleanup_done = true;
|
||||
called_plugin = curplug;
|
||||
rv = (*curplug->cleanup_handler) ();
|
||||
called_plugin = NULL;
|
||||
if (rv != LDPS_OK)
|
||||
info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"),
|
||||
curplug->name, rv);
|
||||
if (!config.plugin_save_temps)
|
||||
{
|
||||
enum ld_plugin_status rv;
|
||||
curplug->cleanup_done = true;
|
||||
called_plugin = curplug;
|
||||
rv = (*curplug->cleanup_handler) ();
|
||||
called_plugin = NULL;
|
||||
if (rv != LDPS_OK)
|
||||
info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"),
|
||||
curplug->name, rv);
|
||||
}
|
||||
dlclose (curplug->dlhandle);
|
||||
}
|
||||
curplug = curplug->next;
|
||||
|
||||
Reference in New Issue
Block a user