diff options
author | van Hauser <vh@thc.org> | 2020-01-15 10:10:25 +0100 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2020-01-15 10:10:25 +0100 |
commit | d1d5e7c02a4b17f42b6334f258899d6543c9142c (patch) | |
tree | ce67a3a546827a13c9b871b60831d581c2ad7527 /llvm_mode/afl-llvm-pass.so.cc | |
parent | d0ea8f84334a36133c289c711c233d1f5a1a8045 (diff) | |
download | afl++-d1d5e7c02a4b17f42b6334f258899d6543c9142c.tar.gz |
blacklist function support for llvm_mode
Diffstat (limited to 'llvm_mode/afl-llvm-pass.so.cc')
-rw-r--r-- | llvm_mode/afl-llvm-pass.so.cc | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc index 0b3db4ed..15cc6127 100644 --- a/llvm_mode/afl-llvm-pass.so.cc +++ b/llvm_mode/afl-llvm-pass.so.cc @@ -75,6 +75,28 @@ class AFLCoverage : public ModulePass { } + // ripped from aflgo + static bool isBlacklisted(const Function *F) { + + static const SmallVector<std::string, 4> Blacklist = { + + "asan.", + "llvm.", + "sancov.", + "__ubsan_handle_", + + }; + + for (auto const &BlacklistFunc : Blacklist) { + + if (F->getName().startswith(BlacklistFunc)) { return true; } + + } + + return false; + + } + bool runOnModule(Module &M) override; // StringRef getPassName() const override { @@ -156,13 +178,11 @@ bool AFLCoverage::runOnModule(Module &M) { /* Instrument all the things! */ - const char *IntrinsicPrefix = "llvm."; int inst_blocks = 0; for (auto &F : M) { - auto Fname = F.getName(); - if (Fname.startswith(IntrinsicPrefix)) continue; + if (isBlacklisted(&F)) continue; for (auto &BB : F) { @@ -377,6 +397,7 @@ bool AFLCoverage::runOnModule(Module &M) { inst_blocks++; } + } /* Say something nice. */ |