This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Add symbol called __nm_<name> to exported symbols created by dlltool.
- From: Nick Clifton <nickc at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 27 Feb 2017 15:03:35 -0000
- Subject: [binutils-gdb] Add symbol called __nm_<name> to exported symbols created by dlltool.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=47612ae91c5f2de8960df1d96adf225d2455123f
commit 47612ae91c5f2de8960df1d96adf225d2455123f
Author: Rudy Y <rudyy.id@gmail.com>
Date: Mon Feb 27 15:02:52 2017 +0000
Add symbol called __nm_<name> to exported symbols created by dlltool.
PR 20881
* dlltool.c (secdata): Align .idata$6 on 2 byte boundary.
(make_one_lib_file): Export a symbol called __nm_<symbol> for use
with auto-importing.
Diff:
---
binutils/ChangeLog | 7 +++++++
binutils/dlltool.c | 20 +++++++++++++++++++-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index a615361..4c78f79 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,10 @@
+2017-02-27 Rudy Y <rudyy.id@gmail.com>
+
+ PR 20881
+ * dlltool.c (secdata): Align .idata$6 on 2 byte boundary.
+ (make_one_lib_file): Export a symbol called __nm_<symbol> for use
+ with auto-importing.
+
2017-02-25 Alan Modra <amodra@gmail.com>
* testsuite/binutils-all/dw5.S: Replace .string with .asciz.
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index 15e6d7f..88ee5a5 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -2338,7 +2338,7 @@ static sinfo secdata[NSECS] =
INIT_SEC_DATA (IDATA7, ".idata$7", SEC_HAS_CONTENTS, 2),
INIT_SEC_DATA (IDATA5, ".idata$5", SEC_HAS_CONTENTS, 2),
INIT_SEC_DATA (IDATA4, ".idata$4", SEC_HAS_CONTENTS, 2),
- INIT_SEC_DATA (IDATA6, ".idata$6", SEC_HAS_CONTENTS, 1)
+ INIT_SEC_DATA (IDATA6, ".idata$6", SEC_HAS_CONTENTS, 2)
};
#else
@@ -2543,6 +2543,18 @@ make_one_lib_file (export_type *exp, int i, int delay)
#endif
ptrs[oidx++] = exp_label;
}
+#ifndef DLLTOOL_PPC
+ else
+ {
+ /* PR 20881: Add __nm_<symbol> for the exported library.
+ FIXME: Might be needed for PowerPC, but currently unable to test this. */
+ exp_label = bfd_make_empty_symbol (abfd);
+ exp_label->name = make_imp_label ("__nm_", exp->name);
+ exp_label->section = secdata[IDATA6].sec;
+ exp_label->flags = BSF_GLOBAL;
+ exp_label->value = 0;
+ }
+#endif
/* Generate imp symbols with one underscore for Microsoft
compatibility, and with two underscores for backward
@@ -2573,6 +2585,12 @@ make_one_lib_file (export_type *exp, int i, int delay)
if (create_compat_implib)
ptrs[oidx++] = iname;
ptrs[oidx++] = iname2;
+#ifndef DLLTOOL_PPC
+ /* PR 20881:
+ According to pe-dll.c __nm_<symbol> should be add after __imp_<symbol>. */
+ if (exp->data)
+ ptrs[oidx++] = exp_label;
+#endif
iname_lab_pp = ptrs + oidx;
ptrs[oidx++] = iname_lab;