diff options
author | Daniel Bertalan <dani@danielbertalan.dev> | 2021-10-25 11:09:33 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-10-25 12:14:26 +0200 |
commit | 15a14d3d21c7e94f5c174f0b2644393093ae9d35 (patch) | |
tree | 1b269079d864ff7ec5104a0925e7e3b4775176ec /Userland/DevTools | |
parent | 7c27ba124004491ce7431868c7640a8bdf2003a2 (diff) | |
download | serenity-15a14d3d21c7e94f5c174f0b2644393093ae9d35.zip |
LibX86: Take load base address into consideration during disassembly
Since our executables are position-independent, the address values
extraced from processes don't correspond to their values within the ELF
file. We have to offset the absolute addresses by the load base address
to get the relative symbol that we need for disassembly.
Diffstat (limited to 'Userland/DevTools')
-rw-r--r-- | Userland/DevTools/Profiler/DisassemblyModel.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Userland/DevTools/Profiler/DisassemblyModel.cpp b/Userland/DevTools/Profiler/DisassemblyModel.cpp index eba347d598..cabcd56e1f 100644 --- a/Userland/DevTools/Profiler/DisassemblyModel.cpp +++ b/Userland/DevTools/Profiler/DisassemblyModel.cpp @@ -87,7 +87,7 @@ DisassemblyModel::DisassemblyModel(Profile& profile, ProfileNode& node) auto symbol_offset_from_function_start = node.address() - base_address - symbol->value(); auto view = symbol.value().raw_data().substring_view(symbol_offset_from_function_start); - X86::ELFSymbolProvider symbol_provider(*elf); + X86::ELFSymbolProvider symbol_provider(*elf, base_address); X86::SimpleInstructionStream stream((const u8*)view.characters_without_null_termination(), view.length()); X86::Disassembler disassembler(stream); |