This is the mail archive of the binutils@sourceware.org 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]

Re: arm-wince-pe, dll auto-importing broken when


Daniel Jacobowitz wrote:
On Fri, May 05, 2006 at 03:03:15AM +0100, Pedro Alves wrote:
I have to reply to myself, but I just noticed what probably the real problem is. I was close, but not there.

SORT(*)(.idata$3)
.idata$3 0x0001503c 0x14 /usr/local/lib/gcc/arm-wince-pe/4.1.1/../../../../arm-wince-pe/lib/zlibce.lib(zlibce.dll.c)
0x0001503c __NULL_IMPORT_DESCRIPTOR
.idata$3 0x00015050 0x14 fu000001.o
0x00015064 0x4 LONG 0x0
0x00015068 0x4 LONG 0x0
0x0001506c 0x4 LONG 0x0
0x00015070 0x4 LONG 0x0
0x00015074 0x4 LONG 0x0


The os loader will see __NULL_IMPORT_DESCRIPTOR, which is an import descriptor terminator, and will not process the fu000001.o
import descriptor.
So I guess I should be looking at why isn't __NULL_IMPORT_DESCRIPTOR discarded by default.
Any hints?

Now, I don't know the first thing about PE, so I'm guessing. But what's in fu00001.o that you want to get processed? The comments in dlltool say .idata$3 are just supposed to be terminators.

It is related to auto importing. It contains the auto import fixup entries. It consists of an entry of type IMAGE_IMPORT_DESCRIPTOR which takes
0x14 bytes.
See comments at the top of pe-dll.c, and also make_import_fixup_entry in that same file for where it is generated.


The loader will process the the null terminated array of import descriptors. Since __NULL_IMPORT_DESCRIPTOR is filled with 0,
the loader will stop processing there instead of at that,


              0x00015064        0x4 LONG 0x0
              0x00015068        0x4 LONG 0x0
              0x0001506c        0x4 LONG 0x0
              0x00015070        0x4 LONG 0x0
              0x00015074        0x4 LONG 0x0
Which is really the same as an unnamed __NULL_IMPORT_DESCRIPTOR.

Cheers,
Pedro Alves



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