patches/binutils/2.20.1a/130-ld-sysroot.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Mon Feb 25 21:19:31 2013 +0100 (2013-02-25)
changeset 3185 f89f8e6f8766
parent 2088 4f21ba5f8e91
permissions -rw-r--r--
Makefile: fix parrallel (-j) installs

Currently, we would remove previously installed patches before
installing the new ones. Unfortunately, that does not play well
with heavily parallel installs.

Now, we consider it is the responsibility of the user to first
uninstall any previous version before installing a new one.

Reported-by: Markos Chandras <markos.chandras@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
     1 Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
     2 
     3 Always try to prepend the sysroot prefix to absolute filenames first.
     4 
     5 http://bugs.gentoo.org/275666
     6 http://sourceware.org/bugzilla/show_bug.cgi?id=10340
     7 
     8 diff -durN binutils-2.20.1.orig/ld/ldfile.c binutils-2.20.1/ld/ldfile.c
     9 --- binutils-2.20.1.orig/ld/ldfile.c	2009-08-30 00:11:01.000000000 +0200
    10 +++ binutils-2.20.1/ld/ldfile.c	2010-08-17 19:32:08.000000000 +0200
    11 @@ -308,18 +308,24 @@
    12       directory first.  */
    13    if (! entry->is_archive)
    14      {
    15 -      if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
    16 +      /* For absolute pathnames, try to always open the file in the
    17 +	 sysroot first. If this fails, try to open the file at the
    18 +	 given location. */
    19 +      entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
    20 +      if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
    21  	{
    22  	  char *name = concat (ld_sysroot, entry->filename,
    23  			       (const char *) NULL);
    24  	  if (ldfile_try_open_bfd (name, entry))
    25  	    {
    26  	      entry->filename = name;
    27 +	      entry->sysrooted = TRUE;
    28  	      return TRUE;
    29  	    }
    30  	  free (name);
    31  	}
    32 -      else if (ldfile_try_open_bfd (entry->filename, entry))
    33 +
    34 +      if (ldfile_try_open_bfd (entry->filename, entry))
    35  	{
    36  	  entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
    37  	    && is_sysrooted_pathname (entry->filename, TRUE);