diff options
author | Nick Clifton <nickc@redhat.com> | 2020-10-16 11:37:26 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-10-16 11:37:26 +0100 |
commit | 23ae20f5e3afeeab9aa616c63ab3b357668476d5 (patch) | |
tree | 77fe952d842fc8b8f4a0efccbc006686a3b05e77 /ld/lexsup.c | |
parent | 472d09c18a750f483ad974991f4f35ede3dfb10b (diff) | |
download | gdb-23ae20f5e3afeeab9aa616c63ab3b357668476d5.zip gdb-23ae20f5e3afeeab9aa616c63ab3b357668476d5.tar.gz gdb-23ae20f5e3afeeab9aa616c63ab3b357668476d5.tar.bz2 |
Add a new option to the linker: --error-handling-script=<NAME>. Run the script <NAME> if an undefined symbol or unfound library error is encountered.
PR 26626
* ldmain.c (undefined_symbol): If an error handlign script is
available, call it.
* ldfile.c (error_handling_script): Declare.
(ldfile_open_file): If a library cannot be found and an error
handling script is available, call it.
* ldmain.h (error_handling_script): Prototype.
* ldlex.h (OPTION_ERROR_HANDLING_SCRIPT): Define.
* lexsup.c (ld_options): Add --error-handling-script.
(parse_args): Add support for --errror-handling-script.
* ld.texi: Document the new feature.
* configure.ac: Add --error-handling-script option to disable
support for the new feature.
* NEWS: Mention the new feature.
* config.in: Regenerate.
* configure: Regenerate.
Diffstat (limited to 'ld/lexsup.c')
-rw-r--r-- | ld/lexsup.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/ld/lexsup.c b/ld/lexsup.c index 6894399..eae6493 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -386,6 +386,11 @@ static const struct ld_option ld_options[] = { {"allow-multiple-definition", no_argument, NULL, OPTION_ALLOW_MULTIPLE_DEFINITION}, '\0', NULL, N_("Allow multiple definitions"), TWO_DASHES }, +#if SUPPORT_ERROR_HANDLING_SCRIPT + { {"error-handling-script", required_argument, NULL, + OPTION_ERROR_HANDLING_SCRIPT}, + '\0', N_("SCRIPT"), N_("Provide a script to help with undefined symbol errors"), TWO_DASHES}, +#endif { {"no-undefined-version", no_argument, NULL, OPTION_NO_UNDEFINED_VERSION}, '\0', NULL, N_("Disallow undefined version"), TWO_DASHES }, { {"default-symver", no_argument, NULL, OPTION_DEFAULT_SYMVER}, @@ -1043,6 +1048,15 @@ parse_args (unsigned argc, char **argv) case OPTION_ALLOW_MULTIPLE_DEFINITION: link_info.allow_multiple_definition = TRUE; break; + +#if SUPPORT_ERROR_HANDLING_SCRIPT + case OPTION_ERROR_HANDLING_SCRIPT: + /* FIXME: Should we warn if the script is being overridden by another ? + Or maybe they should be chained together ? */ + error_handling_script = optarg; + break; +#endif + case OPTION_NO_UNDEFINED_VERSION: link_info.allow_undefined_version = FALSE; break; |