From 07f1e47a64cf333e0484c235be7a91f7d62732e2 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 23 Oct 2009 01:21:12 +0000 Subject: PR ld/10489 * emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Handle drive specifiers for DOS based filesystems in rpath-link strings. --- ld/ChangeLog | 6 ++++++ ld/emultempl/elf32.em | 12 ++++++++++++ 2 files changed, 18 insertions(+) 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 + + 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 * 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 < #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; -- cgit v1.1