From ed018c7969897fd4b6f3226911440f1f8993fc09 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Fri, 5 Dec 2025 17:26:55 -0500 Subject: [PATCH] Use session scoped logger instance for unhandled relocation information Ran into this when running over certain object files on ppc, we can do it for all of them though. --- arch/arm64/arch_arm64.cpp | 17 ++++++++--------- arch/armv7/arch_armv7.cpp | 16 ++++++++-------- arch/powerpc/arch_ppc.cpp | 10 ++++++---- arch/x86/arch_x86.cpp | 32 +++++++++++++++++++------------- 4 files changed, 41 insertions(+), 34 deletions(-) diff --git a/arch/arm64/arch_arm64.cpp b/arch/arm64/arch_arm64.cpp index 158455591e..4dc59f8691 100644 --- a/arch/arm64/arch_arm64.cpp +++ b/arch/arm64/arch_arm64.cpp @@ -2843,9 +2843,8 @@ class Arm64MachoRelocationHandler : public RelocationHandler virtual bool GetRelocationInfo( Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; - + Ref logger = view->CreateLogger("Arm64MachoReloc"); set unsupportedRelocations; for (size_t i = 0; i < result.size(); i++) { @@ -2897,7 +2896,7 @@ class Arm64MachoRelocationHandler : public RelocationHandler } for (auto& relocType : unsupportedRelocations) - LogWarn("Unsupported relocation: %s (%x)", GetRelocationString(relocType), relocType); + logger->LogWarn("Unsupported relocation: %s (%x)", GetRelocationString(relocType), relocType); return true; } }; @@ -3159,9 +3158,9 @@ class Arm64ElfRelocationHandler : public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; (void)result; + Ref logger = view->CreateLogger("Arm64ElfReloc"); set relocTypes; for (auto& reloc : result) { @@ -3253,7 +3252,7 @@ class Arm64ElfRelocationHandler : public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported ELF relocation type: %s", GetRelocationString((ElfArm64RelocationType)reloc)); + logger->LogWarn("Unsupported ELF relocation type: %s", GetRelocationString((ElfArm64RelocationType)reloc)); return true; } @@ -3282,8 +3281,8 @@ class Arm64PeRelocationHandler : public RelocationHandler virtual bool GetRelocationInfo( Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + Ref logger = view->CreateLogger("Arm64PeReloc"); set relocTypes; for (auto& reloc : result) { @@ -3291,7 +3290,7 @@ class Arm64PeRelocationHandler : public RelocationHandler relocTypes.insert(reloc.nativeType); } for (auto& reloc : relocTypes) - LogWarn( + logger->LogWarn( "Unsupported PE relocation type: %s", GetRelocationString((PeArm64RelocationType)reloc)); return false; } @@ -3407,8 +3406,8 @@ class Arm64COFFRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + Ref logger = view->CreateLogger("Arm64CoffReloc"); set relocTypes; for (auto& reloc : result) { @@ -3477,7 +3476,7 @@ class Arm64COFFRelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported PE relocation type: %s", GetRelocationString((PeArm64RelocationType)reloc)); + logger->LogWarn("Unsupported PE relocation type: %s", GetRelocationString((PeArm64RelocationType)reloc)); return false; } }; diff --git a/arch/armv7/arch_armv7.cpp b/arch/armv7/arch_armv7.cpp index c422d7f012..fdd1bad775 100644 --- a/arch/armv7/arch_armv7.cpp +++ b/arch/armv7/arch_armv7.cpp @@ -2497,8 +2497,8 @@ class ArmElfRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + Ref logger = view->CreateLogger("ArmElfReloc"); set relocTypes; for (auto& reloc: result) { @@ -2670,7 +2670,7 @@ class ArmElfRelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported ELF relocation: %s", GetRelocationString((ElfArmRelocationType)reloc)); + logger->LogWarn("Unsupported ELF relocation: %s", GetRelocationString((ElfArmRelocationType)reloc)); return true; } }; @@ -2693,8 +2693,8 @@ class ArmMachORelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + Ref logger = view->CreateLogger("ArmMachoReloc"); set relocTypes; for (auto& reloc: result) { @@ -2702,7 +2702,7 @@ class ArmMachORelocationHandler: public RelocationHandler relocTypes.insert(reloc.nativeType); } for (auto& reloc : relocTypes) - LogWarn("Unsupported Mach-O relocation %s", GetRelocationString((MachoArmRelocationType)reloc)); + logger->LogWarn("Unsupported Mach-O relocation %s", GetRelocationString((MachoArmRelocationType)reloc)); return false; }; }; @@ -2745,8 +2745,8 @@ class ArmPERelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + Ref logger = view->CreateLogger("ArmPeReloc"); set relocTypes; for (auto& reloc: result) { @@ -2775,7 +2775,7 @@ class ArmPERelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported PE relocation %s", GetRelocationString((PeRelocationType)reloc)); + logger->LogWarn("Unsupported PE relocation %s", GetRelocationString((PeRelocationType)reloc)); return false; } @@ -3162,8 +3162,8 @@ class ArmCOFFRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + Ref logger = view->CreateLogger("ArmCoffReloc"); set relocTypes; for (auto& reloc: result) { @@ -3236,7 +3236,7 @@ class ArmCOFFRelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported COFF relocation %s", GetRelocationString((PeArmRelocationType)reloc)); + logger->LogWarn("Unsupported COFF relocation %s", GetRelocationString((PeArmRelocationType)reloc)); return true; } }; diff --git a/arch/powerpc/arch_ppc.cpp b/arch/powerpc/arch_ppc.cpp index f10757d5bb..4387201497 100644 --- a/arch/powerpc/arch_ppc.cpp +++ b/arch/powerpc/arch_ppc.cpp @@ -2469,7 +2469,8 @@ class PpcElfRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; (void)result; + (void)arch; (void)result; + Ref logger = view->CreateLogger("PpcElfReloc"); set relocTypes; for (auto& reloc : result) { @@ -2526,7 +2527,7 @@ class PpcElfRelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported ELF relocation type: %s", GetRelocationString((ElfPpcRelocationType)reloc)); + logger->LogWarn("Unsupported ELF relocation type: %s", GetRelocationString((ElfPpcRelocationType)reloc)); return true; } @@ -2555,7 +2556,8 @@ class PpcMachoRelocationHandler: public RelocationHandler public: virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("PpcMachoReloc"); set relocTypes; for (auto& reloc : result) { @@ -2563,7 +2565,7 @@ class PpcMachoRelocationHandler: public RelocationHandler relocTypes.insert(reloc.nativeType); } for (auto& reloc : relocTypes) - LogWarn("Unsupported Mach-O relocation type: %s", GetRelocationString((MachoPpcRelocationType)reloc)); + logger->LogWarn("Unsupported Mach-O relocation type: %s", GetRelocationString((MachoPpcRelocationType)reloc)); return false; } }; diff --git a/arch/x86/arch_x86.cpp b/arch/x86/arch_x86.cpp index b448862334..708135a7da 100644 --- a/arch/x86/arch_x86.cpp +++ b/arch/x86/arch_x86.cpp @@ -4058,7 +4058,8 @@ class x86MachoRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("X86MachoReloc"); set relocTypes; for (size_t i = 0; i < result.size(); i++) { @@ -4080,7 +4081,7 @@ class x86MachoRelocationHandler: public RelocationHandler } for (auto& reloc : relocTypes) - LogWarn("Unsupported Mach-O relocation type: %s", GetRelocationString((Machox86RelocationType)reloc)); + logger->LogWarn("Unsupported Mach-O relocation type: %s", GetRelocationString((Machox86RelocationType)reloc)); return true; } }; @@ -4090,7 +4091,8 @@ class x86ElfRelocationHandler: public RelocationHandler public: virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("X86ElfReloc"); set relocTypes; for (auto& reloc : result) { @@ -4154,7 +4156,7 @@ class x86ElfRelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported ELF relocation type: %s", GetRelocationString((Elfx86RelocationType)reloc)); + logger->LogWarn("Unsupported ELF relocation type: %s", GetRelocationString((Elfx86RelocationType)reloc)); return true; } }; @@ -4221,7 +4223,8 @@ class x64MachoRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("X86MachoReloc"); set relocTypes; for (size_t i = 0; i < result.size(); i++) { @@ -4286,7 +4289,7 @@ class x64MachoRelocationHandler: public RelocationHandler } for (auto& reloc : relocTypes) - LogWarn("Unsupported Mach-O relocation: %s", GetRelocationString((Machox64RelocationType)reloc)); + logger->LogWarn("Unsupported Mach-O relocation: %s", GetRelocationString((Machox64RelocationType)reloc)); return true; } }; @@ -4345,7 +4348,8 @@ class x64ElfRelocationHandler: public RelocationHandler The AMD64 ILP32 ABI architecture uses only Elf32_Rela relocation entries in relocatable files. Relocations contained within executable files or shared objects may use either Elf32_Rela relocation or Elf32_Rel relocation. */ - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("X86ElfReloc"); set relocTypes; for (auto& reloc : result) { @@ -4477,7 +4481,7 @@ class x64ElfRelocationHandler: public RelocationHandler } } for (auto& reloc : relocTypes) - LogWarn("Unsupported ELF relocation: %s", GetRelocationString((Elfx64RelocationType)reloc)); + logger->LogWarn("Unsupported ELF relocation: %s", GetRelocationString((Elfx64RelocationType)reloc)); return true; } }; @@ -4547,7 +4551,8 @@ class CoffRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("X86CoffReloc"); set relocTypes; for (auto& reloc : result) { @@ -4608,7 +4613,7 @@ class CoffRelocationHandler: public RelocationHandler relocTypes.insert(reloc.nativeType); } for (auto& reloc : relocTypes) - LogWarn("Unsupported COFF relocation: %s", GetRelocationString((COFFx64RelocationType)reloc)); + logger->LogWarn("Unsupported COFF relocation: %s", GetRelocationString((COFFx64RelocationType)reloc)); } else if (arch->GetName() == "x86") { @@ -4652,7 +4657,7 @@ class CoffRelocationHandler: public RelocationHandler relocTypes.insert(reloc.nativeType); } for (auto& reloc : relocTypes) - LogWarn("Unsupported COFF relocation: %s", GetRelocationString((COFFx86RelocationType)reloc)); + logger->LogWarn("Unsupported COFF relocation: %s", GetRelocationString((COFFx86RelocationType)reloc)); } } @@ -4708,7 +4713,8 @@ class PeRelocationHandler: public RelocationHandler virtual bool GetRelocationInfo(Ref view, Ref arch, vector& result) override { - (void)view; (void)arch; + (void)arch; + Ref logger = view->CreateLogger("X86PeReloc"); set relocTypes; for (auto& reloc : result) { @@ -4741,7 +4747,7 @@ class PeRelocationHandler: public RelocationHandler } for (auto& reloc : relocTypes) - LogWarn("Unsupported PE relocation: %s", GetRelocationString((PeRelocationType)reloc)); + logger->LogWarn("Unsupported PE relocation: %s", GetRelocationString((PeRelocationType)reloc)); return false; }