aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/emultempl/elf32.em12
2 files changed, 18 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3e11bcd..6d26e9c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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.
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index f7b70ac..6df6d0f 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -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;