CodeLoader: Expose base ELF loaded offset

Useful for gdb
This commit is contained in:
Ryan Houdek committed 2022-03-09 19:07:45 -08:00
1 parent 2aa77e85de
commit 68f32d85c9
2 files changed
+10

No files matched your search

+2
View File
@@ -48,6 +48,8 @@ public:
using IRHandler = std::function<void(uint64_t Addr, FEXCore::IR::IREmitter *IR)>;
virtual void AddIR(IRHandler Handler) {}
virtual uint64_t GetBaseOffset() const { return 0; }
};
+8
View File
@@ -366,6 +366,9 @@ class ELFCodeLoader2 final : public FEXCore::CodeLoader {
if (auto elf = LoadElfFile(MainElf, &BrkBase, Mapper, Unmapper)) {
LoadBase = *elf;
if (MainElf.ehdr.e_type == ET_DYN) {
BaseOffset = LoadBase;
}
} else {
LogMan::Msg::EFmt("Failed to load elf file");
return false;
@@ -620,6 +623,10 @@ class ELFCodeLoader2 final : public FEXCore::CodeLoader {
size = AuxTabSize;
}
uint64_t GetBaseOffset() const override {
return BaseOffset;
}
bool Is64BitMode() {
return MainElf.type == ::ELFLoader::ELFContainer::TYPE_X86_64;
}
@@ -643,5 +650,6 @@ class ELFCodeLoader2 final : public FEXCore::CodeLoader {
uint64_t AuxTabBase, AuxTabSize;
uint64_t ArgumentBackingSize{};
uint64_t EnvironmentBackingSize{};
uint64_t BaseOffset{};
};