summaryrefslogtreecommitdiff
path: root/simpleperf/dso.h
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2015-10-12 16:56:05 -0700
committerYabin Cui <yabinc@google.com>2015-10-22 17:25:31 -0700
commit547c60e4dd29c5788d5948ad348acf33a55d6ed6 (patch)
tree9c25287fdbbb9a3589abb6f77976609c8b32bdb8 /simpleperf/dso.h
parente7182b0cc45b447943b51e36aa1feb2d17257875 (diff)
downloadextras-547c60e4dd29c5788d5948ad348acf33a55d6ed6.tar.gz
Simpleperf: fix some unknown symbols for report result.
Using debug shared libraries in /usr/lib/debug on linux host. Match ip addresses with symbols by symbols' virtual addresses instead of file offsets in elf file. Because symbols' file offsets in debug shared libraries are different from those in original shared libraries. Fix overlapped maps. Bug: 24716851 Change-Id: I9cb64958c4de5c7a6c77c3febc5f689cf2df650f
Diffstat (limited to 'simpleperf/dso.h')
-rw-r--r--simpleperf/dso.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/simpleperf/dso.h b/simpleperf/dso.h
index bbe01908..a140e5e9 100644
--- a/simpleperf/dso.h
+++ b/simpleperf/dso.h
@@ -70,7 +70,10 @@ struct Dso {
// return the path with prefix set by SetSymFsDir().
std::string GetAccessiblePath() const;
- const Symbol* FindSymbol(uint64_t offset_in_dso);
+ // Return the minimum virtual address in program header.
+ uint64_t MinVirtualAddress();
+
+ const Symbol* FindSymbol(uint64_t vaddr_in_dso);
private:
static BuildId GetExpectedBuildId(const std::string& filename);
@@ -95,6 +98,7 @@ struct Dso {
const DsoType type_;
const std::string path_;
+ uint64_t min_vaddr_;
std::vector<Symbol> symbols_;
bool is_loaded_;
};