[binutils-gdb] Improve comments describing the Import Directory Table
Nick Clifton
nickc@sourceware.org
Thu Jun 27 11:18:00 GMT 2024
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=973563710c2f7c184fb6769e1b1d0fc5f3f181f5
commit 973563710c2f7c184fb6769e1b1d0fc5f3f181f5
Author: Pali Roh?r <pali@kernel.org>
Date: Thu Jun 27 12:17:27 2024 +0100
Improve comments describing the Import Directory Table
PR 31728
Diff:
---
binutils/dlltool.c | 13 ++++++++++---
ld/pe-dll.c | 2 +-
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index 2c37ad3c6a3..13655a8f0c1 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -213,12 +213,15 @@
.idata$3 = null terminating entry for .idata$2.
.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
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,
@@ -227,7 +230,11 @@
.idata$6 = Hint Name Table
= 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"). */
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 31bdb0b95ad..5b274392143 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -2534,7 +2534,7 @@ make_one (def_file_export *exp, bfd *parent, bool include_jmp_stub)
}
else
{
- /* { short, asciz } */
+ /* { short, asciz } = { hint, name } */
if (exp->its_name)
len = 2 + strlen (exp->its_name) + 1;
else
More information about the Binutils-cvs
mailing list