Empty IAT entry

Craig Edwards craig@haenterprises.com.au
Wed Jun 23 09:36:00 GMT 2004


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



More information about the Binutils mailing list