bigger initial map when LTO
MODIFY
include/alloc-inl.h
include/alloc-inl.h
@@ -236,15 +236,13 @@ static inline u8 *DFL_ck_memdup_str(u8 *mem, u32 size) {
#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;
-
+ _tmp; \
+ \
})
/* Macro to enforce allocation limits as a last-resort defense against
@@ -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. */

MODIFY
llvm_mode/afl-llvm-rt-lto.o.c
llvm_mode/afl-llvm-rt-lto.o.c
*/
+#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;
}

MODIFY
llvm_mode/afl-llvm-rt.o.c
llvm_mode/afl-llvm-rt.o.c
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. */
+#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;

bigger initial map when LTO