[binutils-gdb] Fix generation of IDATA[6] for PE files.

Nick Clifton nickc@sourceware.org
Thu Dec 1 14:44:00 GMT 2016


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4ee1d7e401a8c1aedfdc86aac7faa8267eab1e5c

commit 4ee1d7e401a8c1aedfdc86aac7faa8267eab1e5c
Author: Rudy Y <rudyy.id@gmail.com>
Date:   Thu Dec 1 14:43:36 2016 +0000

    Fix generation of IDATA[6] for PE files.
    
    	PR ld/20880
    	* pe-dll.c (make_one): Use the hint if the ordinal is -1.

Diff:
---
 ld/ChangeLog |  5 +++++
 ld/pe-dll.c  | 11 +++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 446a4af..65c2854 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2016-12-01  Rudy Y  <rudyy.id@gmail.com>
+
+	PR ld/20880
+	* pe-dll.c (make_one): Use the hint if the ordinal is -1.
+
 2016-12-01  Yury Norov  <ynorov@caviumnetworks.com>
 
 	PR ld/20868
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 055a6cf..9d87cd2 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -2266,6 +2266,8 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
     }
   else
     {
+      int ord;
+
       /* { short, asciz }  */
       if (exp->its_name)
 	len = 2 + strlen (exp->its_name) + 1;
@@ -2277,8 +2279,13 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
       d6 = xmalloc (len);
       id6->contents = d6;
       memset (d6, 0, len);
-      d6[0] = exp->hint & 0xff;
-      d6[1] = exp->hint >> 8;
+
+      /* PR 20880:  Use exp->hint as a backup, just in case exp->ordinal
+	 contains an invalid value (-1).  */
+      ord = (exp->ordinal >= 0) ? exp->ordinal : exp->hint;
+      d6[0] = ord;
+      d6[1] = ord >> 8;
+
       if (exp->its_name)
 	strcpy ((char*) d6 + 2, exp->its_name);
       else



More information about the Binutils-cvs mailing list