summaryrefslogtreecommitdiff
path: root/simpleperf/cmd_report.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2020-01-29 17:08:49 -0800
committerElliott Hughes <enh@google.com>2020-07-14 13:34:45 -0700
commit91784fd65b7314e5b296f07b8c487c506df17802 (patch)
tree54d60479ab33135562040d93957c812428b8c92d /simpleperf/cmd_report.cpp
parent3c5ea31c4dcd8b8f5d34cb97caa91692e4ca680b (diff)
downloadextras-91784fd65b7314e5b296f07b8c487c506df17802.tar.gz
simpleperf: support for ARMv8.3-A Pointer Autentication.
On devices enabling ARMv8.3-A pointer autentication, return addresses may be signed with authentication code. And we need to strip this code to unwind correctly, using a pac_mask got from the same device. Simpleperf supports recording and unwinding on different devices, mainly for debugging and testing. To avoid breaking it, this CL supports keeping pac_mask in perf.data and providing it to libunwindstack when reporting. Bug: none Test: run simpleperf_unit_test. Change-Id: I8a12a97efbe188599d5438099f8a58842a8f73eb
Diffstat (limited to 'simpleperf/cmd_report.cpp')
-rw-r--r--simpleperf/cmd_report.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/simpleperf/cmd_report.cpp b/simpleperf/cmd_report.cpp
index 3d5fad90..873819a3 100644
--- a/simpleperf/cmd_report.cpp
+++ b/simpleperf/cmd_report.cpp
@@ -860,6 +860,10 @@ bool ReportCommand::ReadSampleTreeFromRecordFile() {
for (size_t i = 0; i < event_attrs_.size(); ++i) {
sample_tree_builder_.push_back(sample_tree_builder_options_.CreateSampleTreeBuilder());
sample_tree_builder_.back()->SetEventName(event_attrs_[i].name);
+ OfflineUnwinder* unwinder = sample_tree_builder_.back()->GetUnwinder();
+ if (unwinder != nullptr) {
+ unwinder->LoadMetaInfo(record_file_reader_->GetMetaInfoFeature());
+ }
}
if (!record_file_reader_->ReadDataSection(