aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2020-04-01 17:25:28 +0100
committerNick Clifton <nickc@redhat.com>2020-04-01 17:25:28 +0100
commit77bf7b5317195e092a9f18fef993c412e2e05f53 (patch)
tree4b2113258ba79d89043c290072941389ec4ba01e /ld
parente139a727be23643702eecbbcaa9c590cc680e3d7 (diff)
downloadfsf-binutils-gdb-77bf7b5317195e092a9f18fef993c412e2e05f53.zip
fsf-binutils-gdb-77bf7b5317195e092a9f18fef993c412e2e05f53.tar.gz
fsf-binutils-gdb-77bf7b5317195e092a9f18fef993c412e2e05f53.tar.bz2
Extend the linker's error message for missing libraries if there is an almost match.
PR ld/25747 * ldfile.c (ldfile_open_file): If a search for a library fails, but there is a file that would match if it had a "lib" prefix to its name, then tell the user.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog7
-rw-r--r--ld/ldfile.c16
2 files changed, 23 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 16ffc30..b1e9f53 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2020-04-01 Nick Clifton <nickc@redhat.com>
+
+ PR ld/25747
+ * ldfile.c (ldfile_open_file): If a search for a library fails,
+ but there is a file that would match if it had a "lib" prefix to
+ its name, then tell the user.
+
2020-04-01 Tamar Christina <tamar.christina@arm.com>
PR ld/16017
diff --git a/ld/ldfile.c b/ld/ldfile.c
index aa84906..3248a04 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -445,6 +445,22 @@ ldfile_open_file (lang_input_statement_type *entry)
entry->local_sym_name, ld_sysroot);
else
einfo (_("%P: cannot find %s\n"), entry->local_sym_name);
+
+ /* PR 25747: Be kind to users who forgot to add the
+ "lib" prefix to their library when it was created. */
+ for (arch = search_arch_head; arch != NULL; arch = arch->next)
+ {
+ if (ldfile_open_file_search (arch->name, entry, "", ".a"))
+ {
+ const char * base = lbasename (entry->filename);
+
+ einfo (_("%P: note to link with %s use use -l:%s or rename it to lib%s\n"),
+ entry->filename, base, base);
+ bfd_close (entry->the_bfd);
+ entry->the_bfd = NULL;
+ break;
+ }
+ }
entry->flags.missing_file = TRUE;
input_flags.missing_file = TRUE;
}