Files
raddebugger/src/linker/lnk_export_table.h
T
2025-04-04 15:47:56 -07:00

47 lines
1.4 KiB
C

// Copyright (c) 2024 Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
#pragma once
typedef struct LNK_Export
{
struct LNK_Export *next;
String8 name;
LNK_Symbol *symbol;
U32 id;
U16 ordinal;
COFF_ImportType type;
B32 is_private;
} LNK_Export;
typedef struct LNK_ExportList
{
U64 count;
LNK_Export *first;
LNK_Export *last;
} LNK_ExportList;
typedef struct LNK_ExportArray
{
U64 count;
LNK_Export *v;
} LNK_ExportArray;
typedef struct LNK_ExportTable
{
Arena *arena;
HashTable *name_export_ht;
HashTable *noname_export_ht;
U64 voff_size;
U64 max_ordinal;
B8 *is_ordinal_used;
} LNK_ExportTable;
internal LNK_ExportTable * lnk_export_table_alloc(void);
internal void lnk_export_table_release(LNK_ExportTable **exptab_ptr);
internal LNK_Export * lnk_export_table_search(LNK_ExportTable *exptab, String8 name);
internal void lnk_collect_exports_from_def_files(LNK_ExportTable *exptab, String8List path_list);
internal void lnk_build_edata(LNK_ExportTable *exptab, LNK_SectionTable *sectab, LNK_SymbolTable *symtab, String8 image_name, COFF_MachineType machine);
internal void lnk_collect_exports_from_obj_directives(LNK_ExportTable *exptab, LNK_ObjList obj_list, LNK_SymbolTable *symtab);