From 3c0c531c5336fa5e668136c9d2b184aefcb4a269 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Tue, 23 Sep 2025 06:23:31 -0700 Subject: [PATCH] reloc helper --- src/coff/coff.c | 15 +++++++++++++++ src/coff/coff.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/coff/coff.c b/src/coff/coff.c index a37bc009..eef1c129 100644 --- a/src/coff/coff.c +++ b/src/coff/coff.c @@ -103,6 +103,21 @@ coff_read_symbol_name(String8 string_table, COFF_SymbolName *name) return name_str; } +internal U64 +coff_is_addr_reloc(COFF_MachineType machine, U32 type) +{ + U64 is_addr = 0; + switch (machine) { + case COFF_MachineType_Unknown: is_addr = 0; break; + case COFF_MachineType_X64: { + if (type == COFF_Reloc_X64_Addr32) is_addr = 4; + else if (type == COFF_Reloc_X64_Addr64) is_addr = 8; + } break; + default: NotImplemented; break; + } + return is_addr; +} + internal U64 coff_apply_size_from_reloc_x64(COFF_Reloc_X64 x) { diff --git a/src/coff/coff.h b/src/coff/coff.h index 69b72ff3..4adff448 100644 --- a/src/coff/coff.h +++ b/src/coff/coff.h @@ -601,6 +601,8 @@ internal String8 coff_read_symbol_name(String8 string_table, COFF_SymbolName *na //////////////////////////////// // Reloc +internal U64 coff_is_addr_reloc(COFF_MachineType machine, U32 type); + internal U64 coff_apply_size_from_reloc_x64(COFF_Reloc_X64 x); internal U64 coff_apply_size_from_reloc_x86(COFF_Reloc_X86 x);