From af00acd0f56042cf57293c161da04ad1edd3db49 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Fri, 6 Jun 2025 08:48:56 -0700 Subject: [PATCH] add missing symbol replacement logic --- src/linker/lnk_symbol_table.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/linker/lnk_symbol_table.c b/src/linker/lnk_symbol_table.c index e9e4339b..50f5778d 100644 --- a/src/linker/lnk_symbol_table.c +++ b/src/linker/lnk_symbol_table.c @@ -239,6 +239,10 @@ lnk_can_replace_symbol(LNK_Symbol *dst, LNK_Symbol *src) else if (dst_interp == COFF_SymbolValueInterp_Weak && (src_interp == COFF_SymbolValueInterp_Regular || src_interp == COFF_SymbolValueInterp_Common || src_interp == COFF_SymbolValueInterp_Abs)) { can_replace = 1; } + // regular vs weak + else if (dst_interp == COFF_SymbolValueInterp_Regular && src_interp == COFF_SymbolValueInterp_Weak) { + can_replace = 0; + } // (regular, common) vs (regular, common) else if ((dst_interp == COFF_SymbolValueInterp_Regular || dst_interp == COFF_SymbolValueInterp_Common) && (src_interp == COFF_SymbolValueInterp_Regular || src_interp == COFF_SymbolValueInterp_Common)) { B32 dst_is_comdat = 0;