diff --git a/src/linker/lnk.c b/src/linker/lnk.c index 49bd67f9..59b268b8 100644 --- a/src/linker/lnk.c +++ b/src/linker/lnk.c @@ -1729,13 +1729,7 @@ lnk_build_link_context(TP_Context *tp, TP_Arena *tp_arena, LNK_Config *config) } break; case State_PushDllHelperUndefSymbol: { ProfBegin("Push Dll Helper Undef Symbol"); - - switch (config->machine) { - case COFF_MachineType_X86: delay_load_helper_name = str8_cstring(MSCRT_DELAY_LOAD_HELPER2_X86_SYMBOL_NAME); break; - case COFF_MachineType_X64: delay_load_helper_name = str8_cstring(MSCRT_DELAY_LOAD_HELPER2_SYMBOL_NAME); break; - default: { NotImplemented; } break; - } - + delay_load_helper_name = mscrt_delay_load_helper_name_from_machine(config->machine); str8_list_push(scratch.arena, &include_symbol_list, delay_load_helper_name); ProfEnd(); } break; diff --git a/src/msvc_crt/msvc_crt.c b/src/msvc_crt/msvc_crt.c index 3431fa0a..c251a7b7 100644 --- a/src/msvc_crt/msvc_crt.c +++ b/src/msvc_crt/msvc_crt.c @@ -1,6 +1,19 @@ // Copyright (c) Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) +internal String8 +mscrt_delay_load_helper_name_from_machine(COFF_MachineType machine) +{ + String8 delay_load_helper_name = str8_zero(); + switch (machine) { + case COFF_MachineType_Unknown: break; + case COFF_MachineType_X86: delay_load_helper_name = str8_cstring(MSCRT_DELAY_LOAD_HELPER2_X86_SYMBOL_NAME); break; + case COFF_MachineType_X64: delay_load_helper_name = str8_cstring(MSCRT_DELAY_LOAD_HELPER2_SYMBOL_NAME); break; + default: { NotImplemented; } break; + } + return delay_load_helper_name; +} + internal U64 mscrt_parse_func_info(Arena *arena, String8 raw_data, diff --git a/src/msvc_crt/msvc_crt.h b/src/msvc_crt/msvc_crt.h index 840b1fe9..11000af2 100644 --- a/src/msvc_crt/msvc_crt.h +++ b/src/msvc_crt/msvc_crt.h @@ -343,6 +343,10 @@ typedef struct MSCRT_ParsedFuncInfoV4 MSCRT_IP2State32V4 ip2state_map; } MSCRT_ParsedFuncInfoV4; +//- Delay Load Helper + +internal String8 mscrt_delay_load_helper_name_from_machine(COFF_MachineType machine); + //- Exception info < v4 internal U64 mscrt_parse_func_info(Arena *arena, String8 raw_data, U64 section_count, COFF_SectionHeader *sections, U64 off, MSCRT_FuncInfo *func_info);