Merge "Fix symbol resolution within a dex file."

This commit is contained in:
Christopher Ferris 2018-02-01 18:35:00 +00:00 committed by Gerrit Code Review
commit 0ce76f910b
3 changed files with 8 additions and 7 deletions

View file

@ -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);
}

View file

@ -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
}

View file

@ -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);