gracefully handle invalid libs

This commit is contained in:
Nikita Smith
2025-06-25 10:53:25 -07:00
committed by Ryan Fleury
parent 2ba9f2a61b
commit b1723ce066
4 changed files with 127 additions and 60 deletions
+15 -9
View File
@@ -9,7 +9,7 @@ typedef struct LNK_Lib
String8 data;
COFF_ArchiveType type;
U32 symbol_count;
U32 * member_off_arr;
U32 *member_off_arr;
String8List symbol_name_list;
String8 long_names;
U64 input_idx;
@@ -17,8 +17,8 @@ typedef struct LNK_Lib
typedef struct LNK_LibNode
{
struct LNK_LibNode *next;
LNK_Lib data;
struct LNK_LibNode *next;
} LNK_LibNode;
typedef struct LNK_LibNodeArray
@@ -31,17 +31,23 @@ typedef struct LNK_LibList
{
U64 count;
struct LNK_LibNode *first;
struct LNK_LibNode *last;
} LNK_LibList;
typedef struct
{
LNK_LibNode *node_arr;
String8 *data_arr;
String8 *path_arr;
U64 base_input_idx;
String8 *data_arr;
String8 *path_arr;
LNK_LibList free_libs;
LNK_LibList valid_libs;
LNK_LibList invalid_libs;
} LNK_LibIniter;
internal LNK_Lib lnk_lib_from_data(Arena *arena, String8 data, String8 path);
internal LNK_LibNode * lnk_lib_list_pop_node_atomic(LNK_LibList *list);
internal void lnk_lib_list_push_node_atomic(LNK_LibList *list, LNK_LibNode *node);
internal void lnk_lib_list_push_node(LNK_LibList *list, LNK_LibNode *node);
internal LNK_LibList lnk_lib_list_reserve(Arena *arena, U64 count);
internal LNK_LibNodeArray lnk_array_from_lib_list(Arena *arena, LNK_LibList list);
internal B32 lnk_lib_from_data(Arena *arena, String8 data, String8 path, LNK_Lib *lib_out);
internal LNK_LibNodeArray lnk_lib_list_push_parallel(TP_Context *tp, TP_Arena *arena, LNK_LibList *list, String8Array data_arr, String8Array path_arr);