diff options
author | DJ Delorie <dj@redhat.com> | 2000-07-07 20:09:28 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2000-07-07 20:09:28 +0000 |
commit | 602e90d3d506e5953083dc049b8082f58b880089 (patch) | |
tree | 7b21992bca59378293eac53cb9e93ff764f88fb1 | |
parent | 5f577f7d708da8fa779d62497c877dd6da112c73 (diff) | |
download | gdb-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.
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | ld/emultempl/pe.em | 27 |
2 files changed, 25 insertions, 9 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index d94af08..a477599 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +Wed Jul 05 03:18:00 2000 Charles Wilson <cwilson@ece.gatech.edu> + + * 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. + 2000-07-07 Mumit Khan <khan@xraylith.wisc.edu> * ld/emultempl/pe.em (pe_enable_auto_image_base): New variable. 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; |