From bb665bda63eb1bb1a73cf11ec72488027aedff27 Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 1 Feb 2021 10:49:49 -0500 Subject: [PATCH] GP-651 add support for ELF relocation R_X86_64_IRELATIVE --- .../format/elf/relocation/X86_64_ElfRelocationHandler.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_64_ElfRelocationHandler.java b/Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_64_ElfRelocationHandler.java index 213a957b31..c19386d51b 100644 --- a/Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_64_ElfRelocationHandler.java +++ b/Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_64_ElfRelocationHandler.java @@ -207,11 +207,8 @@ public class X86_64_ElfRelocationHandler extends ElfRelocationHandler { memory.setLong(relocationAddress, value); break; case X86_64_ElfRelocationConstants.R_X86_64_IRELATIVE: - // NOTE: We don't support this since the code actually uses a function to - // compute the relocation value (i.e., indirect) - appliedSymbol = false; - markAsError(program, relocationAddress, "R_X86_64_IRELATIVE", symbolName, - "indirect computed relocation not supported", elfRelocationContext.getLog()); + value = addend + elfRelocationContext.getImageBaseWordAdjustmentOffset(); + memory.setLong(relocationAddress, value); break; // case ElfRelocationConstants.R_X86_64_TLSGD: