mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 13:28:40 +00:00
clean up pass over obj file
This commit is contained in:
committed by
Ryan Fleury
parent
64415e21f0
commit
dcc4f38709
+24
-30
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////
|
||||
// --- Input -------------------------------------------------------------------
|
||||
|
||||
typedef struct LNK_Obj
|
||||
{
|
||||
@@ -34,7 +34,13 @@ typedef struct LNK_ObjNodeArray
|
||||
LNK_ObjNode *v;
|
||||
} LNK_ObjNodeArray;
|
||||
|
||||
////////////////////////////////
|
||||
typedef struct LNK_SymbolInputResult
|
||||
{
|
||||
LNK_SymbolList weak_symbols;
|
||||
LNK_SymbolList undef_symbols;
|
||||
} LNK_SymbolInputResult;
|
||||
|
||||
// --- Directive Parser --------------------------------------------------------
|
||||
|
||||
typedef struct LNK_Directive
|
||||
{
|
||||
@@ -55,15 +61,7 @@ typedef struct LNK_DirectiveInfo
|
||||
LNK_DirectiveList v[LNK_CmdSwitch_Count];
|
||||
} LNK_DirectiveInfo;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef struct LNK_SymbolInputResult
|
||||
{
|
||||
LNK_SymbolList weak_symbols;
|
||||
LNK_SymbolList undef_symbols;
|
||||
} LNK_SymbolInputResult;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Workers Contexts --------------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -83,43 +81,39 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LNK_Obj **objs;
|
||||
String8 name;
|
||||
B32 collect_discarded;
|
||||
LNK_Obj **objs;
|
||||
String8 name;
|
||||
B32 collect_discarded;
|
||||
String8List *out_lists;
|
||||
} LNK_SectionCollector;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Error -------------------------------------------------------------------
|
||||
|
||||
internal void lnk_error_obj(LNK_ErrorCode code, LNK_Obj *obj, char *fmt, ...);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Input -------------------------------------------------------------------
|
||||
|
||||
internal LNK_Obj ** lnk_obj_arr_from_list(Arena *arena, LNK_ObjList list);
|
||||
internal LNK_ObjNodeArray lnk_obj_list_reserve(Arena *arena, LNK_ObjList *list, U64 count);
|
||||
internal LNK_ObjNodeArray lnk_obj_list_push_parallel(TP_Context *tp, TP_Arena *tp_arena, LNK_ObjList *obj_list, COFF_MachineType machine, U64 input_count, LNK_InputObj **inputs);
|
||||
internal LNK_Obj ** lnk_array_from_obj_list(Arena *arena, LNK_ObjList list);
|
||||
internal LNK_ObjNodeArray lnk_obj_list_push_parallel(TP_Context *tp, TP_Arena *tp_arena, LNK_ObjList *obj_list, COFF_MachineType machine, U64 input_count, LNK_InputObj **inputs);
|
||||
internal LNK_SymbolInputResult lnk_input_obj_symbols(TP_Context *tp, TP_Arena *arena, LNK_SymbolTable *symtab, LNK_ObjNodeArray objs);
|
||||
|
||||
internal LNK_Obj ** lnk_obj_arr_from_list(Arena *arena, LNK_ObjList list);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Metadata ----------------------------------------------------------------
|
||||
|
||||
internal U32 lnk_obj_get_features(LNK_Obj *obj);
|
||||
internal U32 lnk_obj_get_comp_id(LNK_Obj *obj);
|
||||
internal U32 lnk_obj_get_vol_md(LNK_Obj *obj);
|
||||
|
||||
internal COFF_ParsedSymbol lnk_parsed_symbol_from_coff(LNK_Obj *obj, void *coff_symbol);
|
||||
internal COFF_ParsedSymbol lnk_parsed_symbol_from_coff_symbol_idx(LNK_Obj *obj, U64 symbol_idx);
|
||||
// --- Symbol & Section Helpers ------------------------------------------------
|
||||
|
||||
internal COFF_ParsedSymbol lnk_parsed_symbol_from_coff(LNK_Obj *obj, void *coff_symbol);
|
||||
internal COFF_ParsedSymbol lnk_parsed_symbol_from_coff_symbol_idx(LNK_Obj *obj, U64 symbol_idx);
|
||||
internal COFF_SectionHeader * lnk_coff_section_header_from_section_number(LNK_Obj *obj, U64 section_number);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Helpers -----------------------------------------------------------------
|
||||
|
||||
internal String8List * lnk_collect_obj_sections(TP_Context *tp, TP_Arena *arena, U64 objs_count, LNK_Obj **objs, String8 name, B32 collect_discarded);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Directive Parser --------------------------------------------------------
|
||||
|
||||
internal void lnk_parse_msvc_linker_directive(Arena *arena, LNK_Obj *obj, LNK_DirectiveInfo *directive_info, String8 buffer);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal LNK_SymbolList lnk_run_symbol_collector(TP_Context *tp, TP_Arena *arena, LNK_ObjNodeArray arr, LNK_SymbolType symbol_type);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user