Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9006ec9 authored by David Srbecky's avatar David Srbecky
Browse files

Fix symbol resolution within a dex file.

Fixes the ART 137-cfi test, currently failing on buildbot.

Test: testrunner.py -j40 --host --cdex-none -t 137 -b
Change-Id: I16a007b291702207bbd003fd1e78e8e5ced7cd68
parent c146c8f5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -52,9 +52,9 @@ DexFile* DexFiles::GetDexFile(uint64_t dex_file_offset, MapInfo* info) {
  return dex_file;
}

void DexFiles::GetMethodInformation(uint64_t dex_offset, MapInfo* info, std::string* method_name,
                                    uint64_t* method_offset) {
  DexFile* dex_file = GetDexFile(dex_offset, info);
void DexFiles::GetMethodInformation(uint64_t dex_file_offset, uint64_t dex_offset, MapInfo* info,
                                    std::string* method_name, uint64_t* method_offset) {
  DexFile* dex_file = GetDexFile(dex_file_offset, info);
  if (dex_file != nullptr) {
    dex_file->GetMethodInformation(dex_offset, method_name, method_offset);
  }
+2 −1
Original line number Diff line number Diff line
@@ -95,7 +95,8 @@ void Unwinder::FillInDexFrame() {
  }

#if !defined(NO_LIBDEXFILE_SUPPORT)
  dex_files_->GetMethodInformation(dex_offset, info, &frame->function_name, &frame->function_offset);
  dex_files_->GetMethodInformation(dex_pc - dex_offset, dex_offset, info, &frame->function_name,
                                   &frame->function_offset);
#endif
}

+3 −3
Original line number Diff line number Diff line
@@ -38,10 +38,10 @@ class DexFiles {
  explicit DexFiles(std::shared_ptr<Memory>& memory);
  ~DexFiles();

  DexFile* GetDexFile(uint64_t dex_offset, MapInfo* info);
  DexFile* GetDexFile(uint64_t dex_file_offset, MapInfo* info);

  void GetMethodInformation(uint64_t dex_offset, MapInfo* info, std::string* method_name,
                            uint64_t* method_offset);
  void GetMethodInformation(uint64_t dex_file_offset, uint64_t dex_offset, MapInfo* info,
                            std::string* method_name, uint64_t* method_offset);

  void SetArch(ArchEnum arch);