aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--include/config.h2
-rw-r--r--src/afl-cc.c26
3 files changed, 26 insertions, 4 deletions
diff --git a/README.md b/README.md
index dc009def..68b64ce6 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
![Travis State](https://api.travis-ci.com/AFLplusplus/AFLplusplus.svg?branch=stable)
- Release Version: [2.68c](https://github.com/AFLplusplus/AFLplusplus/releases)
+ Release Version: [3.00c](https://github.com/AFLplusplus/AFLplusplus/releases)
Github Version: 3.00a
diff --git a/include/config.h b/include/config.h
index 491d8132..93249ed9 100644
--- a/include/config.h
+++ b/include/config.h
@@ -28,7 +28,7 @@
/* Version string: */
// c = release, d = volatile github dev, e = experimental branch
-#define VERSION "++3.00a"
+#define VERSION "++3.00c"
/******************************************************
* *
diff --git a/src/afl-cc.c b/src/afl-cc.c
index c43ac2c1..2aeb2178 100644
--- a/src/afl-cc.c
+++ b/src/afl-cc.c
@@ -69,6 +69,7 @@ enum {
INSTRUMENT_INSTRIM = 3,
INSTRUMENT_CFG = 3,
INSTRUMENT_LTO = 4,
+ INSTRUMENT_LLVMNATIVE = 5,
INSTRUMENT_OPT_CTX = 8,
INSTRUMENT_OPT_NGRAM = 16
@@ -76,8 +77,9 @@ enum {
char instrument_mode_string[18][18] = {
- "DEFAULT", "CLASSIC", "PCGUARD", "CFG", "LTO", "", "", "", "CTX", "",
- "", "", "", "", "", "", "NGRAM", ""
+ "DEFAULT", "CLASSIC", "PCGUARD", "CFG", "LTO", "", "PCGUARD-NATIVE",
+ "", "CTX", "", "", "", "", "",
+ "", "", "NGRAM", ""
};
@@ -580,6 +582,14 @@ static void edit_params(u32 argc, char **argv, char **envp) {
#endif
#endif
+ } else if (instrument_mode == INSTRUMENT_LLVMNATIVE) {
+
+#if LLVM_MAJOR >= 4
+ cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
+#else
+ FATAL("pcguard instrumentation requires llvm 4.0.1+");
+#endif
+
} else {
cc_params[cc_par_cnt++] = "-Xclang";
@@ -1162,6 +1172,18 @@ int main(int argc, char **argv, char **envp) {
}
+ // this is a hidden option
+ if (strncasecmp(ptr, "llvmnative", strlen("llvmnative")) == 0 ||
+ strncasecmp(ptr, "llvm-native", strlen("llvm-native")) == 0) {
+
+ if (!instrument_mode || instrument_mode == INSTRUMENT_LLVMNATIVE)
+ instrument_mode = INSTRUMENT_LLVMNATIVE;
+ else
+ FATAL("main instrumentation mode already set with %s",
+ instrument_mode_string[instrument_mode]);
+
+ }
+
if (strncasecmp(ptr, "cfg", strlen("cfg")) == 0 ||
strncasecmp(ptr, "instrim", strlen("instrim")) == 0) {