ELFSymbolProvider.h 647 B

12345678910111213141516171819202122232425262728293031
  1. /*
  2. * Copyright (c) 2020-2021, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibELF/Image.h>
  8. #include <LibX86/Instruction.h>
  9. namespace X86 {
  10. class ELFSymbolProvider final : public SymbolProvider {
  11. public:
  12. ELFSymbolProvider(const ELF::Image& elf, FlatPtr base_address = 0)
  13. : m_elf(elf)
  14. , m_base_address(base_address)
  15. {
  16. }
  17. virtual ByteString symbolicate(FlatPtr address, u32* offset = nullptr) const override
  18. {
  19. return m_elf.symbolicate(address - m_base_address, offset);
  20. }
  21. private:
  22. const ELF::Image& m_elf;
  23. FlatPtr m_base_address;
  24. };
  25. }