diff options
author | Yabin Cui <yabinc@google.com> | 2020-06-30 14:36:46 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2020-06-30 14:41:12 -0700 |
commit | 0194703957a3856f79a7b31fb0f2e95dc7d2284b (patch) | |
tree | 20623c7d2961ae013c5a12aa01b019d697be3593 /simpleperf/dso.cpp | |
parent | 53935fff359366ade6b51d2ff097549092f81b60 (diff) | |
download | extras-0194703957a3856f79a7b31fb0f2e95dc7d2284b.tar.gz |
simpleperf: move ParseSymbols* inside ElfFile class.
Bug: 160187327
Test: run simpleperf_unit_test.
Change-Id: I01947eb03847cb3c5a93c7a06abb6d203f750a23
Diffstat (limited to 'simpleperf/dso.cpp')
-rw-r--r-- | simpleperf/dso.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/simpleperf/dso.cpp b/simpleperf/dso.cpp index 51f63a38..d8096ca6 100644 --- a/simpleperf/dso.cpp +++ b/simpleperf/dso.cpp @@ -559,17 +559,9 @@ class ElfDso : public Dso { } }; ElfStatus status; - std::tuple<bool, std::string, std::string> tuple = SplitUrlInApk(debug_file_path_); - if (std::get<0>(tuple)) { - EmbeddedElf* elf = ApkInspector::FindElfInApkByName(std::get<1>(tuple), std::get<2>(tuple)); - if (elf == nullptr) { - status = ElfStatus::FILE_NOT_FOUND; - } else { - status = ParseSymbolsFromEmbeddedElfFile(elf->filepath(), elf->entry_offset(), - elf->entry_size(), build_id, symbol_callback); - } - } else { - status = ParseSymbolsFromElfFile(debug_file_path_, build_id, symbol_callback); + auto elf = ElfFile::Open(debug_file_path_, &build_id, &status); + if (elf) { + status = elf->ParseSymbols(symbol_callback); } ReportReadElfSymbolResult(status, path_, debug_file_path_, symbols_.empty() ? android::base::WARNING : android::base::DEBUG); @@ -604,7 +596,11 @@ class KernelDso : public Dso { symbols.emplace_back(symbol.name, symbol.vaddr, symbol.len); } }; - ElfStatus status = ParseSymbolsFromElfFile(vmlinux_, build_id, symbol_callback); + ElfStatus status; + auto elf = ElfFile::Open(vmlinux_, &build_id, &status); + if (elf) { + status = elf->ParseSymbols(symbol_callback); + } ReportReadElfSymbolResult(status, path_, vmlinux_); } else if (!kallsyms_.empty()) { symbols = ReadSymbolsFromKallsyms(kallsyms_); @@ -671,7 +667,11 @@ class KernelModuleDso : public Dso { symbols.emplace_back(symbol.name, symbol.vaddr, symbol.len); } }; - ElfStatus status = ParseSymbolsFromElfFile(debug_file_path_, build_id, symbol_callback); + ElfStatus status; + auto elf = ElfFile::Open(debug_file_path_, &build_id, &status); + if (elf) { + status = elf->ParseSymbols(symbol_callback); + } ReportReadElfSymbolResult(status, path_, debug_file_path_, symbols_.empty() ? android::base::WARNING : android::base::DEBUG); SortAndFixSymbols(symbols); |