aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-05-11 10:45:20 +0200
committervan Hauser <vh@thc.org>2020-05-11 10:45:20 +0200
commit41f6aa794022d9cd34642ac7b57a70c9094f0e8c (patch)
treec08915b02f292a4eea591e3e8434dcc16ee431b8
parent50a63777ec4b3de137aaa6968b738b084dccf007 (diff)
downloadafl++-41f6aa794022d9cd34642ac7b57a70c9094f0e8c.tar.gz
bigger initial map when LTO
-rw-r--r--include/alloc-inl.h28
-rw-r--r--llvm_mode/afl-llvm-rt-lto.o.c3
-rw-r--r--llvm_mode/afl-llvm-rt.o.c6
3 files changed, 20 insertions, 17 deletions
diff --git a/include/alloc-inl.h b/include/alloc-inl.h
index a8483a9e..485446de 100644
--- a/include/alloc-inl.h
+++ b/include/alloc-inl.h
@@ -233,19 +233,17 @@ static inline u8 *DFL_ck_memdup_str(u8 *mem, u32 size) {
/* User-facing macro to sprintf() to a dynamically allocated buffer. */
-#define alloc_printf(_str...) \
- ({ \
- \
- \
- \
- u8 *_tmp; \
- s32 _len = snprintf(NULL, 0, _str); \
- if (_len < 0) FATAL("Whoa, snprintf() fails?!"); \
- _tmp = ck_alloc(_len + 1); \
- snprintf((char *)_tmp, _len + 1, _str); \
- _tmp;
-
-})
+#define alloc_printf(_str...) \
+ ({ \
+ \
+ u8 *_tmp; \
+ s32 _len = snprintf(NULL, 0, _str); \
+ if (_len < 0) FATAL("Whoa, snprintf() fails?!"); \
+ _tmp = ck_alloc(_len + 1); \
+ snprintf((char *)_tmp, _len + 1, _str); \
+ _tmp; \
+ \
+ })
/* Macro to enforce allocation limits as a last-resort defense against
integer overflows. */
@@ -263,9 +261,7 @@ static inline u8 *DFL_ck_memdup_str(u8 *mem, u32 size) {
\
if (!(_r)) ABORT("Out of memory: can't allocate %u bytes", (_s)); \
\
- }
-
-while (0)
+ } while (0)
/* Magic tokens used to mark used / freed chunks. */
diff --git a/llvm_mode/afl-llvm-rt-lto.o.c b/llvm_mode/afl-llvm-rt-lto.o.c
index 5921f968..3606cedd 100644
--- a/llvm_mode/afl-llvm-rt-lto.o.c
+++ b/llvm_mode/afl-llvm-rt-lto.o.c
@@ -10,6 +10,8 @@
*/
+#include <stdio.h>
+
// to prevent the function from being removed
unsigned char __afl_lto_mode = 0;
@@ -17,6 +19,7 @@ unsigned char __afl_lto_mode = 0;
__attribute__((constructor(0))) void __afl_auto_init_globals(void) {
+ if (getenv("AFL_DEBUG")) fprintf(stderr, "[__afl_auto_init_globals]\n");
__afl_lto_mode = 1;
}
diff --git a/llvm_mode/afl-llvm-rt.o.c b/llvm_mode/afl-llvm-rt.o.c
index 56038f7a..ce8df332 100644
--- a/llvm_mode/afl-llvm-rt.o.c
+++ b/llvm_mode/afl-llvm-rt.o.c
@@ -63,7 +63,11 @@
is used for instrumentation output before __afl_map_shm() has a chance to
run. It will end up as .comm, so it shouldn't be too wasteful. */
-u8 __afl_area_initial[MAP_SIZE];
+#ifdef AFL_REAL_LD
+u8 __afl_area_initial[256000];
+#else
+u8 __afl_area_initial[MAP_SIZE];
+#endif
u8 *__afl_area_ptr = __afl_area_initial;
u8 *__afl_dictionary;