From: Pali Roh?r Date: Thu, 27 Jun 2024 11:17:27 +0000 (+0100) Subject: Improve comments describing the Import Directory Table X-Git-Tag: binutils-2_43~261 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=973563710c2f7c184fb6769e1b1d0fc5f3f181f5;p=thirdparty%2Fbinutils-gdb.git Improve comments describing the Import Directory Table PR 31728 --- 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