summaryrefslogtreecommitdiff
path: root/perfprofd
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2018-07-27 17:46:38 -0700
committerAndreas Gampe <agampe@google.com>2018-07-27 17:46:38 -0700
commit05db5b87a97c7f5b5f9f7b525249cfafbf6d9222 (patch)
tree5231c78a3de51d8b9f76635aff479e1ad8376aa5 /perfprofd
parent8d81763715bc681243955d831cc36dd2ea2998b7 (diff)
downloadextras-05db5b87a97c7f5b5f9f7b525249cfafbf6d9222.tar.gz
Perfprofd: Only pick up FUNC symbols
Lately, more marker symbols are emitted, and mess up general handling. Only pick up FUNC symbols. Bug: 73175642 Test: mmma system/extras/perfprofd Test: perfprofd_test Change-Id: I9d3c533aaa396aa8a2a46a65ea703eb498985ce8
Diffstat (limited to 'perfprofd')
-rw-r--r--perfprofd/symbolizer.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/perfprofd/symbolizer.cc b/perfprofd/symbolizer.cc
index 2be6f96c..bde680f5 100644
--- a/perfprofd/symbolizer.cc
+++ b/perfprofd/symbolizer.cc
@@ -68,10 +68,15 @@ struct SimpleperfSymbolizer : public Symbolizer {
void LoadDso(const std::string& dso) {
SymbolMap data;
auto callback = [&data](const ElfFileSymbol& sym) {
- Symbol symbol;
- symbol.name = sym.name;
- symbol.length = sym.len;
- data.emplace(sym.vaddr, std::move(symbol));
+ if (sym.is_func) {
+ Symbol symbol;
+ symbol.name = sym.name;
+ symbol.length = sym.len;
+ if (sym.len == 0) {
+ LOG(ERROR) << "Symbol size is zero for " << sym.name;
+ }
+ data.emplace(sym.vaddr, std::move(symbol));
+ }
};
ElfStatus status = ParseSymbolsFromElfFile(dso, BuildId(), callback);
if (status != ElfStatus::NO_ERROR) {