From b3efce4b9ab87c81053fb051ff99435ff817ca19 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Mon, 28 Jul 2025 17:32:12 -0700 Subject: [PATCH] better place for this helper function --- src/linker/lnk.c | 8 +------- src/linker/lnk.h | 2 -- src/linker/lnk_debug_info.c | 2 +- src/linker/lnk_obj.c | 6 ++++++ src/linker/lnk_obj.h | 1 + 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/linker/lnk.c b/src/linker/lnk.c index a47a4b7d..7c5cb0fb 100644 --- a/src/linker/lnk.c +++ b/src/linker/lnk.c @@ -866,12 +866,6 @@ lnk_make_linker_coff_obj(Arena *arena, return obj; } -internal U32 -lnk_removed_section_number_from_obj(LNK_Obj *obj) -{ - return obj->header.is_big_obj ? LNK_REMOVED_SECTION_NUMBER_32 : LNK_REMOVED_SECTION_NUMBER_16; -} - internal String8 lnk_get_lib_name(String8 path) { @@ -2957,7 +2951,7 @@ THREAD_POOL_TASK_FUNC(lnk_obj_reloc_patcher) COFF_ParsedSymbol symbol = lnk_parsed_symbol_from_coff_symbol_idx(obj, reloc->isymbol); COFF_SymbolValueInterpType interp = coff_interp_symbol(symbol.section_number, symbol.value, symbol.storage_class); if (interp == COFF_SymbolValueInterp_Regular) { - if (symbol.section_number == lnk_removed_section_number_from_obj(obj)) { + if (symbol.section_number == lnk_obj_get_removed_section_number(obj)) { if (!lnk_is_coff_section_debug(obj, sect_idx)) { String8 sect_name = coff_name_from_section_header(string_table, §ion_table[sect_idx]); lnk_error_obj(LNK_Error_RelocationAgainstRemovedSection, obj, "relocating against symbol that is in a removed section (symbol: %S, reloc-section: %S 0x%llx, reloc-index: 0x%llx)", symbol.name, sect_name, sect_idx+1, reloc_idx); diff --git a/src/linker/lnk.h b/src/linker/lnk.h index b0549059..815b277e 100644 --- a/src/linker/lnk.h +++ b/src/linker/lnk.h @@ -206,8 +206,6 @@ internal String8 lnk_make_null_obj(Arena *arena); internal String8 lnk_make_res_obj(Arena *arena, String8List res_file_list, String8List res_path_list, COFF_MachineType machine, U32 time_stamp, String8 work_dir, PathStyle system_path_style, String8 obj_name); internal String8 lnk_make_linker_coff_obj(Arena *arena, COFF_TimeStamp time_stamp, COFF_MachineType machine, String8 cwd_path, String8 exe_path, String8 pdb_path, String8 cmd_line, String8 obj_name); -internal U32 lnk_removed_section_number_from_obj(LNK_Obj *obj); - // --- Link Context ------------------------------------------------------------ internal String8 lnk_get_lib_name(String8 path); diff --git a/src/linker/lnk_debug_info.c b/src/linker/lnk_debug_info.c index 42833b3a..ff4d2d72 100644 --- a/src/linker/lnk_debug_info.c +++ b/src/linker/lnk_debug_info.c @@ -3023,7 +3023,7 @@ THREAD_POOL_TASK_FUNC(lnk_build_pdb_public_symbols_defined_task) LNK_Symbol *symbol = chunk->v[i].symbol; COFF_ParsedSymbol symbol_parsed = lnk_parsed_symbol_from_defined(symbol); - if (symbol_parsed.section_number == lnk_removed_section_number_from_obj(symbol->u.defined.obj)) { continue; } + if (symbol_parsed.section_number == lnk_obj_get_removed_section_number(symbol->u.defined.obj)) { continue; } COFF_SymbolValueInterpType symbol_interp = coff_interp_from_parsed_symbol(symbol_parsed); if (symbol_interp != COFF_SymbolValueInterp_Regular) { continue; } diff --git a/src/linker/lnk_obj.c b/src/linker/lnk_obj.c index 0f1fb974..b69d4328 100644 --- a/src/linker/lnk_obj.c +++ b/src/linker/lnk_obj.c @@ -493,6 +493,12 @@ lnk_obj_get_lib_path(LNK_Obj *obj) return lib_path; } +internal U32 +lnk_obj_get_removed_section_number(LNK_Obj *obj) +{ + return obj->header.is_big_obj ? LNK_REMOVED_SECTION_NUMBER_32 : LNK_REMOVED_SECTION_NUMBER_16; +} + internal COFF_SectionHeader * lnk_coff_section_header_from_section_number(LNK_Obj *obj, U64 section_number) { diff --git a/src/linker/lnk_obj.h b/src/linker/lnk_obj.h index 036ad1d5..4e543440 100644 --- a/src/linker/lnk_obj.h +++ b/src/linker/lnk_obj.h @@ -105,6 +105,7 @@ 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 String8 lnk_obj_get_lib_path(LNK_Obj *obj); +internal U32 lnk_obj_get_removed_section_number(LNK_Obj *obj); // --- Symbol & Section Helpers ------------------------------------------------