This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Empty IAT entry
- From: "Craig Edwards" <craig at haenterprises dot com dot au>
- To: binutils at sources dot redhat dot com
- Date: Wed, 23 Jun 2004 19:35:15 +1000
- Subject: Empty IAT entry
- Organization: H.A. Enterprises Pty Ltd
I am compiling a very simple C program using cygwin gcc 3.3.1 and ld
2.15.90, but for some reason the Data Directory in the .exe doesn't seem
to be populated correctly. objdump reports:
<snip>
Entry b 00000000 00000000 Bound Import Directory
Entry c 00000000 00000000 Import Address Table Directory
Entry d 00000000 00000000 Delay Import Directory
There is an import table in .idata at 0x100000c0
The Import Tables (interpreted .idata section contents)
vma: Hint Time Forward DLL First
Table Stamp Chain Name Thunk
000000c0 000000ec 00000000 00000000 00000104 000000f8
DLL Name: xboxkrnl.exe
vma: Hint/Ord Member-Name Bound-To
80000031 49 <none>
</snip>
I would have expected an IAT entry like:
Entry c 000000f8 00000008 Import Address Table Directory
and in fact, the application doesn't run unless I manually edit (in hex)
the file to put 000000f8/00000008 values in the IAT. Is there something I
am missing? Is the IAT entry optional? Are there flags that can control
the generation of the IAT? Any advice would be appreciated.
Oh, if I am on the wrong mailing list, please advise... thanks a lot.
P.S. To further complicate things, the resultant .exe is actually executed
on an XBOX, so maybe the XBOX NT kernel has a special requirement that
this value be populated.
--
Craig Edwards