From d91dd11fdc4fc72dbd0c48a2773b750239d3bf6f Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Wed, 3 Feb 2021 10:35:25 -0500 Subject: [PATCH] GP-0 change PowerPC R_PPC_COPY and R_PPC64_COPY ELF relocation failure to a warning --- .../format/elf/relocation/PowerPC64_ElfRelocationHandler.java | 4 ++++ .../format/elf/relocation/PowerPC_ElfRelocationHandler.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC64_ElfRelocationHandler.java b/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC64_ElfRelocationHandler.java index 40fbfd26b3..c6021c645b 100644 --- a/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC64_ElfRelocationHandler.java +++ b/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC64_ElfRelocationHandler.java @@ -103,6 +103,10 @@ public class PowerPC64_ElfRelocationHandler extends ElfRelocationHandler { } switch (type) { + case PowerPC64_ElfRelocationConstants.R_PPC64_COPY: + markAsWarning(program, relocationAddress, "R_PPC64_COPY", sym.getNameAsString(), + symbolIndex, "Runtime copy not supported", elfRelocationContext.getLog()); + break; case PowerPC64_ElfRelocationConstants.R_PPC64_ADDR32: newValue = (int) (symbolValue + addend); memory.setInt(relocationAddress, newValue); diff --git a/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC_ElfRelocationHandler.java b/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC_ElfRelocationHandler.java index 10184d3cc1..248f830c45 100644 --- a/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC_ElfRelocationHandler.java +++ b/Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC_ElfRelocationHandler.java @@ -82,6 +82,10 @@ public class PowerPC_ElfRelocationHandler extends ElfRelocationHandler { int newValue = 0; switch (type) { + case PowerPC_ElfRelocationConstants.R_PPC_COPY: + markAsWarning(program, relocationAddress, "R_PPC_COPY", sym.getNameAsString(), + symbolIndex, "Runtime copy not supported", elfRelocationContext.getLog()); + break; case PowerPC_ElfRelocationConstants.R_PPC_ADDR32: case PowerPC_ElfRelocationConstants.R_PPC_UADDR32: case PowerPC_ElfRelocationConstants.R_PPC_GLOB_DAT: