summaryrefslogtreecommitdiff
path: root/Userland/DevTools
diff options
context:
space:
mode:
authorDaniel Bertalan <dani@danielbertalan.dev>2021-10-25 11:09:33 +0200
committerAndreas Kling <kling@serenityos.org>2021-10-25 12:14:26 +0200
commit15a14d3d21c7e94f5c174f0b2644393093ae9d35 (patch)
tree1b269079d864ff7ec5104a0925e7e3b4775176ec /Userland/DevTools
parent7c27ba124004491ce7431868c7640a8bdf2003a2 (diff)
downloadserenity-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.cpp2
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);