PR ld/10489
authorAlan Modra <amodra@gmail.com>
Fri, 23 Oct 2009 01:21:12 +0000 (01:21 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 23 Oct 2009 01:21:12 +0000 (01:21 +0000)
* emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Handle
drive specifiers for DOS based filesystems in rpath-link strings.

ld/ChangeLog
ld/emultempl/elf32.em

index 3e11bcdb508381e4817bd785b335a44eac298749..6d26e9c75778705f08dd1ce5b302102236d3522c 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-23  Ryan Mansfield  <rmansfield@qnx.com>
+
+       PR ld/10489
+       * emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Handle
+       drive specifiers for DOS based filesystems in rpath-link strings.
+
 2009-10-19  Nick Clifton  <nickc@redhat.com>
 
        * Makefile.am: Remove spurious sanitization marker.
index f7b70acf5d929c8c00910dd2e083a6c9c903a0f0..6df6d0f7b5d11996589b7f7cc80ee6322f9dcb03 100644 (file)
@@ -58,6 +58,7 @@ fragment <<EOF
 #include <ldgram.h>
 #include "elf/common.h"
 #include "elf-bfd.h"
+#include "filenames.h"
 
 /* Declare functions used by various EXTRA_EM_FILEs.  */
 static void gld${EMULATION_NAME}_before_parse (void);
@@ -472,6 +473,17 @@ gld${EMULATION_NAME}_search_needed (const char *path,
       if (s == NULL)
        s = path + strlen (path);
 
+#if HAVE_DOS_BASED_FILE_SYSTEM
+      /* Assume a match on the second char is part of drive specifier.  */
+      else if (config.rpath_separator == ':'
+              && s == path + 1
+              && ISALPHA (*path))
+       {
+         s = strchr (s + 1, config.rpath_separator);
+         if (s == NULL)
+           s = path + strlen (path);
+       }
+#endif
       filename = (char *) xmalloc (s - path + len + 2);
       if (s == path)
        sset = filename;