Skip to content

Commit d830820

Browse files
fniksiccopybara-github
authored andcommitted
Implement explicitly all equality operators.
The default implementations are a C++20 feature, and we want to make the code C++17 compatible. PiperOrigin-RevId: 718947348
1 parent 1f14fce commit d830820

File tree

2 files changed

+55
-6
lines changed

2 files changed

+55
-6
lines changed

centipede/runner_result.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ class ExecutionResult {
5757
uint64_t peak_rss_mb = 0; // Peak RSS in Mb after executing the input.
5858

5959
// For tests.
60-
bool operator==(const Stats&) const = default;
60+
bool operator==(const Stats& other) const {
61+
return prep_time_usec == other.prep_time_usec &&
62+
exec_time_usec == other.exec_time_usec &&
63+
post_time_usec == other.post_time_usec &&
64+
peak_rss_mb == other.peak_rss_mb;
65+
}
6166
};
6267

6368
// Accessors.

centipede/stats.h

+49-5
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,21 @@ struct StatsMeta {
4848

4949
// NOTE: Ordering in general won't be applicable to metadata, so define
5050
// equality only.
51-
friend bool operator==(const StatsMeta &, const StatsMeta &) = default;
51+
friend bool operator==(const StatsMeta &lhs, const StatsMeta &rhs) {
52+
return lhs.timestamp_unix_micros == rhs.timestamp_unix_micros;
53+
}
5254
};
5355

5456
struct ExecStats {
5557
uint64_t fuzz_time_sec = 0;
5658
uint64_t num_executions = 0;
5759
uint64_t num_target_crashes = 0;
5860

59-
friend bool operator==(const ExecStats &, const ExecStats &) = default;
61+
friend bool operator==(const ExecStats &lhs, const ExecStats &rhs) {
62+
return lhs.fuzz_time_sec == rhs.fuzz_time_sec &&
63+
lhs.num_executions == rhs.num_executions &&
64+
lhs.num_target_crashes == rhs.num_target_crashes;
65+
}
6066
};
6167

6268
struct CovStats {
@@ -87,7 +93,34 @@ struct CovStats {
8793
uint64_t num_unknown_features = 0;
8894
uint64_t num_funcs_in_frontier = 0;
8995

90-
friend bool operator==(const CovStats &, const CovStats &) = default;
96+
friend bool operator==(const CovStats &lhs, const CovStats &rhs) {
97+
return lhs.num_covered_pcs == rhs.num_covered_pcs &&
98+
lhs.num_8bit_counter_features == rhs.num_8bit_counter_features &&
99+
lhs.num_data_flow_features == rhs.num_data_flow_features &&
100+
lhs.num_cmp_features == rhs.num_cmp_features &&
101+
lhs.num_call_stack_features == rhs.num_call_stack_features &&
102+
lhs.num_bounded_path_features == rhs.num_bounded_path_features &&
103+
lhs.num_pc_pair_features == rhs.num_pc_pair_features &&
104+
lhs.num_user_features == rhs.num_user_features &&
105+
lhs.num_user0_features == rhs.num_user0_features &&
106+
lhs.num_user1_features == rhs.num_user1_features &&
107+
lhs.num_user2_features == rhs.num_user2_features &&
108+
lhs.num_user3_features == rhs.num_user3_features &&
109+
lhs.num_user4_features == rhs.num_user4_features &&
110+
lhs.num_user5_features == rhs.num_user5_features &&
111+
lhs.num_user6_features == rhs.num_user6_features &&
112+
lhs.num_user7_features == rhs.num_user7_features &&
113+
lhs.num_user8_features == rhs.num_user8_features &&
114+
lhs.num_user9_features == rhs.num_user9_features &&
115+
lhs.num_user10_features == rhs.num_user10_features &&
116+
lhs.num_user11_features == rhs.num_user11_features &&
117+
lhs.num_user12_features == rhs.num_user12_features &&
118+
lhs.num_user13_features == rhs.num_user13_features &&
119+
lhs.num_user14_features == rhs.num_user14_features &&
120+
lhs.num_user15_features == rhs.num_user15_features &&
121+
lhs.num_unknown_features == rhs.num_unknown_features &&
122+
lhs.num_funcs_in_frontier == rhs.num_funcs_in_frontier;
123+
}
91124
};
92125

93126
struct CorpusStats {
@@ -96,7 +129,12 @@ struct CorpusStats {
96129
uint64_t max_corpus_element_size = 0;
97130
uint64_t avg_corpus_element_size = 0;
98131

99-
friend bool operator==(const CorpusStats &, const CorpusStats &) = default;
132+
friend bool operator==(const CorpusStats &lhs, const CorpusStats &rhs) {
133+
return lhs.active_corpus_size == rhs.active_corpus_size &&
134+
lhs.total_corpus_size == rhs.total_corpus_size &&
135+
lhs.max_corpus_element_size == rhs.max_corpus_element_size &&
136+
lhs.avg_corpus_element_size == rhs.avg_corpus_element_size;
137+
}
100138
};
101139

102140
struct RusageStats {
@@ -105,7 +143,13 @@ struct RusageStats {
105143
uint64_t engine_rusage_rss_mb = 0;
106144
uint64_t engine_rusage_vsize_mb = 0;
107145

108-
friend bool operator==(const RusageStats &, const RusageStats &) = default;
146+
friend bool operator==(const RusageStats &lhs, const RusageStats &rhs) {
147+
return lhs.engine_rusage_avg_millicores ==
148+
rhs.engine_rusage_avg_millicores &&
149+
lhs.engine_rusage_cpu_percent == rhs.engine_rusage_cpu_percent &&
150+
lhs.engine_rusage_rss_mb == rhs.engine_rusage_rss_mb &&
151+
lhs.engine_rusage_vsize_mb == rhs.engine_rusage_vsize_mb;
152+
}
109153
};
110154

111155
struct Stats : StatsMeta, ExecStats, CovStats, CorpusStats, RusageStats {

0 commit comments

Comments
 (0)