PR ld/4023

* emultempl/aix.em (..._before_allocation): Strip sysroot prefix
  from any paths being inserted into the output binary's DT_RPATH.
This commit is contained in:
Nick Clifton 2007-03-07 07:52:09 +00:00
parent d64cc92a74
commit 057cac0830
2 changed files with 50 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2007-03-07 Nick Clifton <nickc@redhat.com>
PR ld/4023
* emultempl/aix.em (..._before_allocation): Strip sysroot prefix
from any paths being inserted into the output binary's DT_RPATH.
2007-03-02 Nathan Sidwell <nathan@codesourcery.com>
* emulparams/shelf_uclinux.sh: New. Missed in 2007-02-28 commit.

View File

@ -651,18 +651,52 @@ gld${EMULATION_NAME}_before_allocation (void)
size_t len;
search_dirs_type *search;
len = strlen (search_head->name);
libpath = xmalloc (len + 1);
strcpy (libpath, search_head->name);
for (search = search_head->next; search != NULL; search = search->next)
/* PR ld/4023: Strip sysroot prefix from any paths
being inserted into the output binary's DT_RPATH. */
if (ld_sysroot != NULL
&& * ld_sysroot != 0)
{
size_t nlen;
const char * name = search_head->name;
size_t ld_sysroot_len = strlen (ld_sysroot);
nlen = strlen (search->name);
libpath = xrealloc (libpath, len + nlen + 2);
libpath[len] = ':';
strcpy (libpath + len + 1, search->name);
len += nlen + 1;
if (strncmp (name, ld_sysroot, ld_sysroot_len) == 0)
name += ld_sysroot_len;
len = strlen (name);
libpath = xmalloc (len + 1);
strcpy (libpath, name);
for (search = search_head->next; search != NULL; search = search->next)
{
size_t nlen;
name = search->name;
if (strncmp (name, ld_sysroot, ld_sysroot_len) == 0)
name += ld_sysroot_len;
nlen = strlen (name);
libpath = xrealloc (libpath, len + nlen + 2);
libpath[len] = ':';
strcpy (libpath + len + 1, name);
len += nlen + 1;
}
}
else
{
len = strlen (search_head->name);
libpath = xmalloc (len + 1);
strcpy (libpath, search_head->name);
for (search = search_head->next; search != NULL; search = search->next)
{
size_t nlen;
nlen = strlen (search->name);
libpath = xrealloc (libpath, len + nlen + 2);
libpath[len] = ':';
strcpy (libpath + len + 1, search->name);
len += nlen + 1;
}
}
}