Module: wine Branch: master Commit: 6892434b22baff054da67c0fac75fcd49a674074 URL: https://gitlab.winehq.org/wine/wine/-/commit/6892434b22baff054da67c0fac75fcd...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Jul 3 13:04:42 2023 +0200
winedump: Add support for dumping IMPORT_OBJECT_NAME_EXPORTAS symbols.
This is used by ARM64EC importlibs.
---
include/winnt.h | 3 ++- tools/winedump/lib.c | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/include/winnt.h b/include/winnt.h index 8d803eaceb1..26be0ccaec5 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -3541,7 +3541,8 @@ typedef enum IMPORT_OBJECT_NAME_TYPE IMPORT_OBJECT_ORDINAL = 0, IMPORT_OBJECT_NAME = 1, IMPORT_OBJECT_NAME_NO_PREFIX = 2, - IMPORT_OBJECT_NAME_UNDECORATE = 3 + IMPORT_OBJECT_NAME_UNDECORATE = 3, + IMPORT_OBJECT_NAME_EXPORTAS = 4 } IMPORT_OBJECT_NAME_TYPE;
typedef struct _ANON_OBJECT_HEADER diff --git a/tools/winedump/lib.c b/tools/winedump/lib.c index ce2ccab184d..e2d25b04d24 100644 --- a/tools/winedump/lib.c +++ b/tools/winedump/lib.c @@ -46,18 +46,21 @@ static void dump_import_object(const IMPORT_OBJECT_HEADER *ioh) if (ioh->Version == 0) { static const char * const obj_type[] = { "code", "data", "const" }; - static const char * const name_type[] = { "ordinal", "name", "no prefix", "undecorate" }; - const char *name; + static const char * const name_type[] = { "ordinal", "name", "no prefix", "undecorate", "export as" }; + const char *name, *dll_name;
printf(" Version : %X\n", ioh->Version); printf(" Machine : %X (%s)\n", ioh->Machine, get_machine_str(ioh->Machine)); printf(" TimeDateStamp: %08X %s\n", (UINT)ioh->TimeDateStamp, get_time_str(ioh->TimeDateStamp)); printf(" SizeOfData : %08X\n", (UINT)ioh->SizeOfData); name = (const char *)ioh + sizeof(*ioh); - printf(" DLL name : %s\n", name + strlen(name) + 1); + dll_name = name + strlen(name) + 1; + printf(" DLL name : %s\n", dll_name); printf(" Symbol name : %s\n", name); printf(" Type : %s\n", (ioh->Type < ARRAY_SIZE(obj_type)) ? obj_type[ioh->Type] : "unknown"); printf(" Name type : %s\n", (ioh->NameType < ARRAY_SIZE(name_type)) ? name_type[ioh->NameType] : "unknown"); + if (ioh->NameType == IMPORT_OBJECT_NAME_EXPORTAS) + printf(" Export name : %s\n", dll_name + strlen(dll_name) + 1); printf(" %-13s: %u\n", (ioh->NameType == IMPORT_OBJECT_ORDINAL) ? "Ordinal" : "Hint", ioh->Ordinal); printf("\n"); }