/* Classify tuple counts. Instead of mapping to individual bits, as in afl-fuzz.c, we map to more user-friendly numbers between 1 and 8. */ #define AREP4(_sym) (_sym), (_sym), (_sym), (_sym) #define AREP8(_sym) AREP4(_sym), AREP4(_sym) #define AREP16(_sym) AREP8(_sym), AREP8(_sym) #define AREP32(_sym) AREP16(_sym), AREP16(_sym) #define AREP64(_sym) AREP32(_sym), AREP32(_sym) #define AREP128(_sym) AREP64(_sym), AREP64(_sym) static u8 count_class_lookup[256] = { /* 0 - 3: 4 */ 0, 1, 2, 3, /* 4 - 7: +4 */ AREP4(4), /* 8 - 15: +8 */ AREP8(5), /* 16 - 31: +16 */ AREP16(6), /* 32 - 127: +96 */ AREP64(7), AREP32(7), /* 128+: +128 */ AREP128(8) }; static void classify_counts(u8* mem) { u32 i = MAP_SIZE; if (edges_only) { while (i--) { if (*mem) *mem = 1; mem++; }
/* Classify tuple counts. This is a slow & naive version, but good enough here. */ #define AREP4(_sym) (_sym), (_sym), (_sym), (_sym) #define AREP8(_sym) AREP4(_sym), AREP4(_sym) #define AREP16(_sym) AREP8(_sym), AREP8(_sym) #define AREP32(_sym) AREP16(_sym), AREP16(_sym) #define AREP64(_sym) AREP32(_sym), AREP32(_sym) #define AREP128(_sym) AREP64(_sym), AREP64(_sym) static const u8 count_class_lookup[256] = { /* 0 - 3: 4 */ 0, 1, 2, 4, /* 4 - 7: +4 */ AREP4(8), /* 8 - 15: +8 */ AREP8(16), /* 16 - 31: +16 */ AREP16(32), /* 32 - 127: +96 */ AREP64(64), AREP32(64), /* 128+: +128 */ AREP128(128) }; static void classify_counts(u8* mem) { u32 i = MAP_SIZE; if (edges_only) { while (i--) { if (*mem) *mem = 1; mem++; }