From: Alan Modra Date: Thu, 3 May 2007 09:24:16 +0000 (+0000) Subject: * ld.texinfo (--no-warn-search-mismatch): Document. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fe7929ce4ac0d763d5669ada789c0b93140ce922;p=binutils-gdb.git * ld.texinfo (--no-warn-search-mismatch): Document. * ldfile.c (ldfile_try_open_bfd): Don't warn about skipping incompatible libraries if --no-warn-search-mismatch. * ld.h (args_type): Add warn_search_mismatch. * ldmain.c (main): Init it. * lexsup.c (enum option_values): Add OPTION_NO_WARN_SEARCH_MISMATCH. (ld_options): Add entry for --no-warn-search-mismatch. (parse_args): Handle OPTION_NO_WARN_SEARCH_MISMATCH. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index 1064f775bc3..8a40c00647a 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,14 @@ +2007-05-03 Alan Modra + + * ld.texinfo (--no-warn-search-mismatch): Document. + * ldfile.c (ldfile_try_open_bfd): Don't warn about skipping + incompatible libraries if --no-warn-search-mismatch. + * ld.h (args_type): Add warn_search_mismatch. + * ldmain.c (main): Init it. + * lexsup.c (enum option_values): Add OPTION_NO_WARN_SEARCH_MISMATCH. + (ld_options): Add entry for --no-warn-search-mismatch. + (parse_args): Handle OPTION_NO_WARN_SEARCH_MISMATCH. + 2007-05-03 Alan Modra * scripttempl/elf.sc: Add .debug_pubtypes and .debug_ranges. diff --git a/ld/ld.h b/ld/ld.h index f049c079b62..96b9b8d434c 100644 --- a/ld/ld.h +++ b/ld/ld.h @@ -177,6 +177,10 @@ typedef struct { files. */ bfd_boolean warn_mismatch; + /* Warn on attempting to open an incompatible library during a library + search. */ + bfd_boolean warn_search_mismatch; + /* Name of shared object whose symbol table should be filtered with this shared object. From the --filter option. */ char *filter_shlib; diff --git a/ld/ld.texinfo b/ld/ld.texinfo index 010345d7aa9..788c515efcf 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1390,6 +1390,11 @@ errors. This option should only be used with care, in cases when you have taken some special action that ensures that the linker errors are inappropriate. +@kindex --no-warn-search-mismatch +@item --no-warn-search-mismatch +Normally @command{ld} will give a warning if it finds an incompatible +library during a library search. This option silences the warning. + @kindex --no-whole-archive @item --no-whole-archive Turn off the effect of the @option{--whole-archive} option for subsequent diff --git a/ld/ldfile.c b/ld/ldfile.c index d3ad46732a3..9781aac887e 100644 --- a/ld/ldfile.c +++ b/ld/ldfile.c @@ -252,8 +252,10 @@ ldfile_try_open_bfd (const char *attempt, yyin = NULL; if (skip) { - einfo (_("%P: skipping incompatible %s when searching for %s\n"), - attempt, entry->local_sym_name); + if (command_line.warn_search_mismatch) + einfo (_("%P: skipping incompatible %s " + "when searching for %s\n"), + attempt, entry->local_sym_name); bfd_close (entry->the_bfd); entry->the_bfd = NULL; return FALSE; @@ -279,8 +281,10 @@ ldfile_try_open_bfd (const char *attempt, && bfd_get_flavour (output_bfd) == bfd_target_xcoff_flavour && bfd_check_format (entry->the_bfd, bfd_archive))) { - einfo (_("%P: skipping incompatible %s when searching for %s\n"), - attempt, entry->local_sym_name); + if (command_line.warn_search_mismatch) + einfo (_("%P: skipping incompatible %s " + "when searching for %s\n"), + attempt, entry->local_sym_name); bfd_close (entry->the_bfd); entry->the_bfd = NULL; return FALSE; diff --git a/ld/ldmain.c b/ld/ldmain.c index 1ab52b31119..ccbc8bb89bf 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -257,6 +257,7 @@ main (int argc, char **argv) command_line.interpreter = NULL; command_line.rpath = NULL; command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; command_line.check_section_addresses = TRUE; command_line.accept_unknown_input_arch = FALSE; command_line.symbolic = symbolic_unset; diff --git a/ld/lexsup.c b/ld/lexsup.c index 489f8adf3f0..dddbdcaff00 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -83,6 +83,7 @@ enum option_values OPTION_NO_DEMANGLE, OPTION_NO_KEEP_MEMORY, OPTION_NO_WARN_MISMATCH, + OPTION_NO_WARN_SEARCH_MISMATCH, OPTION_NOINHIBIT_EXEC, OPTION_NON_SHARED, OPTION_NO_WHOLE_ARCHIVE, @@ -428,6 +429,10 @@ static const struct ld_option ld_options[] = TWO_DASHES }, { {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH}, '\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES}, + { {"no-warn-search-mismatch", no_argument, NULL, + OPTION_NO_WARN_SEARCH_MISMATCH}, + '\0', NULL, N_("Don't warn on finding an incompatible library"), + TWO_DASHES}, { {"no-whole-archive", no_argument, NULL, OPTION_NO_WHOLE_ARCHIVE}, '\0', NULL, N_("Turn off --whole-archive"), TWO_DASHES }, { {"noinhibit-exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC}, @@ -963,6 +968,9 @@ parse_args (unsigned argc, char **argv) case OPTION_NO_WARN_MISMATCH: command_line.warn_mismatch = FALSE; break; + case OPTION_NO_WARN_SEARCH_MISMATCH: + command_line.warn_search_mismatch = FALSE; + break; case OPTION_NOINHIBIT_EXEC: force_make_executable = TRUE; break;