Commit: PR 25747: Tell users about a missing "lib" prefix to library names

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Commit: PR 25747: Tell users about a missing "lib" prefix to library names

Sourceware - binutils list mailing list
Hi Guys

  I am applying the patch below to extend the linker's error message
  when it fails to find a library, but there is a file present in the
  search path which matches if the "lib" prefix were to be ignored.

Cheers
  Nick

ld/ChangeLog
2020-04-01  Nick Clifton  <[hidden email]>

        PR ;d/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.

diff --git a/ld/ldfile.c b/ld/ldfile.c
index aa84906992..3248a04607 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;
  }

Reply | Threaded
Open this post in threaded view
|

Re: Commit: PR 25747: Tell users about a missing "lib" prefix to library names

Maciej W. Rozycki
On Wed, 1 Apr 2020, Nick Clifton via Binutils wrote:

> diff --git a/ld/ldfile.c b/ld/ldfile.c
> index aa84906992..3248a04607 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"),

 s/use use/use/ I presume here.

 Can you please match the heading of the change committed with the subject
of the corresponding message sent to the mailing list (as `git am' would)?  
It will make it easier to chase any discussion corresponding to a commit
when someone does repo excavation in the future.

  Maciej