diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-16 09:38:08 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-16 09:38:08 +0000 |
commit | 574ae790bb8c420e66184e42f7646ad6a22aa6a2 (patch) | |
tree | b20214520d6a3cd710fd0f101bdfaa2224f37fd3 | |
parent | 07806a3e66c8c976463007b29abf2dd007bc1719 (diff) | |
parent | 2e9ca06690bb7dc3d5a91212de20178aefbdd47d (diff) | |
download | perf_data_converter-574ae790bb8c420e66184e42f7646ad6a22aa6a2.tar.gz |
Snap for 4659252 from 2e9ca06690bb7dc3d5a91212de20178aefbdd47d to qt-release
Change-Id: Ib741ba8dbd6c61f174ceb73166a1bb3a60fa85d5
-rw-r--r-- | src/quipper/Android.bp | 1 | ||||
-rw-r--r-- | src/quipper/sample_info_reader.cc | 27 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/quipper/Android.bp b/src/quipper/Android.bp index bdc2378..fa78b46 100644 --- a/src/quipper/Android.bp +++ b/src/quipper/Android.bp @@ -88,6 +88,7 @@ cc_library_static { proto: { type: "lite", + canonical_path_from_root: false, }, static_libs: [ "libprotobuf-cpp-lite", diff --git a/src/quipper/sample_info_reader.cc b/src/quipper/sample_info_reader.cc index 34f78b1..5abd683 100644 --- a/src/quipper/sample_info_reader.cc +++ b/src/quipper/sample_info_reader.cc @@ -267,16 +267,35 @@ size_t ReadPerfSampleFromData(const event_t& event, // { u64 abi; # enum perf_sample_regs_abi // u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_USER if (sample_fields & PERF_SAMPLE_REGS_USER) { - LOG(ERROR) << "PERF_SAMPLE_REGS_USER is not yet supported."; - return reader.Tell(); + VLOG(1) << "Skipping PERF_SAMPLE_REGS_USER data."; + u64 abi; + if (!reader.ReadUint64(&abi)) { + return false; + } + size_t weight = abi == 0 ? 0 : __builtin_popcountll(attr.sample_regs_user); + u64 regs[64]; + if (weight > 0 && !reader.ReadData(weight * sizeof(u64), regs)) { + return false; + } } // { u64 size; // char data[size]; // u64 dyn_size; } && PERF_SAMPLE_STACK_USER if (sample_fields & PERF_SAMPLE_STACK_USER) { - LOG(ERROR) << "PERF_SAMPLE_STACK_USER is not yet supported."; - return reader.Tell(); + VLOG(1) << "Skipping PERF_SAMPLE_STACK_USER data."; + u64 size; + if (!reader.ReadUint64(&size)) { + return false; + } + if (size != 0) { + std::unique_ptr<char[]> data(new char[size]); + if (!reader.ReadData(size, data.get())) { + return false; + } + u64 dyn_size; + reader.ReadUint64(&dyn_size); + } } // { u64 weight; } && PERF_SAMPLE_WEIGHT |