mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-14 21:09:41 -07:00
do lightweight import gathering while resolving links
This commit is contained in:
1 parent
d4ac5ede77
commit
630c3b42a7
7 files changed
+160
-162
No files matched your search
+12
-20
@@ -7,8 +7,8 @@
|
||||
|
||||
typedef struct LNK_LibMemberRef
|
||||
{
|
||||
LNK_Lib *lib;
|
||||
U32 member_idx;
|
||||
LNK_Lib *lib;
|
||||
U32 member_idx;
|
||||
struct LNK_LibMemberRef *next;
|
||||
} LNK_LibMemberRef;
|
||||
|
||||
@@ -76,25 +76,17 @@ typedef struct LNK_Inputer
|
||||
#define LNK_SECTION_FLAG_IS_LIVE (1 << 0)
|
||||
#define LNK_SECTION_FLAG_DEBUG_INFO (1 << 1)
|
||||
|
||||
typedef struct LNK_ImportTables
|
||||
{
|
||||
Arena *arena;
|
||||
String8List delayed_dll_names;
|
||||
String8List static_dll_names;
|
||||
HashTable *static_imports;
|
||||
HashTable *delayed_imports;
|
||||
} LNK_ImportTables;
|
||||
|
||||
typedef struct LNK_Link
|
||||
{
|
||||
LNK_ObjList objs;
|
||||
LNK_LibList libs;
|
||||
LNK_ObjNode **last_symbol_input;
|
||||
LNK_IncludeSymbolNode **last_include;
|
||||
String8Node **last_cmd_lib;
|
||||
String8Node **last_default_lib;
|
||||
String8Node **last_obj_lib;
|
||||
B32 try_to_resolve_entry_point;
|
||||
LNK_ObjList objs;
|
||||
LNK_LibList libs;
|
||||
LNK_ObjNode **last_symbol_input;
|
||||
LNK_IncludeSymbolNode **last_include;
|
||||
String8Node **last_cmd_lib;
|
||||
String8Node **last_default_lib;
|
||||
String8Node **last_obj_lib;
|
||||
LNK_LibMemberRefList imports;
|
||||
B32 try_to_resolve_entry_point;
|
||||
} LNK_Link;
|
||||
|
||||
// -- Image Layout ------------------------------------------------------------
|
||||
@@ -299,7 +291,7 @@ internal LNK_LibMemberRef ** lnk_array_from_lib_member_list(Arena *arena, LNK_Li
|
||||
|
||||
internal LNK_ObjNode * lnk_load_objs (TP_Context *tp, TP_Arena *arena, LNK_Config *config, LNK_Inputer *inputer, LNK_SymbolTable *symtab, LNK_Link *link, U64 *objs_count_out);
|
||||
internal void lnk_load_libs (TP_Context *tp, TP_Arena *arena, LNK_Config *config, LNK_Inputer *inputer, LNK_Link *link);
|
||||
internal void lnk_link_inputs(TP_Context *tp, TP_Arena *arena, LNK_Config *config, LNK_Inputer *inputer, LNK_SymbolTable *symtab, LNK_Link *link, LNK_ImportTables *imps);
|
||||
internal void lnk_link_inputs(TP_Context *tp, TP_Arena *arena, LNK_Config *config, LNK_Inputer *inputer, LNK_SymbolTable *symtab, LNK_Link *link);
|
||||
internal LNK_Link * lnk_link_image (TP_Context *tp, TP_Arena *arena, LNK_Config *config, LNK_Inputer *inputer, LNK_SymbolTable *symtab);
|
||||
|
||||
// --- Optimizations -----------------------------------------------------------
|
||||
|
||||
Reference in new issue
Block a user