This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Empty IAT entry


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]