refactored special case for image base

This commit is contained in:
Nikita Smith
2025-05-20 11:19:52 -07:00
committed by Ryan Fleury
parent d22962af8d
commit 2e531cd70a
2 changed files with 6 additions and 6 deletions
+1 -1
View File
@@ -50,7 +50,7 @@ typedef struct COFF_Symbol32Array
typedef struct COFF_ParsedSymbol
{
String8 name;
U32 value;
U64 value;
U32 section_number;
COFF_SymbolType type;
COFF_SymStorageClass storage_class;
+5 -5
View File
@@ -1146,16 +1146,16 @@ THREAD_POOL_TASK_FUNC(lnk_obj_reloc_patcher)
NotImplemented;
}
symbol_secnum = 0;
symbol_secoff = 0;
// There aren't enough bits in COFF symbol to store full image base address,
// so we special case __ImageBase. A better solution would be to add
// a 64-bit symbol format to COFF.
if (str8_match(symbol.name, str8_lit("__ImageBase"), 0)) {
symbol_voff = 0;
} else {
symbol_voff = (S64)symbol.value - (S64)task->image_base;
symbol.value = task->image_base;
}
symbol_secnum = 0;
symbol_secoff = 0;
symbol_voff = (S64)symbol.value - (S64)task->image_base;
} else if (interp == COFF_SymbolValueInterp_Weak) {
// unresolved weak
} else if (interp == COFF_SymbolValueInterp_Undefined) {