diff options
author | David Edelsohn <dje.gcc@gmail.com> | 1995-12-05 03:36:11 +0000 |
---|---|---|
committer | David Edelsohn <dje.gcc@gmail.com> | 1995-12-05 03:36:11 +0000 |
commit | e503032eb1c9fea26adf172683b5983380476552 (patch) | |
tree | e565d0506258a8398404e849cbc6b614f0d8f84f /binutils | |
parent | 9e4b3a232971471552a92ef1d3a31b64e6577789 (diff) | |
download | gdb-e503032eb1c9fea26adf172683b5983380476552.zip gdb-e503032eb1c9fea26adf172683b5983380476552.tar.gz gdb-e503032eb1c9fea26adf172683b5983380476552.tar.bz2 |
Document the .idata section.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/dlltool.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/binutils/dlltool.c b/binutils/dlltool.c index eef12ac..df4cc54 100644 --- a/binutils/dlltool.c +++ b/binutils/dlltool.c @@ -160,6 +160,45 @@ */ +/* .idata section description + + The .idata section is the import table. It is a collection of several + subsections used to keep the pieces for each dll together: .idata$[234567]. + IE: Each dll's .idata$2's are catenated together, each .idata$3's, etc. + + .idata$2 = Import Directory Table + = array of IMAGE_IMPORT_DESCRIPTOR's. + There is one for each dll imported from plus a trailing null copy. + + DWORD Characteristics; - pointer to .idata$4 + DWORD TimeDateStamp; - currently always 0 + DWORD ForwarderChain; - currently always 0 + DWORD Name; - pointer to dll's name + PIMAGE_THUNK_DATA FirstThunk; - pointer to .idata$5 + + .idata$3 = ppc's way of null terminating .idata$2. Jeepers creepers, + can we have some consistency here??? + + .idata$4 = Import Lookup Table + = array of array of pointers to hint name table. + There is one for each dll being imported from, and each dll's set is + terminated by a trailing NULL. + + .idata$5 = Import Address Table + = array of array of pointers to hint name table. + There is one for each dll being imported from, and each dll's set is + terminated by a trailing NULL. + Initially, this table is identical to the Import Lookup Table. However, + at load time, the loader overwrites the entries with the address of the + function. + + .idata$6 = Hint Name Table + = Array of { short, asciz } entries, one for each imported function. + The `short' is the function's ordinal number. + + .idata$7 = dll name (eg: "kernel32.dll"). (.idata$6 for ppc) +*/ + #define PAGE_SIZE 4096 #define PAGE_MASK (-PAGE_SIZE) #include "bfd.h" |