aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog11
-rw-r--r--ld/ld.h4
-rw-r--r--ld/ld.texinfo5
-rw-r--r--ld/ldfile.c12
-rw-r--r--ld/ldmain.c1
-rw-r--r--ld/lexsup.c8
6 files changed, 37 insertions, 4 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 1064f77..8a40c00 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,16 @@
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>
+
* scripttempl/elf.sc: Add .debug_pubtypes and .debug_ranges.
2007-05-01 Robert Millan <rmh@aybabtu.com>
diff --git a/ld/ld.h b/ld/ld.h
index f049c07..96b9b8d 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 010345d..788c515 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 d3ad467..9781aac 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 1ab52b3..ccbc8bb 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 489f8ad..dddbdca 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;