diff options
author | Andreas Gampe <agampe@google.com> | 2018-07-27 17:46:38 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2018-07-27 17:46:38 -0700 |
commit | 05db5b87a97c7f5b5f9f7b525249cfafbf6d9222 (patch) | |
tree | 5231c78a3de51d8b9f76635aff479e1ad8376aa5 /perfprofd | |
parent | 8d81763715bc681243955d831cc36dd2ea2998b7 (diff) | |
download | extras-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.cc | 13 |
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) { |