Create individual fields for string metadata types
Instead of lumping them into a repeated field of string metadata, we
want to have a separate field for each string type (hostname, arch,
etc). This allows us to selectively omit fields for privacy reasons.
BUG=chromium:365023
TEST=perf_serializer_test passes
Change-Id: Ib0ae22da12de1c9ccc6d1bac7f63a29e89cb6700
Signed-off-by: Simon Que <sque@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/195686
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Reviewed-by: Emma Rapati <rapati@chromium.org>
diff --git a/perf_data.proto b/perf_data.proto
index b4fdf28..00177db 100644
--- a/perf_data.proto
+++ b/perf_data.proto
@@ -11,7 +11,7 @@
//
// See $kernel/tools/perf/design.txt for more details.
-// Next tag: 13
+// Next tag: 14
message PerfDataProto {
// Perf event attribute. Stores the event description.
@@ -402,15 +402,6 @@
}
// Next tag: 3
- message PerfStringMetadata {
- // Type of metadata, such as hostname, osrelease, version, etc.
- optional uint32 type = 1;
-
- // String data.
- repeated string data = 2;
- }
-
- // Next tag: 3
message PerfUint32Metadata {
// Type of metadata, such as nrcpus.
optional uint32 type = 1;
@@ -497,8 +488,6 @@
// See adds_features in perf_reader.cc
repeated uint64 metadata_mask = 5;
- repeated PerfStringMetadata string_metadata = 6;
-
repeated PerfBuildID build_ids = 7;
repeated PerfUint32Metadata uint32_metadata = 8;
@@ -508,4 +497,45 @@
optional PerfCPUTopologyMetadata cpu_topology = 11;
repeated PerfNodeTopologyMetadata numa_topology = 12;
+
+ // Next tag: 9
+ message StringMetadata {
+ // Next tag: 3
+ message StringAndMd5sumPrefix {
+ // The string value.
+ optional string value = 1;
+
+ // The string value's md5sum prefix.
+ optional uint64 value_md5_prefix = 2;
+ }
+
+ // Name of the machine, e.g. "localhost".
+ optional StringAndMd5sumPrefix hostname = 1;
+
+ // Kernel version, e.g. "3.4.0".
+ optional StringAndMd5sumPrefix kernel_version = 2;
+
+ // Perf version, e.g. "3.4.2642.g0aa604".
+ optional StringAndMd5sumPrefix perf_version = 3;
+
+ // CPU architecture family, e.g. "x86_64".
+ optional StringAndMd5sumPrefix architecture = 4;
+
+ // CPU description, e.g. "Intel(R) Celeron(R) CPU 867 @ 1.30GHz".
+ optional StringAndMd5sumPrefix cpu_description = 5;
+
+ // CPU ID string, with the format: "$VENDOR,$FAMILY,$MODEL,$STEP"
+ optional StringAndMd5sumPrefix cpu_id = 6;
+
+ // Command line used to run perf to collect this profile.
+ // This is split into string tokens to reflect the way it is stored in the
+ // raw perf data. e.g. "perf record -a -- sleep 2" become stored as:
+ // { "perf", "record", "-a", "--", "sleep", "2" }
+ repeated StringAndMd5sumPrefix perf_command_line_token = 7;
+
+ // The command line stored as a single string.
+ optional StringAndMd5sumPrefix perf_command_line_whole = 8;
+ }
+
+ optional StringMetadata string_metadata = 13;
}
diff --git a/perf_serializer.cc b/perf_serializer.cc
index 27564a1..a5726b3 100644
--- a/perf_serializer.cc
+++ b/perf_serializer.cc
@@ -5,6 +5,7 @@
#include "perf_serializer.h"
#include <bitset>
+#include <utility>
#include <stdio.h>
#include <sys/time.h>
@@ -43,18 +44,7 @@
perf_data_proto->add_metadata_mask(metadata_mask_);
- if (!SerializeBuildIDs(
- build_id_events_, perf_data_proto->mutable_build_ids()) ||
- !SerializeStringMetadata(
- string_metadata_, perf_data_proto->mutable_string_metadata()) ||
- !SerializeUint32Metadata(
- uint32_metadata_, perf_data_proto->mutable_uint32_metadata()) ||
- !SerializeUint64Metadata(
- uint64_metadata_, perf_data_proto->mutable_uint64_metadata()) ||
- !SerializeCPUTopologyMetadata(
- cpu_topology_, perf_data_proto->mutable_cpu_topology()) ||
- !SerializeNUMATopologyMetadata(
- numa_topology_, perf_data_proto->mutable_numa_topology())) {
+ if (!SerializeMetadata(perf_data_proto)) {
return false;
}
@@ -103,18 +93,7 @@
if (perf_data_proto.metadata_mask_size())
metadata_mask_ = perf_data_proto.metadata_mask(0);
- if (!DeserializeBuildIDs(perf_data_proto.build_ids(),
- &build_id_events_) ||
- !DeserializeStringMetadata(perf_data_proto.string_metadata(),
- &string_metadata_) ||
- !DeserializeUint32Metadata(perf_data_proto.uint32_metadata(),
- &uint32_metadata_) ||
- !DeserializeUint64Metadata(perf_data_proto.uint64_metadata(),
- &uint64_metadata_) ||
- !DeserializeCPUTopologyMetadata(perf_data_proto.cpu_topology(),
- &cpu_topology_) ||
- !DeserializeNUMATopologyMetadata(perf_data_proto.numa_topology(),
- &numa_topology_)) {
+ if (!DeserializeMetadata(perf_data_proto)) {
return false;
}
@@ -724,6 +703,149 @@
return DeserializeBuildIDEvents(from, to);
}
+bool PerfSerializer::SerializeMetadata(PerfDataProto* to) const {
+ if (!SerializeBuildIDs(build_id_events_, to->mutable_build_ids()) ||
+ !SerializeUint32Metadata(uint32_metadata_,
+ to->mutable_uint32_metadata()) ||
+ !SerializeUint64Metadata(uint64_metadata_,
+ to->mutable_uint64_metadata()) ||
+ !SerializeCPUTopologyMetadata(cpu_topology_,
+ to->mutable_cpu_topology()) ||
+ !SerializeNUMATopologyMetadata(numa_topology_,
+ to->mutable_numa_topology())) {
+ return false;
+ }
+ typedef PerfDataProto_StringMetadata_StringAndMd5sumPrefix
+ StringAndMd5sumPrefix;
+ // Handle the string metadata specially.
+ for (size_t i = 0; i < string_metadata_.size(); ++i) {
+ StringAndMd5sumPrefix* to_metadata = NULL;
+ uint32 type = string_metadata_[i].type;
+ PerfDataProto_StringMetadata* proto_string_metadata =
+ to->mutable_string_metadata();
+ bool is_command_line = false;
+ switch (type) {
+ case HEADER_HOSTNAME:
+ to_metadata = proto_string_metadata->mutable_hostname();
+ break;
+ case HEADER_OSRELEASE:
+ to_metadata = proto_string_metadata->mutable_kernel_version();
+ break;
+ case HEADER_VERSION:
+ to_metadata = proto_string_metadata->mutable_perf_version();
+ break;
+ case HEADER_ARCH:
+ to_metadata = proto_string_metadata->mutable_architecture();
+ break;
+ case HEADER_CPUDESC:
+ to_metadata = proto_string_metadata->mutable_cpu_description();
+ break;
+ case HEADER_CPUID:
+ to_metadata = proto_string_metadata->mutable_cpu_id();
+ break;
+ case HEADER_CMDLINE:
+ is_command_line = true;
+ to_metadata = proto_string_metadata->mutable_perf_command_line_whole();
+ break;
+ default:
+ LOG(ERROR) << "Unsupported string metadata type: " << type;
+ continue;
+ }
+ if (is_command_line) {
+ // Handle command lines as a special case. It has two protobuf fields, one
+ // of which is a repeated field.
+ string full_command_line;
+ for (size_t j = 0; j < string_metadata_[i].data.size(); ++j) {
+ StringAndMd5sumPrefix* command_line_token =
+ proto_string_metadata->add_perf_command_line_token();
+ command_line_token->set_value(string_metadata_[i].data[j].str);
+ command_line_token->
+ set_value_md5_prefix(Md5Prefix(command_line_token->value()));
+ full_command_line += string_metadata_[i].data[j].str + " ";
+ }
+ // Delete the extra space at the end of the newly created command string.
+ TrimWhitespace(&full_command_line);
+ to_metadata->set_value(full_command_line);
+ to_metadata->set_value_md5_prefix(Md5Prefix(full_command_line));
+ } else {
+ DCHECK(to_metadata); // Make sure a valid destination metadata was found.
+ to_metadata->set_value(string_metadata_[i].data[0].str);
+ to_metadata->set_value_md5_prefix(
+ Md5Prefix(string_metadata_[i].data[0].str));
+ }
+ }
+ return true;
+}
+
+bool PerfSerializer::DeserializeMetadata(const PerfDataProto& from) {
+ if (!DeserializeBuildIDs(from.build_ids(), &build_id_events_) ||
+ !DeserializeUint32Metadata(from.uint32_metadata(), &uint32_metadata_) ||
+ !DeserializeUint64Metadata(from.uint64_metadata(), &uint64_metadata_) ||
+ !DeserializeCPUTopologyMetadata(from.cpu_topology(), &cpu_topology_) ||
+ !DeserializeNUMATopologyMetadata(from.numa_topology(), &numa_topology_)) {
+ return false;
+ }
+
+ // Handle the string metadata specially.
+ typedef PerfDataProto_StringMetadata_StringAndMd5sumPrefix
+ StringAndMd5sumPrefix;
+ const PerfDataProto_StringMetadata& data = from.string_metadata();
+ std::vector<std::pair<u32, StringAndMd5sumPrefix> > metadata_strings;
+ if (data.has_hostname()) {
+ metadata_strings.push_back(
+ std::make_pair(static_cast<u32>(HEADER_HOSTNAME), data.hostname()));
+ }
+ if (data.has_kernel_version()) {
+ metadata_strings.push_back(
+ std::make_pair(static_cast<u32>(HEADER_OSRELEASE),
+ data.kernel_version()));
+ }
+ if (data.has_perf_version()) {
+ metadata_strings.push_back(
+ std::make_pair(static_cast<u32>(HEADER_VERSION), data.perf_version()));
+ }
+ if (data.has_architecture()) {
+ metadata_strings.push_back(
+ std::make_pair(static_cast<u32>(HEADER_ARCH), data.architecture()));
+ }
+ if (data.has_cpu_description()) {
+ metadata_strings.push_back(
+ std::make_pair(static_cast<u32>(HEADER_CPUDESC),
+ data.cpu_description()));
+ }
+ if (data.has_cpu_id()) {
+ metadata_strings.push_back(
+ std::make_pair(static_cast<u32>(HEADER_CPUID), data.cpu_id()));
+ }
+
+ // Add each string metadata element to |string_metadata_|.
+ for (size_t i = 0; i < metadata_strings.size(); ++i) {
+ PerfStringMetadata metadata;
+ metadata.type = metadata_strings[i].first;
+ CStringWithLength cstring;
+ cstring.str = metadata_strings[i].second.value();
+ cstring.len = cstring.str.size() + 1; // Include the null terminator.
+ metadata.data.push_back(cstring);
+
+ string_metadata_.push_back(metadata);
+ }
+
+ // Add the command line tokens as a special case (repeated field).
+ if (data.perf_command_line_token_size() > 0) {
+ PerfStringMetadata metadata;
+ metadata.type = HEADER_CMDLINE;
+ for (int i = 0; i < data.perf_command_line_token_size(); ++i) {
+ CStringWithLength cstring;
+ cstring.str = data.perf_command_line_token(i).value();
+ cstring.len = cstring.str.size() + 1; // Include the null terminator.
+ metadata.data.push_back(cstring);
+ }
+ string_metadata_.push_back(metadata);
+ }
+
+ return true;
+}
+
bool PerfSerializer::SerializeBuildIDEvent(
build_id_event* const& from,
PerfDataProto_PerfBuildID* to) const {
@@ -755,28 +877,6 @@
return true;
}
-bool PerfSerializer::SerializeSingleStringMetadata(
- const PerfStringMetadata& metadata,
- PerfDataProto_PerfStringMetadata* proto_metadata) const {
- proto_metadata->set_type(metadata.type);
- for (size_t i = 0; i < metadata.data.size(); ++i)
- proto_metadata->add_data(metadata.data[i].str);
- return true;
-}
-
-bool PerfSerializer::DeserializeSingleStringMetadata(
- const PerfDataProto_PerfStringMetadata& proto_metadata,
- PerfStringMetadata* metadata) const {
- metadata->type = proto_metadata.type();
- for (int i = 0; i < proto_metadata.data_size(); ++i) {
- CStringWithLength single_string;
- single_string.str = proto_metadata.data(i);
- single_string.len = GetUint64AlignedStringLength(single_string.str);
- metadata->data.push_back(single_string);
- }
- return true;
-}
-
bool PerfSerializer::SerializeSingleUint32Metadata(
const PerfUint32Metadata& metadata,
PerfDataProto_PerfUint32Metadata* proto_metadata) const {
diff --git a/perf_serializer.h b/perf_serializer.h
index 9c2e47e..1e30802 100644
--- a/perf_serializer.h
+++ b/perf_serializer.h
@@ -129,18 +129,14 @@
RepeatedPtrField<PerfDataProto_PerfBuildID>& from,
std::vector<build_id_event*>* to) const;
+ bool SerializeMetadata(PerfDataProto* to) const;
+ bool DeserializeMetadata(const PerfDataProto& from);
+
bool SerializeBuildIDEvent(build_id_event* const& from,
PerfDataProto_PerfBuildID* to) const;
bool DeserializeBuildIDEvent(const PerfDataProto_PerfBuildID& from,
build_id_event** to) const;
- bool SerializeSingleStringMetadata(
- const PerfStringMetadata& metadata,
- PerfDataProto_PerfStringMetadata* proto_metadata) const;
- bool DeserializeSingleStringMetadata(
- const PerfDataProto_PerfStringMetadata& proto_metadata,
- PerfStringMetadata* metadata) const;
-
bool SerializeSingleUint32Metadata(
const PerfUint32Metadata& metadata,
PerfDataProto_PerfUint32Metadata* proto_metadata) const;
@@ -226,13 +222,6 @@
quipper::PerfDataProto_PerfBuildID,
DeserializeBuildIDEvent)
- SERIALIZEVECTORFUNCTION(SerializeStringMetadata, PerfStringMetadata,
- quipper::PerfDataProto_PerfStringMetadata,
- SerializeSingleStringMetadata)
- DESERIALIZEVECTORFUNCTION(DeserializeStringMetadata, PerfStringMetadata,
- quipper::PerfDataProto_PerfStringMetadata,
- DeserializeSingleStringMetadata)
-
SERIALIZEVECTORFUNCTION(SerializeUint32Metadata, PerfUint32Metadata,
quipper::PerfDataProto_PerfUint32Metadata,
SerializeSingleUint32Metadata)
diff --git a/test_utils.cc b/test_utils.cc
index 92e0496..21ee49b 100644
--- a/test_utils.cc
+++ b/test_utils.cc
@@ -71,19 +71,6 @@
return args;
}
-// Trim leading and trailing whitespace from |str|.
-void TrimWhitespace(string* str) {
- const char kWhitespaceCharacters[] = " \t\n\r";
- size_t end = str->find_last_not_of(kWhitespaceCharacters);
- if (end != std::string::npos) {
- size_t start = str->find_first_not_of(kWhitespaceCharacters);
- *str = str->substr(start, end + 1 - start);
- } else {
- // The string contains only whitespace.
- *str = "";
- }
-}
-
// Splits a character array by |delimiter| into a vector of strings tokens.
void SplitString(const string& str,
char delimiter,
diff --git a/testdata/perf.data.armv7.io.out.pb_text.gz b/testdata/perf.data.armv7.io.out.pb_text.gz
index 2701477..dec335c 100644
--- a/testdata/perf.data.armv7.io.out.pb_text.gz
+++ b/testdata/perf.data.armv7.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.parse.out.pb_text.gz b/testdata/perf.data.armv7.parse.out.pb_text.gz
index d7c451d..dec335c 100644
--- a/testdata/perf.data.armv7.parse.out.pb_text.gz
+++ b/testdata/perf.data.armv7.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.parse.remap.out.pb_text.gz b/testdata/perf.data.armv7.parse.remap.out.pb_text.gz
index 249aa0b..d805351 100644
--- a/testdata/perf.data.armv7.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.armv7.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.parse.remap2.out.pb_text.gz b/testdata/perf.data.armv7.parse.remap2.out.pb_text.gz
index 8f36ff3..d805351 100644
--- a/testdata/perf.data.armv7.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.armv7.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.pb_text.gz b/testdata/perf.data.armv7.pb_text.gz
index dbbdae6..dec335c 100644
--- a/testdata/perf.data.armv7.pb_text.gz
+++ b/testdata/perf.data.armv7.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.pr.out.pb_text.gz b/testdata/perf.data.armv7.pr.out.pb_text.gz
index a9d2415..dec335c 100644
--- a/testdata/perf.data.armv7.pr.out.pb_text.gz
+++ b/testdata/perf.data.armv7.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.ser.comm.out.pb_text.gz b/testdata/perf.data.armv7.ser.comm.out.pb_text.gz
index ca9f6c0..3243389 100644
--- a/testdata/perf.data.armv7.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.armv7.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.armv7.serialized.out.pb_text.gz b/testdata/perf.data.armv7.serialized.out.pb_text.gz
index 86244e5..dec335c 100644
--- a/testdata/perf.data.armv7.serialized.out.pb_text.gz
+++ b/testdata/perf.data.armv7.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.io.out.pb_text.gz b/testdata/perf.data.branch.io.out.pb_text.gz
index 1a4e66c..af894a5 100644
--- a/testdata/perf.data.branch.io.out.pb_text.gz
+++ b/testdata/perf.data.branch.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.io.out.pb_text.gz b/testdata/perf.data.branch.next.io.out.pb_text.gz
index 2827016..cf146e0 100644
--- a/testdata/perf.data.branch.next.io.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.parse.out.pb_text.gz b/testdata/perf.data.branch.next.parse.out.pb_text.gz
index 9a07f13..cf146e0 100644
--- a/testdata/perf.data.branch.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.parse.remap.out.pb_text.gz b/testdata/perf.data.branch.next.parse.remap.out.pb_text.gz
index 4aed957..debf9bd 100644
--- a/testdata/perf.data.branch.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.branch.next.parse.remap2.out.pb_text.gz
index 233a18a..debf9bd 100644
--- a/testdata/perf.data.branch.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.pb_text.gz b/testdata/perf.data.branch.next.pb_text.gz
index 96ed7bc..b1887dc 100644
--- a/testdata/perf.data.branch.next.pb_text.gz
+++ b/testdata/perf.data.branch.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.pr.out.pb_text.gz b/testdata/perf.data.branch.next.pr.out.pb_text.gz
index 324dd88..cf146e0 100644
--- a/testdata/perf.data.branch.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.ser.comm.out.pb_text.gz b/testdata/perf.data.branch.next.ser.comm.out.pb_text.gz
index d07838f..dbb77a8 100644
--- a/testdata/perf.data.branch.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.next.serialized.out.pb_text.gz b/testdata/perf.data.branch.next.serialized.out.pb_text.gz
index acff6f3..1696e75 100644
--- a/testdata/perf.data.branch.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.branch.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.parse.out.pb_text.gz b/testdata/perf.data.branch.parse.out.pb_text.gz
index 6cd0e8e..af894a5 100644
--- a/testdata/perf.data.branch.parse.out.pb_text.gz
+++ b/testdata/perf.data.branch.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.parse.remap.out.pb_text.gz b/testdata/perf.data.branch.parse.remap.out.pb_text.gz
index cbf2bfa..e1232c3 100644
--- a/testdata/perf.data.branch.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.branch.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.parse.remap2.out.pb_text.gz b/testdata/perf.data.branch.parse.remap2.out.pb_text.gz
index 8745733..e1232c3 100644
--- a/testdata/perf.data.branch.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.branch.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.pb_text.gz b/testdata/perf.data.branch.pb_text.gz
index 3e4197e..af894a5 100644
--- a/testdata/perf.data.branch.pb_text.gz
+++ b/testdata/perf.data.branch.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.pr.out.pb_text.gz b/testdata/perf.data.branch.pr.out.pb_text.gz
index 715b82c..af894a5 100644
--- a/testdata/perf.data.branch.pr.out.pb_text.gz
+++ b/testdata/perf.data.branch.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.ser.comm.out.pb_text.gz b/testdata/perf.data.branch.ser.comm.out.pb_text.gz
index c30cf84..a548d00 100644
--- a/testdata/perf.data.branch.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.branch.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.branch.serialized.out.pb_text.gz b/testdata/perf.data.branch.serialized.out.pb_text.gz
index dc50f60..e55fb19 100644
--- a/testdata/perf.data.branch.serialized.out.pb_text.gz
+++ b/testdata/perf.data.branch.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.io.out.pb_text.gz b/testdata/perf.data.busy.0.io.out.pb_text.gz
index 857a478..6218e70 100644
--- a/testdata/perf.data.busy.0.io.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.io.out.pb_text.gz b/testdata/perf.data.busy.0.next.io.out.pb_text.gz
index 6e72cf1..f3aa817 100644
--- a/testdata/perf.data.busy.0.next.io.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.parse.out.pb_text.gz b/testdata/perf.data.busy.0.next.parse.out.pb_text.gz
index 5a33ec7..f3aa817 100644
--- a/testdata/perf.data.busy.0.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.parse.remap.out.pb_text.gz b/testdata/perf.data.busy.0.next.parse.remap.out.pb_text.gz
index fae027e..a3943c4 100644
--- a/testdata/perf.data.busy.0.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.busy.0.next.parse.remap2.out.pb_text.gz
index 9b5cc5a..a3943c4 100644
--- a/testdata/perf.data.busy.0.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.pb_text.gz b/testdata/perf.data.busy.0.next.pb_text.gz
index ddc1a91..cbcc433 100644
--- a/testdata/perf.data.busy.0.next.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.pr.out.pb_text.gz b/testdata/perf.data.busy.0.next.pr.out.pb_text.gz
index d5031b8..f3aa817 100644
--- a/testdata/perf.data.busy.0.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.ser.comm.out.pb_text.gz b/testdata/perf.data.busy.0.next.ser.comm.out.pb_text.gz
index 91f75f8..c1eae67 100644
--- a/testdata/perf.data.busy.0.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.next.serialized.out.pb_text.gz b/testdata/perf.data.busy.0.next.serialized.out.pb_text.gz
index d0a19f7..de34c39 100644
--- a/testdata/perf.data.busy.0.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.parse.out.pb_text.gz b/testdata/perf.data.busy.0.parse.out.pb_text.gz
index a9b9fe3..6218e70 100644
--- a/testdata/perf.data.busy.0.parse.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.parse.remap.out.pb_text.gz b/testdata/perf.data.busy.0.parse.remap.out.pb_text.gz
index e486ef2..b19fcba 100644
--- a/testdata/perf.data.busy.0.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.parse.remap2.out.pb_text.gz b/testdata/perf.data.busy.0.parse.remap2.out.pb_text.gz
index 73f69e8..b19fcba 100644
--- a/testdata/perf.data.busy.0.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.pb_text.gz b/testdata/perf.data.busy.0.pb_text.gz
index 719330b..6218e70 100644
--- a/testdata/perf.data.busy.0.pb_text.gz
+++ b/testdata/perf.data.busy.0.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.pr.out.pb_text.gz b/testdata/perf.data.busy.0.pr.out.pb_text.gz
index e5c6485..6218e70 100644
--- a/testdata/perf.data.busy.0.pr.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.ser.comm.out.pb_text.gz b/testdata/perf.data.busy.0.ser.comm.out.pb_text.gz
index 6b5231c..edeb9c6 100644
--- a/testdata/perf.data.busy.0.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.0.serialized.out.pb_text.gz b/testdata/perf.data.busy.0.serialized.out.pb_text.gz
index 9796e26..0437fca 100644
--- a/testdata/perf.data.busy.0.serialized.out.pb_text.gz
+++ b/testdata/perf.data.busy.0.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.io.out.pb_text.gz b/testdata/perf.data.busy.1.io.out.pb_text.gz
index a843089..f82c922 100644
--- a/testdata/perf.data.busy.1.io.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.io.out.pb_text.gz b/testdata/perf.data.busy.1.next.io.out.pb_text.gz
index 7f10510..411b5d6 100644
--- a/testdata/perf.data.busy.1.next.io.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.parse.out.pb_text.gz b/testdata/perf.data.busy.1.next.parse.out.pb_text.gz
index b6a47a7..411b5d6 100644
--- a/testdata/perf.data.busy.1.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.parse.remap.out.pb_text.gz b/testdata/perf.data.busy.1.next.parse.remap.out.pb_text.gz
index 9264048..35033cc 100644
--- a/testdata/perf.data.busy.1.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.busy.1.next.parse.remap2.out.pb_text.gz
index eb5ba97..35033cc 100644
--- a/testdata/perf.data.busy.1.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.pb_text.gz b/testdata/perf.data.busy.1.next.pb_text.gz
index 3ad8be7..c3ef849 100644
--- a/testdata/perf.data.busy.1.next.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.pr.out.pb_text.gz b/testdata/perf.data.busy.1.next.pr.out.pb_text.gz
index 0d2f576..411b5d6 100644
--- a/testdata/perf.data.busy.1.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.ser.comm.out.pb_text.gz b/testdata/perf.data.busy.1.next.ser.comm.out.pb_text.gz
index c723ba7..8ec26f7 100644
--- a/testdata/perf.data.busy.1.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.next.serialized.out.pb_text.gz b/testdata/perf.data.busy.1.next.serialized.out.pb_text.gz
index 957f300..411b5d6 100644
--- a/testdata/perf.data.busy.1.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.parse.out.pb_text.gz b/testdata/perf.data.busy.1.parse.out.pb_text.gz
index 0222b29..f82c922 100644
--- a/testdata/perf.data.busy.1.parse.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.parse.remap.out.pb_text.gz b/testdata/perf.data.busy.1.parse.remap.out.pb_text.gz
index 47a9136..405f325 100644
--- a/testdata/perf.data.busy.1.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.parse.remap2.out.pb_text.gz b/testdata/perf.data.busy.1.parse.remap2.out.pb_text.gz
index 108cf17..405f325 100644
--- a/testdata/perf.data.busy.1.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.pb_text.gz b/testdata/perf.data.busy.1.pb_text.gz
index b347dba..f82c922 100644
--- a/testdata/perf.data.busy.1.pb_text.gz
+++ b/testdata/perf.data.busy.1.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.pr.out.pb_text.gz b/testdata/perf.data.busy.1.pr.out.pb_text.gz
index 9d7481e..f82c922 100644
--- a/testdata/perf.data.busy.1.pr.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.ser.comm.out.pb_text.gz b/testdata/perf.data.busy.1.ser.comm.out.pb_text.gz
index e31a59d..9fed740 100644
--- a/testdata/perf.data.busy.1.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.1.serialized.out.pb_text.gz b/testdata/perf.data.busy.1.serialized.out.pb_text.gz
index 3777fd3..f82c922 100644
--- a/testdata/perf.data.busy.1.serialized.out.pb_text.gz
+++ b/testdata/perf.data.busy.1.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.io.out.pb_text.gz b/testdata/perf.data.busy.5.io.out.pb_text.gz
index 94f9bbf..ba7c8cc 100644
--- a/testdata/perf.data.busy.5.io.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.io.out.pb_text.gz b/testdata/perf.data.busy.5.next.io.out.pb_text.gz
index 80fb0e9..e20f3fe 100644
--- a/testdata/perf.data.busy.5.next.io.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.parse.out.pb_text.gz b/testdata/perf.data.busy.5.next.parse.out.pb_text.gz
index aa57bba..e20f3fe 100644
--- a/testdata/perf.data.busy.5.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.parse.remap.out.pb_text.gz b/testdata/perf.data.busy.5.next.parse.remap.out.pb_text.gz
index 5415f0c..7c567ec 100644
--- a/testdata/perf.data.busy.5.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.busy.5.next.parse.remap2.out.pb_text.gz
index e5362eb..7c567ec 100644
--- a/testdata/perf.data.busy.5.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.pb_text.gz b/testdata/perf.data.busy.5.next.pb_text.gz
index aaf8e08..bfcec4f 100644
--- a/testdata/perf.data.busy.5.next.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.pr.out.pb_text.gz b/testdata/perf.data.busy.5.next.pr.out.pb_text.gz
index 36dd827..e20f3fe 100644
--- a/testdata/perf.data.busy.5.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.ser.comm.out.pb_text.gz b/testdata/perf.data.busy.5.next.ser.comm.out.pb_text.gz
index ba7f6fd..0827a6e 100644
--- a/testdata/perf.data.busy.5.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.next.serialized.out.pb_text.gz b/testdata/perf.data.busy.5.next.serialized.out.pb_text.gz
index 5e0e651..cdb0b83 100644
--- a/testdata/perf.data.busy.5.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.parse.out.pb_text.gz b/testdata/perf.data.busy.5.parse.out.pb_text.gz
index bb1a3c6..ba7c8cc 100644
--- a/testdata/perf.data.busy.5.parse.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.parse.remap.out.pb_text.gz b/testdata/perf.data.busy.5.parse.remap.out.pb_text.gz
index 6fb1c3a..f2f0b1f 100644
--- a/testdata/perf.data.busy.5.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.parse.remap2.out.pb_text.gz b/testdata/perf.data.busy.5.parse.remap2.out.pb_text.gz
index 3a718fe..f2f0b1f 100644
--- a/testdata/perf.data.busy.5.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.pb_text.gz b/testdata/perf.data.busy.5.pb_text.gz
index 03ce848..ba7c8cc 100644
--- a/testdata/perf.data.busy.5.pb_text.gz
+++ b/testdata/perf.data.busy.5.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.pr.out.pb_text.gz b/testdata/perf.data.busy.5.pr.out.pb_text.gz
index 614155e..ba7c8cc 100644
--- a/testdata/perf.data.busy.5.pr.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.ser.comm.out.pb_text.gz b/testdata/perf.data.busy.5.ser.comm.out.pb_text.gz
index 4588bc3..1947bd9 100644
--- a/testdata/perf.data.busy.5.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.busy.5.serialized.out.pb_text.gz b/testdata/perf.data.busy.5.serialized.out.pb_text.gz
index 1f0ee3a..fc82ee0 100644
--- a/testdata/perf.data.busy.5.serialized.out.pb_text.gz
+++ b/testdata/perf.data.busy.5.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.io.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.io.out.pb_text.gz
index 51cb683..07863fc 100644
--- a/testdata/perf.data.cycles_and_branch.io.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.parse.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.parse.out.pb_text.gz
index 3ea66cc..07863fc 100644
--- a/testdata/perf.data.cycles_and_branch.parse.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.parse.remap.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.parse.remap.out.pb_text.gz
index 40b3aa4..85bdbba 100644
--- a/testdata/perf.data.cycles_and_branch.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.parse.remap2.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.parse.remap2.out.pb_text.gz
index cfef53c..85bdbba 100644
--- a/testdata/perf.data.cycles_and_branch.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.pb_text.gz b/testdata/perf.data.cycles_and_branch.pb_text.gz
index 06e260b..07863fc 100644
--- a/testdata/perf.data.cycles_and_branch.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.pr.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.pr.out.pb_text.gz
index 952a215..07863fc 100644
--- a/testdata/perf.data.cycles_and_branch.pr.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.ser.comm.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.ser.comm.out.pb_text.gz
index 46893d8..3dac74f 100644
--- a/testdata/perf.data.cycles_and_branch.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.cycles_and_branch.serialized.out.pb_text.gz b/testdata/perf.data.cycles_and_branch.serialized.out.pb_text.gz
index a9facc8..55e0e7d 100644
--- a/testdata/perf.data.cycles_and_branch.serialized.out.pb_text.gz
+++ b/testdata/perf.data.cycles_and_branch.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.io.out.pb_text.gz b/testdata/perf.data.forkexit.io.out.pb_text.gz
index febfd59..bffac40 100644
--- a/testdata/perf.data.forkexit.io.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.io.out.pb_text.gz b/testdata/perf.data.forkexit.next.io.out.pb_text.gz
index faf4e50..656401b 100644
--- a/testdata/perf.data.forkexit.next.io.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.parse.out.pb_text.gz b/testdata/perf.data.forkexit.next.parse.out.pb_text.gz
index 537281d..656401b 100644
--- a/testdata/perf.data.forkexit.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.parse.remap.out.pb_text.gz b/testdata/perf.data.forkexit.next.parse.remap.out.pb_text.gz
index c489b49..e6e7a06 100644
--- a/testdata/perf.data.forkexit.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.forkexit.next.parse.remap2.out.pb_text.gz
index 9b07c23..e6e7a06 100644
--- a/testdata/perf.data.forkexit.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.pb_text.gz b/testdata/perf.data.forkexit.next.pb_text.gz
index 1c6007e..17b05b1 100644
--- a/testdata/perf.data.forkexit.next.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.pr.out.pb_text.gz b/testdata/perf.data.forkexit.next.pr.out.pb_text.gz
index 45aecba..656401b 100644
--- a/testdata/perf.data.forkexit.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.ser.comm.out.pb_text.gz b/testdata/perf.data.forkexit.next.ser.comm.out.pb_text.gz
index ab0c2c8..5f64436 100644
--- a/testdata/perf.data.forkexit.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.next.serialized.out.pb_text.gz b/testdata/perf.data.forkexit.next.serialized.out.pb_text.gz
index 6b3637a..656401b 100644
--- a/testdata/perf.data.forkexit.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.parse.out.pb_text.gz b/testdata/perf.data.forkexit.parse.out.pb_text.gz
index f977663..bffac40 100644
--- a/testdata/perf.data.forkexit.parse.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.parse.remap.out.pb_text.gz b/testdata/perf.data.forkexit.parse.remap.out.pb_text.gz
index 3c5c59d..bc7611e 100644
--- a/testdata/perf.data.forkexit.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.parse.remap2.out.pb_text.gz b/testdata/perf.data.forkexit.parse.remap2.out.pb_text.gz
index 9e4b563..bc7611e 100644
--- a/testdata/perf.data.forkexit.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.pb_text.gz b/testdata/perf.data.forkexit.pb_text.gz
index 872388c..bffac40 100644
--- a/testdata/perf.data.forkexit.pb_text.gz
+++ b/testdata/perf.data.forkexit.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.pr.out.pb_text.gz b/testdata/perf.data.forkexit.pr.out.pb_text.gz
index e4df5bd..bffac40 100644
--- a/testdata/perf.data.forkexit.pr.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.ser.comm.out.pb_text.gz b/testdata/perf.data.forkexit.ser.comm.out.pb_text.gz
index 405e874..f22926b 100644
--- a/testdata/perf.data.forkexit.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.forkexit.serialized.out.pb_text.gz b/testdata/perf.data.forkexit.serialized.out.pb_text.gz
index 9a1f66c..bffac40 100644
--- a/testdata/perf.data.forkexit.serialized.out.pb_text.gz
+++ b/testdata/perf.data.forkexit.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.io.out.pb_text.gz b/testdata/perf.data.i686.io.out.pb_text.gz
index 35c2105..8cc9d74 100644
--- a/testdata/perf.data.i686.io.out.pb_text.gz
+++ b/testdata/perf.data.i686.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.parse.out.pb_text.gz b/testdata/perf.data.i686.parse.out.pb_text.gz
index f76cdd2..8cc9d74 100644
--- a/testdata/perf.data.i686.parse.out.pb_text.gz
+++ b/testdata/perf.data.i686.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.parse.remap.out.pb_text.gz b/testdata/perf.data.i686.parse.remap.out.pb_text.gz
index eee8435..e7db807 100644
--- a/testdata/perf.data.i686.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.i686.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.parse.remap2.out.pb_text.gz b/testdata/perf.data.i686.parse.remap2.out.pb_text.gz
index da09ae5..e7db807 100644
--- a/testdata/perf.data.i686.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.i686.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.pb_text.gz b/testdata/perf.data.i686.pb_text.gz
index 9526553..8cc9d74 100644
--- a/testdata/perf.data.i686.pb_text.gz
+++ b/testdata/perf.data.i686.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.pr.out.pb_text.gz b/testdata/perf.data.i686.pr.out.pb_text.gz
index 52ff2a8..8cc9d74 100644
--- a/testdata/perf.data.i686.pr.out.pb_text.gz
+++ b/testdata/perf.data.i686.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.ser.comm.out.pb_text.gz b/testdata/perf.data.i686.ser.comm.out.pb_text.gz
index 913fdd4..c580fd5 100644
--- a/testdata/perf.data.i686.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.i686.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.i686.serialized.out.pb_text.gz b/testdata/perf.data.i686.serialized.out.pb_text.gz
index b684618..4250de6 100644
--- a/testdata/perf.data.i686.serialized.out.pb_text.gz
+++ b/testdata/perf.data.i686.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.io.out.pb_text.gz b/testdata/perf.data.numatopology.io.out.pb_text.gz
index 0de94ab..72cb484 100644
--- a/testdata/perf.data.numatopology.io.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.parse.out.pb_text.gz b/testdata/perf.data.numatopology.parse.out.pb_text.gz
index 8e93664..72cb484 100644
--- a/testdata/perf.data.numatopology.parse.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.parse.remap.out.pb_text.gz b/testdata/perf.data.numatopology.parse.remap.out.pb_text.gz
index 4699a07..3d6671a 100644
--- a/testdata/perf.data.numatopology.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.parse.remap2.out.pb_text.gz b/testdata/perf.data.numatopology.parse.remap2.out.pb_text.gz
index 8fbd879..3d6671a 100644
--- a/testdata/perf.data.numatopology.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.pb_text.gz b/testdata/perf.data.numatopology.pb_text.gz
index effe655..72cb484 100644
--- a/testdata/perf.data.numatopology.pb_text.gz
+++ b/testdata/perf.data.numatopology.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.pr.out.pb_text.gz b/testdata/perf.data.numatopology.pr.out.pb_text.gz
index af6671d..72cb484 100644
--- a/testdata/perf.data.numatopology.pr.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.ser.comm.out.pb_text.gz b/testdata/perf.data.numatopology.ser.comm.out.pb_text.gz
index c271f9f..a756898 100644
--- a/testdata/perf.data.numatopology.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.numatopology.serialized.out.pb_text.gz b/testdata/perf.data.numatopology.serialized.out.pb_text.gz
index 9c49674..72cb484 100644
--- a/testdata/perf.data.numatopology.serialized.out.pb_text.gz
+++ b/testdata/perf.data.numatopology.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.extrabyte.pb_text.gz b/testdata/perf.data.piped.extrabyte.pb_text.gz
index 6cc339a..4a83049 100644
--- a/testdata/perf.data.piped.extrabyte.pb_text.gz
+++ b/testdata/perf.data.piped.extrabyte.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.extrabyte.pr.out.pb_text.gz b/testdata/perf.data.piped.extrabyte.pr.out.pb_text.gz
index c37a576..b5b2c91 100644
--- a/testdata/perf.data.piped.extrabyte.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.extrabyte.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.extradata.pb_text.gz b/testdata/perf.data.piped.extradata.pb_text.gz
index a54822f..4a83049 100644
--- a/testdata/perf.data.piped.extradata.pb_text.gz
+++ b/testdata/perf.data.piped.extradata.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.extradata.pr.out.pb_text.gz b/testdata/perf.data.piped.extradata.pr.out.pb_text.gz
index 24360fa..b5b2c91 100644
--- a/testdata/perf.data.piped.extradata.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.extradata.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.host.pb_text.gz b/testdata/perf.data.piped.host.pb_text.gz
index cbfa005..ed94e1b 100644
--- a/testdata/perf.data.piped.host.pb_text.gz
+++ b/testdata/perf.data.piped.host.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.host.pr.out.pb_text.gz b/testdata/perf.data.piped.host.pr.out.pb_text.gz
index c6d6114..ed94e1b 100644
--- a/testdata/perf.data.piped.host.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.host.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.hw_and_sw.pb_text.gz b/testdata/perf.data.piped.hw_and_sw.pb_text.gz
index 1dfd6b8..d991534 100644
--- a/testdata/perf.data.piped.hw_and_sw.pb_text.gz
+++ b/testdata/perf.data.piped.hw_and_sw.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.hw_and_sw.pr.out.pb_text.gz b/testdata/perf.data.piped.hw_and_sw.pr.out.pb_text.gz
index 5561148..d991534 100644
--- a/testdata/perf.data.piped.hw_and_sw.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.hw_and_sw.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.target.next.pb_text.gz b/testdata/perf.data.piped.target.next.pb_text.gz
index 55b0fc0..b5b2c91 100644
--- a/testdata/perf.data.piped.target.next.pb_text.gz
+++ b/testdata/perf.data.piped.target.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.target.next.pr.out.pb_text.gz b/testdata/perf.data.piped.target.next.pr.out.pb_text.gz
index 2af7704..b5b2c91 100644
--- a/testdata/perf.data.piped.target.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.target.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.target.pb_text.gz b/testdata/perf.data.piped.target.pb_text.gz
index 2b842b8..32b74fd 100644
--- a/testdata/perf.data.piped.target.pb_text.gz
+++ b/testdata/perf.data.piped.target.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.target.pr.out.pb_text.gz b/testdata/perf.data.piped.target.pr.out.pb_text.gz
index 79d2ea0..32b74fd 100644
--- a/testdata/perf.data.piped.target.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.target.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.target.throttled.pb_text.gz b/testdata/perf.data.piped.target.throttled.pb_text.gz
index 7447ff5..fa8330a 100644
--- a/testdata/perf.data.piped.target.throttled.pb_text.gz
+++ b/testdata/perf.data.piped.target.throttled.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.piped.target.throttled.pr.out.pb_text.gz b/testdata/perf.data.piped.target.throttled.pr.out.pb_text.gz
index cb2023c..fa8330a 100644
--- a/testdata/perf.data.piped.target.throttled.pr.out.pb_text.gz
+++ b/testdata/perf.data.piped.target.throttled.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.io.out.pb_text.gz b/testdata/perf.data.raw.io.out.pb_text.gz
index 82b09be..c38feef 100644
--- a/testdata/perf.data.raw.io.out.pb_text.gz
+++ b/testdata/perf.data.raw.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.parse.out.pb_text.gz b/testdata/perf.data.raw.parse.out.pb_text.gz
index 2560071..c38feef 100644
--- a/testdata/perf.data.raw.parse.out.pb_text.gz
+++ b/testdata/perf.data.raw.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.parse.remap.out.pb_text.gz b/testdata/perf.data.raw.parse.remap.out.pb_text.gz
index 6719f7c..a38b55e 100644
--- a/testdata/perf.data.raw.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.raw.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.parse.remap2.out.pb_text.gz b/testdata/perf.data.raw.parse.remap2.out.pb_text.gz
index cca71ac..a38b55e 100644
--- a/testdata/perf.data.raw.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.raw.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.pb_text.gz b/testdata/perf.data.raw.pb_text.gz
index 7489813..c38feef 100644
--- a/testdata/perf.data.raw.pb_text.gz
+++ b/testdata/perf.data.raw.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.pr.out.pb_text.gz b/testdata/perf.data.raw.pr.out.pb_text.gz
index 0a4761c..c38feef 100644
--- a/testdata/perf.data.raw.pr.out.pb_text.gz
+++ b/testdata/perf.data.raw.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.ser.comm.out.pb_text.gz b/testdata/perf.data.raw.ser.comm.out.pb_text.gz
index 84e713b..5a50a62 100644
--- a/testdata/perf.data.raw.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.raw.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.raw.serialized.out.pb_text.gz b/testdata/perf.data.raw.serialized.out.pb_text.gz
index cdd0ff0..c38feef 100644
--- a/testdata/perf.data.raw.serialized.out.pb_text.gz
+++ b/testdata/perf.data.raw.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.io.out.pb_text.gz b/testdata/perf.data.remmap.io.out.pb_text.gz
index 86b8595..890ad04 100644
--- a/testdata/perf.data.remmap.io.out.pb_text.gz
+++ b/testdata/perf.data.remmap.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.parse.out.pb_text.gz b/testdata/perf.data.remmap.parse.out.pb_text.gz
index 5bb5e57..890ad04 100644
--- a/testdata/perf.data.remmap.parse.out.pb_text.gz
+++ b/testdata/perf.data.remmap.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.parse.remap.out.pb_text.gz b/testdata/perf.data.remmap.parse.remap.out.pb_text.gz
index aa6295e..5015e98 100644
--- a/testdata/perf.data.remmap.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.remmap.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.parse.remap2.out.pb_text.gz b/testdata/perf.data.remmap.parse.remap2.out.pb_text.gz
index 8cf363f..5015e98 100644
--- a/testdata/perf.data.remmap.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.remmap.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.pb_text.gz b/testdata/perf.data.remmap.pb_text.gz
index dac1629..890ad04 100644
--- a/testdata/perf.data.remmap.pb_text.gz
+++ b/testdata/perf.data.remmap.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.pr.out.pb_text.gz b/testdata/perf.data.remmap.pr.out.pb_text.gz
index ed13d48..890ad04 100644
--- a/testdata/perf.data.remmap.pr.out.pb_text.gz
+++ b/testdata/perf.data.remmap.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.ser.comm.out.pb_text.gz b/testdata/perf.data.remmap.ser.comm.out.pb_text.gz
index d76bb32..3315dce 100644
--- a/testdata/perf.data.remmap.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.remmap.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.remmap.serialized.out.pb_text.gz b/testdata/perf.data.remmap.serialized.out.pb_text.gz
index fdcae5a..890ad04 100644
--- a/testdata/perf.data.remmap.serialized.out.pb_text.gz
+++ b/testdata/perf.data.remmap.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.io.out.pb_text.gz b/testdata/perf.data.singleprocess.io.out.pb_text.gz
index 6b41389..a8f91e0 100644
--- a/testdata/perf.data.singleprocess.io.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.io.out.pb_text.gz b/testdata/perf.data.singleprocess.next.io.out.pb_text.gz
index 1ba8b35..aa54172 100644
--- a/testdata/perf.data.singleprocess.next.io.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.parse.out.pb_text.gz b/testdata/perf.data.singleprocess.next.parse.out.pb_text.gz
index 0b58309..aa54172 100644
--- a/testdata/perf.data.singleprocess.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.parse.remap.out.pb_text.gz b/testdata/perf.data.singleprocess.next.parse.remap.out.pb_text.gz
index 8c43523..fecf28d 100644
--- a/testdata/perf.data.singleprocess.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.singleprocess.next.parse.remap2.out.pb_text.gz
index fb50265..fecf28d 100644
--- a/testdata/perf.data.singleprocess.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.pb_text.gz b/testdata/perf.data.singleprocess.next.pb_text.gz
index c3e4b55..0bdd1b0 100644
--- a/testdata/perf.data.singleprocess.next.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.pr.out.pb_text.gz b/testdata/perf.data.singleprocess.next.pr.out.pb_text.gz
index 60cb6c3..aa54172 100644
--- a/testdata/perf.data.singleprocess.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.ser.comm.out.pb_text.gz b/testdata/perf.data.singleprocess.next.ser.comm.out.pb_text.gz
index fd462f3..11ec647 100644
--- a/testdata/perf.data.singleprocess.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.next.serialized.out.pb_text.gz b/testdata/perf.data.singleprocess.next.serialized.out.pb_text.gz
index 5ff775b..575a142 100644
--- a/testdata/perf.data.singleprocess.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.parse.out.pb_text.gz b/testdata/perf.data.singleprocess.parse.out.pb_text.gz
index 18d77c1..a8f91e0 100644
--- a/testdata/perf.data.singleprocess.parse.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.parse.remap.out.pb_text.gz b/testdata/perf.data.singleprocess.parse.remap.out.pb_text.gz
index 1b09b4d..0ef4c37 100644
--- a/testdata/perf.data.singleprocess.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.parse.remap2.out.pb_text.gz b/testdata/perf.data.singleprocess.parse.remap2.out.pb_text.gz
index 30652ae..0ef4c37 100644
--- a/testdata/perf.data.singleprocess.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.pb_text.gz b/testdata/perf.data.singleprocess.pb_text.gz
index bf91f0c..a8f91e0 100644
--- a/testdata/perf.data.singleprocess.pb_text.gz
+++ b/testdata/perf.data.singleprocess.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.pr.out.pb_text.gz b/testdata/perf.data.singleprocess.pr.out.pb_text.gz
index 0c2758d..a8f91e0 100644
--- a/testdata/perf.data.singleprocess.pr.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.ser.comm.out.pb_text.gz b/testdata/perf.data.singleprocess.ser.comm.out.pb_text.gz
index a49e17f..27b95aa 100644
--- a/testdata/perf.data.singleprocess.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.singleprocess.serialized.out.pb_text.gz b/testdata/perf.data.singleprocess.serialized.out.pb_text.gz
index cf39d31..1fd898d 100644
--- a/testdata/perf.data.singleprocess.serialized.out.pb_text.gz
+++ b/testdata/perf.data.singleprocess.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.io.out.pb_text.gz b/testdata/perf.data.systemwide.0.io.out.pb_text.gz
index a737f3b..3e66f47 100644
--- a/testdata/perf.data.systemwide.0.io.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.io.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.io.out.pb_text.gz
index e4e31ee..db7ab06 100644
--- a/testdata/perf.data.systemwide.0.next.io.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.parse.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.parse.out.pb_text.gz
index 388482a..db7ab06 100644
--- a/testdata/perf.data.systemwide.0.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.parse.remap.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.parse.remap.out.pb_text.gz
index d625b92..6afb77c 100644
--- a/testdata/perf.data.systemwide.0.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.parse.remap2.out.pb_text.gz
index c7e3bfc..6afb77c 100644
--- a/testdata/perf.data.systemwide.0.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.pb_text.gz b/testdata/perf.data.systemwide.0.next.pb_text.gz
index 013ebb0..fdb3676 100644
--- a/testdata/perf.data.systemwide.0.next.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.pr.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.pr.out.pb_text.gz
index f86205b..db7ab06 100644
--- a/testdata/perf.data.systemwide.0.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.ser.comm.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.ser.comm.out.pb_text.gz
index 6842897..6d0f1b4 100644
--- a/testdata/perf.data.systemwide.0.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.next.serialized.out.pb_text.gz b/testdata/perf.data.systemwide.0.next.serialized.out.pb_text.gz
index 183f95b..db7ab06 100644
--- a/testdata/perf.data.systemwide.0.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.parse.out.pb_text.gz b/testdata/perf.data.systemwide.0.parse.out.pb_text.gz
index 8c73a21..3e66f47 100644
--- a/testdata/perf.data.systemwide.0.parse.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.parse.remap.out.pb_text.gz b/testdata/perf.data.systemwide.0.parse.remap.out.pb_text.gz
index 3de61a2..4be3d4b 100644
--- a/testdata/perf.data.systemwide.0.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.parse.remap2.out.pb_text.gz b/testdata/perf.data.systemwide.0.parse.remap2.out.pb_text.gz
index 15a23b0..4be3d4b 100644
--- a/testdata/perf.data.systemwide.0.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.pb_text.gz b/testdata/perf.data.systemwide.0.pb_text.gz
index 61b7e63..3e66f47 100644
--- a/testdata/perf.data.systemwide.0.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.pr.out.pb_text.gz b/testdata/perf.data.systemwide.0.pr.out.pb_text.gz
index 2c5f9a0..3e66f47 100644
--- a/testdata/perf.data.systemwide.0.pr.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.ser.comm.out.pb_text.gz b/testdata/perf.data.systemwide.0.ser.comm.out.pb_text.gz
index be15cba..3e43fe1 100644
--- a/testdata/perf.data.systemwide.0.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.0.serialized.out.pb_text.gz b/testdata/perf.data.systemwide.0.serialized.out.pb_text.gz
index 002d2a7..3e66f47 100644
--- a/testdata/perf.data.systemwide.0.serialized.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.0.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.io.out.pb_text.gz b/testdata/perf.data.systemwide.1.io.out.pb_text.gz
index fcf7609..af922ff 100644
--- a/testdata/perf.data.systemwide.1.io.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.io.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.io.out.pb_text.gz
index d03ae11..44dfdeb 100644
--- a/testdata/perf.data.systemwide.1.next.io.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.parse.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.parse.out.pb_text.gz
index 3d5e7e9..44dfdeb 100644
--- a/testdata/perf.data.systemwide.1.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.parse.remap.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.parse.remap.out.pb_text.gz
index 41f4a64..d6e1533 100644
--- a/testdata/perf.data.systemwide.1.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.parse.remap2.out.pb_text.gz
index c833fbc..d6e1533 100644
--- a/testdata/perf.data.systemwide.1.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.pb_text.gz b/testdata/perf.data.systemwide.1.next.pb_text.gz
index c8e581a..c181579 100644
--- a/testdata/perf.data.systemwide.1.next.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.pr.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.pr.out.pb_text.gz
index 1aa72d7..44dfdeb 100644
--- a/testdata/perf.data.systemwide.1.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.ser.comm.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.ser.comm.out.pb_text.gz
index 77365a3..adaab23 100644
--- a/testdata/perf.data.systemwide.1.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.next.serialized.out.pb_text.gz b/testdata/perf.data.systemwide.1.next.serialized.out.pb_text.gz
index 3f80c21..4774897 100644
--- a/testdata/perf.data.systemwide.1.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.parse.out.pb_text.gz b/testdata/perf.data.systemwide.1.parse.out.pb_text.gz
index 84c902f..af922ff 100644
--- a/testdata/perf.data.systemwide.1.parse.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.parse.remap.out.pb_text.gz b/testdata/perf.data.systemwide.1.parse.remap.out.pb_text.gz
index d7b2790..7221b83 100644
--- a/testdata/perf.data.systemwide.1.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.parse.remap2.out.pb_text.gz b/testdata/perf.data.systemwide.1.parse.remap2.out.pb_text.gz
index aafc6ed..7221b83 100644
--- a/testdata/perf.data.systemwide.1.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.pb_text.gz b/testdata/perf.data.systemwide.1.pb_text.gz
index 5e55f7c..af922ff 100644
--- a/testdata/perf.data.systemwide.1.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.pr.out.pb_text.gz b/testdata/perf.data.systemwide.1.pr.out.pb_text.gz
index f7aeb49..af922ff 100644
--- a/testdata/perf.data.systemwide.1.pr.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.ser.comm.out.pb_text.gz b/testdata/perf.data.systemwide.1.ser.comm.out.pb_text.gz
index 608e4f6..ac2a0ce 100644
--- a/testdata/perf.data.systemwide.1.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.1.serialized.out.pb_text.gz b/testdata/perf.data.systemwide.1.serialized.out.pb_text.gz
index 2bc07df..d554a8c 100644
--- a/testdata/perf.data.systemwide.1.serialized.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.1.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.io.out.pb_text.gz b/testdata/perf.data.systemwide.5.io.out.pb_text.gz
index 84b8065..3fb67e2 100644
--- a/testdata/perf.data.systemwide.5.io.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.io.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.io.out.pb_text.gz
index 00c271e..b0a52fe 100644
--- a/testdata/perf.data.systemwide.5.next.io.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.parse.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.parse.out.pb_text.gz
index 39f9673..b0a52fe 100644
--- a/testdata/perf.data.systemwide.5.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.parse.remap.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.parse.remap.out.pb_text.gz
index ce98529..0c17eca 100644
--- a/testdata/perf.data.systemwide.5.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.parse.remap2.out.pb_text.gz
index 6e71a5c..0c17eca 100644
--- a/testdata/perf.data.systemwide.5.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.pb_text.gz b/testdata/perf.data.systemwide.5.next.pb_text.gz
index 914962f..48d2f0a 100644
--- a/testdata/perf.data.systemwide.5.next.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.pr.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.pr.out.pb_text.gz
index bfd2be5..b0a52fe 100644
--- a/testdata/perf.data.systemwide.5.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.ser.comm.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.ser.comm.out.pb_text.gz
index ca2725f..c25256d 100644
--- a/testdata/perf.data.systemwide.5.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.next.serialized.out.pb_text.gz b/testdata/perf.data.systemwide.5.next.serialized.out.pb_text.gz
index e97769c..b0a52fe 100644
--- a/testdata/perf.data.systemwide.5.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.parse.out.pb_text.gz b/testdata/perf.data.systemwide.5.parse.out.pb_text.gz
index 14fe909..3fb67e2 100644
--- a/testdata/perf.data.systemwide.5.parse.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.parse.remap.out.pb_text.gz b/testdata/perf.data.systemwide.5.parse.remap.out.pb_text.gz
index cc4dd59..7fc8cb4 100644
--- a/testdata/perf.data.systemwide.5.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.parse.remap2.out.pb_text.gz b/testdata/perf.data.systemwide.5.parse.remap2.out.pb_text.gz
index 7bbc9fb..7fc8cb4 100644
--- a/testdata/perf.data.systemwide.5.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.pb_text.gz b/testdata/perf.data.systemwide.5.pb_text.gz
index 10c7c52..3fb67e2 100644
--- a/testdata/perf.data.systemwide.5.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.pr.out.pb_text.gz b/testdata/perf.data.systemwide.5.pr.out.pb_text.gz
index eba2f5c..3fb67e2 100644
--- a/testdata/perf.data.systemwide.5.pr.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.ser.comm.out.pb_text.gz b/testdata/perf.data.systemwide.5.ser.comm.out.pb_text.gz
index 174aee3..ae68007 100644
--- a/testdata/perf.data.systemwide.5.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.systemwide.5.serialized.out.pb_text.gz b/testdata/perf.data.systemwide.5.serialized.out.pb_text.gz
index 1a12f0a..3fb67e2 100644
--- a/testdata/perf.data.systemwide.5.serialized.out.pb_text.gz
+++ b/testdata/perf.data.systemwide.5.serialized.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.io.out.pb_text.gz b/testdata/perf.data.throttle.next.io.out.pb_text.gz
index 98c674f..03560e3 100644
--- a/testdata/perf.data.throttle.next.io.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.io.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.parse.out.pb_text.gz b/testdata/perf.data.throttle.next.parse.out.pb_text.gz
index b081517..03560e3 100644
--- a/testdata/perf.data.throttle.next.parse.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.parse.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.parse.remap.out.pb_text.gz b/testdata/perf.data.throttle.next.parse.remap.out.pb_text.gz
index 77010e8..13feb22 100644
--- a/testdata/perf.data.throttle.next.parse.remap.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.parse.remap.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.parse.remap2.out.pb_text.gz b/testdata/perf.data.throttle.next.parse.remap2.out.pb_text.gz
index 1ef55aa..13feb22 100644
--- a/testdata/perf.data.throttle.next.parse.remap2.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.parse.remap2.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.pb_text.gz b/testdata/perf.data.throttle.next.pb_text.gz
index 51007aa..dd093d3 100644
--- a/testdata/perf.data.throttle.next.pb_text.gz
+++ b/testdata/perf.data.throttle.next.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.pr.out.pb_text.gz b/testdata/perf.data.throttle.next.pr.out.pb_text.gz
index 24f4b1d..03560e3 100644
--- a/testdata/perf.data.throttle.next.pr.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.pr.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.ser.comm.out.pb_text.gz b/testdata/perf.data.throttle.next.ser.comm.out.pb_text.gz
index bd562c9..627ee7a 100644
--- a/testdata/perf.data.throttle.next.ser.comm.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.ser.comm.out.pb_text.gz
Binary files differ
diff --git a/testdata/perf.data.throttle.next.serialized.out.pb_text.gz b/testdata/perf.data.throttle.next.serialized.out.pb_text.gz
index 2121694..e25e61f 100644
--- a/testdata/perf.data.throttle.next.serialized.out.pb_text.gz
+++ b/testdata/perf.data.throttle.next.serialized.out.pb_text.gz
Binary files differ
diff --git a/utils.cc b/utils.cc
index 003c760..7c7a814 100644
--- a/utils.cc
+++ b/utils.cc
@@ -295,4 +295,16 @@
return true;
}
+void TrimWhitespace(string* str) {
+ const char kWhitespaceCharacters[] = " \t\n\r";
+ size_t end = str->find_last_not_of(kWhitespaceCharacters);
+ if (end != std::string::npos) {
+ size_t start = str->find_first_not_of(kWhitespaceCharacters);
+ *str = str->substr(start, end + 1 - start);
+ } else {
+ // The string contains only whitespace.
+ *str = "";
+ }
+}
+
} // namespace quipper
diff --git a/utils.h b/utils.h
index de1ad92..9e767e6 100644
--- a/utils.h
+++ b/utils.h
@@ -76,6 +76,9 @@
// success, false otherwise.
bool RunCommandAndGetStdout(const string& command, std::vector<char>* output);
+// Trim leading and trailing whitespace from |str|.
+void TrimWhitespace(string* str);
+
} // namespace quipper
#endif // UTILS_H_