Files
raddebugger/src/pe/pe_make_export_table.h
T
2025-09-05 15:19:31 -07:00

63 lines
1.7 KiB
C

// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
#ifndef PE_MAKE_EXPORT_TABLE_H
#define PE_MAKE_EXPORT_TABLE_H
typedef struct PE_ExportParse
{
String8 obj_path;
String8 lib_path;
String8 name;
String8 alias;
COFF_ImportType type;
COFF_ImportByType import_by;
U16 hint;
U16 ordinal;
B32 is_ordinal_assigned;
B32 is_noname_present;
B32 is_private;
B32 is_forwarder;
} PE_ExportParse;
typedef struct PE_ExportParseNode
{
PE_ExportParse data;
struct PE_ExportParseNode *next;
} PE_ExportParseNode;
typedef struct PE_ExportParseList
{
U64 count;
PE_ExportParseNode *first;
PE_ExportParseNode *last;
} PE_ExportParseList;
typedef struct PE_ExportParsePtrArray
{
U64 count;
PE_ExportParse **v;
} PE_ExportParsePtrArray;
typedef struct PE_FinalizedExports
{
U64 ordinal_low;
union {
struct {
PE_ExportParsePtrArray named_exports;
PE_ExportParsePtrArray forwarder_exports;
PE_ExportParsePtrArray ordinal_exports;
};
PE_ExportParsePtrArray exports_with_names[2];
PE_ExportParsePtrArray all[3];
};
} PE_FinalizedExports;
////////////////////////////////
internal PE_ExportParsePtrArray pe_array_from_export_list(Arena *arena, PE_ExportParseList list);
internal PE_ExportParseNode * pe_export_parse_list_push(Arena *arena, PE_ExportParseList *list, PE_ExportParse data);
internal String8 pe_make_import_lib(Arena *arena, COFF_MachineType machine, COFF_TimeStamp time_stamp, String8 dll_name, String8 debug_symbols, PE_ExportParseList export_list);
#endif // COFF_EXPORT_TABLE_H