From 4c8d66b4318c44d89e459a199b112ee6ddaea3df Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Fri, 29 May 2026 19:40:58 -0700 Subject: [PATCH] fix accidental removal of debug info sections resulting in non-eligible sections not getting marked with 'is_live' --- src/linker/lnk.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/linker/lnk.c b/src/linker/lnk.c index 7054990c..2e85f44c 100644 --- a/src/linker/lnk.c +++ b/src/linker/lnk.c @@ -2611,15 +2611,15 @@ THREAD_POOL_TASK_FUNC(lnk_walk_relocs_and_mark_ref_sections_task) COFF_SectionHeader *section_header = lnk_coff_section_header_from_section_number(ref_symbol.obj, section_number); + // on first section visit, set live flag and enqueue section + U8 was_visited = ins_atomic_u8_eval_assign(&is_live[ref_symbol.obj->input_idx][section_number], 1); + if (was_visited) { continue; } + // is section eligible for walking? if (section_header->flags & COFF_SectionFlag_LnkRemove) { continue; } if (section_header->flags & COFF_SectionFlag_LnkInfo) { continue; } if (section_header->flags & LNK_SECTION_FLAG_DEBUG) { continue; } - // on first section visit, set live flag and enqueue section - U8 was_visited = ins_atomic_u8_eval_assign(&is_live[ref_symbol.obj->input_idx][section_number], 1); - if (was_visited) { continue; } - LNK_RelocRefs refs = {0}; refs.obj = ref_symbol.obj; refs.relocs = lnk_coff_reloc_info_from_section_number(ref_symbol.obj, section_number);