From cc6e56eee1fd64b9f951ad1726276e7e3ac9067c Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Tue, 22 Jul 2025 11:29:12 -0700 Subject: [PATCH] do full path check for thin objs only --- src/linker/lnk.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/linker/lnk.c b/src/linker/lnk.c index acb7b1fe..7e290037 100644 --- a/src/linker/lnk.c +++ b/src/linker/lnk.c @@ -1432,25 +1432,24 @@ lnk_build_link_context(TP_Context *tp, TP_Arena *tp_arena, LNK_Config *config) LNK_InputObjList unique_obj_input_list = {0}; for (LNK_InputObj *input = input_obj_list.first, *next; input != 0; input = next) { next = input->next; - + B32 was_obj_loaded = hash_table_search_path_u64(loaded_obj_ht, input->dedup_id, 0); - if (was_obj_loaded) { - continue; + if (was_obj_loaded) { continue; } + + if (input->is_thin) { + String8 full_path = input->dedup_id.size ? os_full_path_from_path(scratch.arena, input->dedup_id) : str8_zero(); + B32 was_full_path_used = hash_table_search_path_u64(loaded_obj_ht, full_path, 0); + if (was_full_path_used) { continue; } + if (!str8_match(input->dedup_id, full_path, StringMatchFlag_CaseInsensitive|StringMatchFlag_SlashInsensitive)) { + hash_table_push_path_u64(scratch.arena, loaded_obj_ht, full_path, 0); + } } - - String8 full_path = input->dedup_id.size ? os_full_path_from_path(scratch.arena, input->dedup_id) : str8_zero(); - B32 was_full_path_used = hash_table_search_path_u64(loaded_obj_ht, full_path, 0); - if (was_full_path_used) { - continue; - } - + hash_table_push_path_u64(scratch.arena, loaded_obj_ht, input->dedup_id, 0); - if (!str8_match(input->dedup_id, full_path, StringMatchFlag_CaseInsensitive|StringMatchFlag_SlashInsensitive)) { - hash_table_push_path_u64(scratch.arena, loaded_obj_ht, full_path, 0); - } - + lnk_input_obj_list_push_node(&unique_obj_input_list, input); - lnk_log(LNK_Log_InputObj, "Input Obj: %S", full_path); + + lnk_log(LNK_Log_InputObj, "Input Obj: %S", input->path); } ProfEnd();