* 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.
This commit is contained in:
Alan Modra
2007-05-03 09:24:16 +00:00
parent 083a6ddf8c
commit fe7929ce4a
6 changed files with 37 additions and 4 deletions

View File

@ -1,3 +1,14 @@
2007-05-03 Alan Modra <amodra@bigpond.net.au>
* 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 <amodra@bigpond.net.au> 2007-05-03 Alan Modra <amodra@bigpond.net.au>
* scripttempl/elf.sc: Add .debug_pubtypes and .debug_ranges. * scripttempl/elf.sc: Add .debug_pubtypes and .debug_ranges.

View File

@ -177,6 +177,10 @@ typedef struct {
files. */ files. */
bfd_boolean warn_mismatch; 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 /* Name of shared object whose symbol table should be filtered with
this shared object. From the --filter option. */ this shared object. From the --filter option. */
char *filter_shlib; char *filter_shlib;

View File

@ -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 have taken some special action that ensures that the linker errors are
inappropriate. 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 @kindex --no-whole-archive
@item --no-whole-archive @item --no-whole-archive
Turn off the effect of the @option{--whole-archive} option for subsequent Turn off the effect of the @option{--whole-archive} option for subsequent

View File

@ -252,8 +252,10 @@ ldfile_try_open_bfd (const char *attempt,
yyin = NULL; yyin = NULL;
if (skip) if (skip)
{ {
einfo (_("%P: skipping incompatible %s when searching for %s\n"), if (command_line.warn_search_mismatch)
attempt, entry->local_sym_name); einfo (_("%P: skipping incompatible %s "
"when searching for %s\n"),
attempt, entry->local_sym_name);
bfd_close (entry->the_bfd); bfd_close (entry->the_bfd);
entry->the_bfd = NULL; entry->the_bfd = NULL;
return FALSE; return FALSE;
@ -279,8 +281,10 @@ ldfile_try_open_bfd (const char *attempt,
&& bfd_get_flavour (output_bfd) == bfd_target_xcoff_flavour && bfd_get_flavour (output_bfd) == bfd_target_xcoff_flavour
&& bfd_check_format (entry->the_bfd, bfd_archive))) && bfd_check_format (entry->the_bfd, bfd_archive)))
{ {
einfo (_("%P: skipping incompatible %s when searching for %s\n"), if (command_line.warn_search_mismatch)
attempt, entry->local_sym_name); einfo (_("%P: skipping incompatible %s "
"when searching for %s\n"),
attempt, entry->local_sym_name);
bfd_close (entry->the_bfd); bfd_close (entry->the_bfd);
entry->the_bfd = NULL; entry->the_bfd = NULL;
return FALSE; return FALSE;

View File

@ -257,6 +257,7 @@ main (int argc, char **argv)
command_line.interpreter = NULL; command_line.interpreter = NULL;
command_line.rpath = NULL; command_line.rpath = NULL;
command_line.warn_mismatch = TRUE; command_line.warn_mismatch = TRUE;
command_line.warn_search_mismatch = TRUE;
command_line.check_section_addresses = TRUE; command_line.check_section_addresses = TRUE;
command_line.accept_unknown_input_arch = FALSE; command_line.accept_unknown_input_arch = FALSE;
command_line.symbolic = symbolic_unset; command_line.symbolic = symbolic_unset;

View File

@ -83,6 +83,7 @@ enum option_values
OPTION_NO_DEMANGLE, OPTION_NO_DEMANGLE,
OPTION_NO_KEEP_MEMORY, OPTION_NO_KEEP_MEMORY,
OPTION_NO_WARN_MISMATCH, OPTION_NO_WARN_MISMATCH,
OPTION_NO_WARN_SEARCH_MISMATCH,
OPTION_NOINHIBIT_EXEC, OPTION_NOINHIBIT_EXEC,
OPTION_NON_SHARED, OPTION_NON_SHARED,
OPTION_NO_WHOLE_ARCHIVE, OPTION_NO_WHOLE_ARCHIVE,
@ -428,6 +429,10 @@ static const struct ld_option ld_options[] =
TWO_DASHES }, TWO_DASHES },
{ {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH}, { {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH},
'\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES}, '\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}, { {"no-whole-archive", no_argument, NULL, OPTION_NO_WHOLE_ARCHIVE},
'\0', NULL, N_("Turn off --whole-archive"), TWO_DASHES }, '\0', NULL, N_("Turn off --whole-archive"), TWO_DASHES },
{ {"noinhibit-exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC}, { {"noinhibit-exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC},
@ -963,6 +968,9 @@ parse_args (unsigned argc, char **argv)
case OPTION_NO_WARN_MISMATCH: case OPTION_NO_WARN_MISMATCH:
command_line.warn_mismatch = FALSE; command_line.warn_mismatch = FALSE;
break; break;
case OPTION_NO_WARN_SEARCH_MISMATCH:
command_line.warn_search_mismatch = FALSE;
break;
case OPTION_NOINHIBIT_EXEC: case OPTION_NOINHIBIT_EXEC:
force_make_executable = TRUE; force_make_executable = TRUE;
break; break;