aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2019-09-05 18:23:37 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2019-09-05 18:23:37 +0200
commitde07a745805b28ed2c973635752719c4a6a32b1d (patch)
tree64c4b7e469a0fd5746b03f777c4e35937dc0e9d4
parent[gdb/testsuite] Restore breakpoint command in ui-redirect.exp (diff)
downloadbinutils-gdb-de07a745805b28ed2c973635752719c4a6a32b1d.tar.gz
binutils-gdb-de07a745805b28ed2c973635752719c4a6a32b1d.tar.bz2
binutils-gdb-de07a745805b28ed2c973635752719c4a6a32b1d.zip
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/ChangeLog6
-rw-r--r--ld/pe-dll.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 0da9e2542da..37836aa70a8 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-09-05 Alan Modra <amodra@gmail.com>
* testsuite/ld-powerpc/pcrelopt.s,
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;