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

Message ID 87wo6z9nse.fsf@redhat.com
State New
Headers show
Series
  • Commit: PR 25747: Tell users about a missing "lib" prefix to library names
Related show

Commit Message

H.J. Lu via Binutils April 1, 2020, 4:24 p.m.
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  <nickc@redhat.com>

	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.

Comments

Maciej W. Rozycki April 1, 2020, 5:19 p.m. | #1
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

Patch

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;
 	}