diff options
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/emultempl/elf32.em | 12 |
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; |