diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2019-09-05 18:23:37 +0200 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2019-09-05 18:35:18 +0200 |
commit | 6f7a2922078bde30ca6ec1391a30d79f59c87b9a (patch) | |
tree | c592c68f5e8c202e3981018ad345d8c9446d273a | |
parent | 6644bbedcc8af6cf17c37fa024bdb17b17df596b (diff) | |
download | binutils-gdb-6f7a2922078bde30ca6ec1391a30d79f59c87b9a.tar.gz |
Fix PR ld/24574
This restores a line that has been dropped when the auto-import feature
of the PE-COFF linker was overhauled about one year. It is necessary
for GDB to properly resolve extern symbol in DLLs.
ld/ChangeLog
* pe-dll.c (pe_find_data_imports): Replace again the original name
of the undefined symbol with the __imp_ prefixed one after it is
resolved.
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/pe-dll.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 9f7771d8845..ef1f5446c0c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2019-09-05 Eric Botcazou <ebotcazou@adacore.com> + + PR ld/24574 + * pe-dll.c (pe_find_data_imports): Replace again the original name of + the undefined symbol with the __imp_ prefixed one after it is resolved. + 2019-08-28 Tamar Christina <tamar.christina@arm.com> Backported from mainline. diff --git a/ld/pe-dll.c b/ld/pe-dll.c index 81ab116c46a..577b911da8a 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -1445,6 +1445,11 @@ pe_find_data_imports (const char *symhead, undef->u.def.value = sym->u.def.value; undef->u.def.section = sym->u.def.section; + /* We replace the original name with the __imp_ prefixed one, this + 1) may trash memory 2) leads to duplicate symbols. But this is + better than having a misleading name that can confuse GDB. */ + undef->root.string = sym->root.string; + if (link_info.pei386_auto_import == -1) { static bfd_boolean warned = FALSE; |