This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]