aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2024-12-02 17:18:25 +0900
committerNguyễn Gia Phong <cnx@loang.net>2024-12-12 14:59:45 +0900
commit8ef1e68d59d24ab713ccf6d2524c12d07403fd08 (patch)
treeb7802cb0d83d3d449a27502662b96460147aeac6
parentdb31db002483779671fe06a740bbbacf30ec09e7 (diff)
downloadafl++-8ef1e68d59d24ab713ccf6d2524c12d07403fd08.tar.gz
Unuse boost::hash_*
-rw-r--r--src/aflrun.cpp37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/aflrun.cpp b/src/aflrun.cpp
index 54a1f203..60d8fab0 100644
--- a/src/aflrun.cpp
+++ b/src/aflrun.cpp
@@ -1,7 +1,6 @@
#include "aflrun.h"
#include <boost/dynamic_bitset.hpp>
-#include <boost/functional/hash.hpp>
namespace bo = boost;
#include <algorithm>
@@ -2663,37 +2662,47 @@ void FringeBlocks<F, D>::group()
rh::unordered_set<reach_t> TargetGrouper::all_targets;
+template<typename T>
+inline void hash_combine(size_t& seed, const T& v)
+{
+ /// Behavior is practically identical to boost::hash_combine.
+ std::hash<T> hasher;
+ seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
+}
+
} // namespace
-size_t hash<Fringe>::operator()(const Fringe& p) const noexcept
+size_t std::hash<Fringe>::operator()(const Fringe& p) const noexcept
{
size_t seed = 0;
- bo::hash_combine(seed, p.block);
- bo::hash_combine(seed, p.context);
+ hash_combine(seed, p.block);
+ hash_combine(seed, p.context);
return seed;
}
-size_t hash<SeedFringes>::operator()(const SeedFringes& p) const noexcept
+size_t std::hash<SeedFringes>::operator()(const SeedFringes& p) const noexcept
{
- const u8* ptr = p.bitmap.get();
- return bo::hash_range(ptr, ptr + p.bitmap_size);
+ const auto* const bitmap = p.bitmap.get();
+ size_t seed = 0;
+ for (size_t i = 0; i < p.bitmap_size; ++i)
+ hash_combine(seed, bitmap[i]);
+ return seed;
}
-size_t hash<pair<reach_t, reach_t>>::operator()(
+size_t std::hash<pair<reach_t, reach_t>>::operator()(
const pair<reach_t, reach_t>& p) const noexcept
{
size_t seed = 0;
- bo::hash_combine(seed, p.first);
- bo::hash_combine(seed, p.second);
+ hash_combine(seed, p.first);
+ hash_combine(seed, p.second);
return seed;
}
-size_t hash<ClusterPair>::operator()(
- const ClusterPair& p) const noexcept
+size_t std::hash<ClusterPair>::operator()(const ClusterPair& p) const noexcept
{
size_t seed = 0;
- bo::hash_combine(seed, p.get_fst());
- bo::hash_combine(seed, p.get_snd());
+ hash_combine(seed, p.get_fst());
+ hash_combine(seed, p.get_snd());
return seed;
}