patches/binutils/2.20.1/130-ld-sysroot.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:26:53 2011 +0200 (2011-08-02)
changeset 2592 4908eb2b6f17
parent 1621 60446d2e5660
permissions -rw-r--r--
scripts/functions: cvs retrieval first tries the mirror for tarballs

The cvs download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via cvs.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard cvs retrieval will kick in.

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