aboutsummaryrefslogtreecommitdiff
path: root/ld/emultempl/pe.em
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2000-07-07 20:09:28 +0000
committerDJ Delorie <dj@redhat.com>2000-07-07 20:09:28 +0000
commit602e90d3d506e5953083dc049b8082f58b880089 (patch)
tree7b21992bca59378293eac53cb9e93ff764f88fb1 /ld/emultempl/pe.em
parent5f577f7d708da8fa779d62497c877dd6da112c73 (diff)
downloadgdb-602e90d3d506e5953083dc049b8082f58b880089.zip
gdb-602e90d3d506e5953083dc049b8082f58b880089.tar.gz
gdb-602e90d3d506e5953083dc049b8082f58b880089.tar.bz2
* ld/emultempl/pe.em: institute the following search order for
dynamic libraries on pei386: libfoo.dll.a, foo.dll.a (import libs), libfoo.dll, foo.dll (link direct to dll). Fall back to static lib (libfoo.a) if none of the above are found.
Diffstat (limited to 'ld/emultempl/pe.em')
-rw-r--r--ld/emultempl/pe.em27
1 files changed, 18 insertions, 9 deletions
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index c7cb96c..92af07e 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -1369,24 +1369,33 @@ gld_${EMULATION_NAME}_open_dynamic_archive (arch, search, entry)
string = (char *) xmalloc (strlen (search->name)
+ strlen (filename)
- + sizeof "/lib.dll"
+ + sizeof "/lib.a.dll"
+ 1);
- /* Try "foo.dll" first. */
- sprintf (string, "%s/%s.dll", search->name, filename);
+ /* Try "libfoo.dll.a" first (preferred explicit import library for dll's */
+ sprintf (string, "%s/lib%s.dll.a", search->name, filename);
if (! ldfile_try_open_bfd (string, entry))
{
- /* Try "libfoo.dll" next. */
- sprintf (string, "%s/lib%s.dll", search->name, filename);
-
+ /* Try "foo.dll.a" next (alternate explicit import library for dll's */
+ sprintf (string, "%s/%s.dll.a", search->name, filename);
if (! ldfile_try_open_bfd (string, entry))
{
- free (string);
- return false;
+ /* Try "libfoo.dll" (preferred dll name) */
+ sprintf (string, "%s/lib%s.dll", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ /* Finally, try "foo.dll" (alternate dll name) */
+ sprintf (string, "%s/%s.dll", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ free (string);
+ return false;
+ }
+ }
}
}
-
+
entry->filename = string;
return true;