[qboosh@pld-linux.org: binutils 2.14.90.0.8 - ld crash when cross-linking PE DLL on 64-bit archs]

H. J. Lu hjl@lucon.org
Wed Feb 25 00:16:00 GMT 2004


Here is the patch.

H.J.
----- Forwarded message from Jakub Bogusz <qboosh@pld-linux.org> -----

Delivered-To: hjl@localhost.lucon.org
Date: Thu, 19 Feb 2004 20:08:15 +0100
From: Jakub Bogusz <qboosh@pld-linux.org>
To: hjl@lucon.org
Subject: binutils 2.14.90.0.8 - ld crash when cross-linking PE DLL on 64-bit archs
User-Agent: Mutt/1.4.2.1i
X-Spam-Status: No, hits=-2.0 required=3.6
	tests=AWL,PATCH_UNIFIED_DIFF,SPAM_PHRASE_00_01,USER_AGENT,
	      USER_AGENT_MUTT
	version=2.44
X-Spam-Level: 


----- End forwarded message -----
-------------- next part --------------
--- binutils-2.14.90.0.8/ld/pe-dll.c.orig	2004-01-14 21:07:52.000000000 +0000
+++ binutils-2.14.90.0.8/ld/pe-dll.c	2004-02-18 21:56:38.000000000 +0000
@@ -25,6 +25,7 @@
 #include "libiberty.h"
 #include "safe-ctype.h"
 
+#include <stdint.h>
 #include <time.h>
 
 #include "ld.h"
@@ -916,8 +917,8 @@
 {
   int s, hint;
   unsigned char *edirectory;
-  unsigned long *eaddresses;
-  unsigned long *enameptrs;
+  uint32_t *eaddresses;
+  uint32_t *enameptrs;
   unsigned short *eordinals;
   unsigned char *enamestr;
   time_t now;
@@ -928,7 +929,7 @@
 
   /* Note use of array pointer math here.  */
   edirectory = edata_d;
-  eaddresses = (unsigned long *) (edata_d + 40);
+  eaddresses = (uint32_t *) (edata_d + 40);
   enameptrs = eaddresses + export_table_size;
   eordinals = (unsigned short *) (enameptrs + count_exported_byname);
   enamestr = (char *) (eordinals + count_exported_byname);


More information about the Binutils mailing list