diff options
author | van Hauser <vh@thc.org> | 2020-05-23 17:00:02 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2020-05-23 17:00:02 +0200 |
commit | 38df6eb3a9d572d13a0554f6d511723feb644be6 (patch) | |
tree | dcd5461614c851361dbb8eb1f5af65783f87353c /llvm_mode/afl-llvm-lto-instrim.so.cc | |
parent | 0245f8438d71b07e2a2415e8880bd4bbd70b5859 (diff) | |
download | afl++-38df6eb3a9d572d13a0554f6d511723feb644be6.tar.gz |
LTO whitelist functionality rewritten, now anything can be skipped
Diffstat (limited to 'llvm_mode/afl-llvm-lto-instrim.so.cc')
-rw-r--r-- | llvm_mode/afl-llvm-lto-instrim.so.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm_mode/afl-llvm-lto-instrim.so.cc b/llvm_mode/afl-llvm-lto-instrim.so.cc index a7d9b756..27504e8d 100644 --- a/llvm_mode/afl-llvm-lto-instrim.so.cc +++ b/llvm_mode/afl-llvm-lto-instrim.so.cc @@ -561,6 +561,17 @@ struct InsTrimLTO : public ModulePass { if (F.size() < function_minimum_size) continue; if (isBlacklisted(&F)) continue; + // whitelist check + AttributeList Attrs = F.getAttributes(); + if (Attrs.hasAttribute(-1, StringRef("skipinstrument"))) { + + if (debug) + fprintf(stderr, "DEBUG: Function %s is not whitelisted\n", + F.getName().str().c_str()); + continue; + + } + std::unordered_set<BasicBlock *> MS; if (!MarkSetOpt) { |