summaryrefslogtreecommitdiff
path: root/simpleperf/dso.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2020-06-30 14:36:46 -0700
committerYabin Cui <yabinc@google.com>2020-06-30 14:41:12 -0700
commit0194703957a3856f79a7b31fb0f2e95dc7d2284b (patch)
tree20623c7d2961ae013c5a12aa01b019d697be3593 /simpleperf/dso.cpp
parent53935fff359366ade6b51d2ff097549092f81b60 (diff)
downloadextras-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.cpp26
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);