This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
PATCH for ld on Cygwin: avoid core dump when linked-to DLL has no exports
- From: Eric Hanchrow <offby1 at blarg dot net>
- To: binutils at sources dot redhat dot com
- Date: 30 Apr 2003 11:47:10 -0700
- Subject: PATCH for ld on Cygwin: avoid core dump when linked-to DLL has no exports
This patch works around, or perhaps even fixes, a problem that I
recently had. I was trying to link against a DLL that (by accident)
had no exports, like this:
ld sans_exports.dll
I was seeing a seg fault as the linker was attempting to read from
`expdata', even though that pointed to uninitialized memory.
I'm not certain that this is the best solution, but it seems
reasonable.
--- ./ChangeLog~ 2003-03-07 18:50:18.000000000 -0800
+++ ./ChangeLog 2003-04-30 10:00:02.000000000 -0700
@@ -1,3 +1,8 @@
+2003-04-30 Eric Hanchrow <erich@votehere.net>
+
+ * pe-dll.c (pe_implied_import_dll): Don't crash when export_size
+ is zero; instead print error and return FALSE.
+
2003-03-04 Dmitry Diky <diwil@mail.ru>
* Makefile.am: Add new devices x1122 x1132 emulation
--- ./pe-dll.c~ 2003-02-28 22:00:15.000000000 -0800
+++ ./pe-dll.c 2003-04-29 17:03:34.000000000 -0700
@@ -2531,6 +2531,13 @@
export_rva = pe_get32 (dll, opthdr_ofs + 96);
export_size = pe_get32 (dll, opthdr_ofs + 100);
+
+ if (0 == export_size)
+ {
+ einfo ("%X%s: this DLL has no exports\n", filename);
+ return FALSE;
+ }
+
nsections = pe_get16 (dll, pe_header_offset + 4 + 2);
secptr = (pe_header_offset + 4 + 20 +
pe_get16 (dll, pe_header_offset + 4 + 16));
--
But users will not now with glad cries glom on to a language that
gives them no more than what Scheme or Pascal gave them.
-- Guy Steele, http://www.sun.com/research/jtech/pubs/98-oopsla-growing.ps