From 941b8a011e6291193854e70eb0c6c4b0f99c72b6 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Fri, 3 Jul 2026 00:27:01 -0700 Subject: [PATCH] duplicate identical search aliases are not an error case --- src/linker/lnk_symbol_table.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/linker/lnk_symbol_table.c b/src/linker/lnk_symbol_table.c index 1c4a7655..ea02e1d9 100644 --- a/src/linker/lnk_symbol_table.c +++ b/src/linker/lnk_symbol_table.c @@ -209,7 +209,13 @@ lnk_can_replace_symbol(LNK_Symbol *dst, LNK_Symbol *src) lnk_error_multiply_defined_symbol(dst, src); } } else if (dst_ext->characteristics == COFF_WeakExt_SearchAlias && src_ext->characteristics == COFF_WeakExt_SearchAlias) { - lnk_error_multiply_defined_symbol(dst, src); + COFF_ParsedSymbol dst_tag = lnk_parsed_symbol_from_coff_symbol_idx(dst_ref.obj, dst_ext->tag_index); + COFF_ParsedSymbol src_tag = lnk_parsed_symbol_from_coff_symbol_idx(src_ref.obj, src_ext->tag_index); + if (str8_match(dst_tag.name, src_tag.name, 0)) { + can_replace = lnk_symbol_is_before(src, dst); + } else { + lnk_error_multiply_defined_symbol(dst, src); + } } else { can_replace = lnk_symbol_is_before(src, dst); }