aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2019-11-22 11:03:45 +0000
committerDavid Carlier <devnexen@gmail.com>2019-11-22 11:03:45 +0000
commit8a2f2e17920a8501582cff72cc6fbf32b18f9d30 (patch)
treed4fa9ecf37e86a659264eeb0d5e0880e1534549a
parent79490e75beefdfc737129112ecbc9c74bf4a4609 (diff)
downloadafl++-8a2f2e17920a8501582cff72cc6fbf32b18f9d30.tar.gz
compiler plugins, just create const constants once.
-rw-r--r--gcc_plugin/afl-gcc-pass.so.cc6
-rw-r--r--llvm_mode/LLVMInsTrim.so.cc7
-rw-r--r--llvm_mode/afl-llvm-pass.so.cc6
3 files changed, 12 insertions, 7 deletions
diff --git a/gcc_plugin/afl-gcc-pass.so.cc b/gcc_plugin/afl-gcc-pass.so.cc
index bf16b14b..19e4dfba 100644
--- a/gcc_plugin/afl-gcc-pass.so.cc
+++ b/gcc_plugin/afl-gcc-pass.so.cc
@@ -202,6 +202,9 @@ static unsigned int inline_instrument(function *fun) {
basic_block bb;
unsigned finst_blocks = 0;
unsigned fcnt_blocks = 0;
+ tree one = build_int_cst(unsigned_char_type_node, 1);
+ // tree zero = build_int_cst(unsigned_char_type_node, 0);
+
/* Set up global type declarations */
tree map_type = build_pointer_type(unsigned_char_type_node);
@@ -284,9 +287,6 @@ static unsigned int inline_instrument(function *fun) {
/* Update bitmap */
- tree one = build_int_cst(unsigned_char_type_node, 1);
- // tree zero = build_int_cst(unsigned_char_type_node, 0);
-
// gimple_assign <addr_expr, p_6, &map[_2], NULL, NULL>
tree map_ptr = create_tmp_var(map_type, "map_ptr");
tree map_ptr2 = create_tmp_var(map_type, "map_ptr2");
diff --git a/llvm_mode/LLVMInsTrim.so.cc b/llvm_mode/LLVMInsTrim.so.cc
index 89738812..f723a0fe 100644
--- a/llvm_mode/LLVMInsTrim.so.cc
+++ b/llvm_mode/LLVMInsTrim.so.cc
@@ -146,6 +146,9 @@ struct InsTrim : public ModulePass {
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
GlobalVariable::GeneralDynamicTLSModel, 0, false);
+ ConstantInt *Zero = ConstantInt::get(Int8Ty, 0);
+ ConstantInt *One = ConstantInt::get(Int8Ty, 1);
+
u64 total_rs = 0;
u64 total_hs = 0;
@@ -368,7 +371,7 @@ struct InsTrim : public ModulePass {
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
- Value *Incr = IRB.CreateAdd(Counter, ConstantInt::get(Int8Ty, 1));
+ Value *Incr = IRB.CreateAdd(Counter, One);
#if LLVM_VERSION_MAJOR < 9
if (neverZero_counters_str !=
@@ -390,7 +393,7 @@ struct InsTrim : public ModulePass {
* Counter + 1 -> {Counter, OverflowFlag}
* Counter + OverflowFlag -> Counter
*/
- auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0));
+ auto cf = IRB.CreateICmpEQ(Incr, Zero);
auto carry = IRB.CreateZExt(cf, Int8Ty);
Incr = IRB.CreateAdd(Incr, carry);
diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc
index 0c68136b..4ce073a5 100644
--- a/llvm_mode/afl-llvm-pass.so.cc
+++ b/llvm_mode/afl-llvm-pass.so.cc
@@ -150,6 +150,8 @@ bool AFLCoverage::runOnModule(Module &M) {
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
GlobalVariable::GeneralDynamicTLSModel, 0, false);
#endif
+ ConstantInt *Zero = ConstantInt::get(Int8Ty, 0);
+ ConstantInt *One = ConstantInt::get(Int8Ty, 1);
/* Instrument all the things! */
@@ -287,7 +289,7 @@ bool AFLCoverage::runOnModule(Module &M) {
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
- Value *Incr = IRB.CreateAdd(Counter, ConstantInt::get(Int8Ty, 1));
+ Value *Incr = IRB.CreateAdd(Counter, One);
#if LLVM_VERSION_MAJOR < 9
if (neverZero_counters_str !=
@@ -331,7 +333,7 @@ bool AFLCoverage::runOnModule(Module &M) {
*/
// this is the solution we choose because llvm9 should do the right
// thing here
- auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0));
+ auto cf = IRB.CreateICmpEQ(Incr, Zero);
auto carry = IRB.CreateZExt(cf, Int8Ty);
Incr = IRB.CreateAdd(Incr, carry);
/*