Improve comments describing the Import Directory Table

PR 31728
This commit is contained in:
Pali Roh?r 2024-06-27 12:17:27 +01:00 committed by Nick Clifton
parent 9653254a75
commit 973563710c
2 changed files with 11 additions and 4 deletions

View File

@ -213,12 +213,15 @@
.idata$3 = null terminating entry for .idata$2. .idata$3 = null terminating entry for .idata$2.
.idata$4 = Import Lookup Table .idata$4 = Import Lookup Table
= array of array of pointers to hint name table. = array of array of numbers, which has meaning based on its highest bit:
- when cleared - pointer to entry in Hint Name Table
- when set - 16-bit function's ordinal number (rest of the bits are zeros)
Function ordinal number subtracted by Export Directory Table's
Ordinal Base is an index entry into the Export Address Table.
There is one for each dll being imported from, and each dll's set is There is one for each dll being imported from, and each dll's set is
terminated by a trailing NULL. terminated by a trailing NULL.
.idata$5 = Import Address Table .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 There is one for each dll being imported from, and each dll's set is
terminated by a trailing NULL. terminated by a trailing NULL.
Initially, this table is identical to the Import Lookup Table. However, Initially, this table is identical to the Import Lookup Table. However,
@ -227,7 +230,11 @@
.idata$6 = Hint Name Table .idata$6 = Hint Name Table
= Array of { short, asciz } entries, one for each imported function. = Array of { short, asciz } entries, one for each imported function.
The `short' is the function's ordinal number. The `short' is the name hint - index into Export Name Pointer Table.
The `asciz` is the name string - value in Export Name Table referenced
by some entry in Export Name Pointer Table. Name hint should be the
index of that entry in Export Name Pointer Table. It has no connection
with the function's ordinal number.
.idata$7 = dll name (eg: "kernel32.dll"). */ .idata$7 = dll name (eg: "kernel32.dll"). */

View File

@ -2534,7 +2534,7 @@ make_one (def_file_export *exp, bfd *parent, bool include_jmp_stub)
} }
else else
{ {
/* { short, asciz } */ /* { short, asciz } = { hint, name } */
if (exp->its_name) if (exp->its_name)
len = 2 + strlen (exp->its_name) + 1; len = 2 + strlen (exp->its_name) + 1;
else else