mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-15 03:18:07 +00:00
clang format 14
This commit is contained in:
@ -106,11 +106,12 @@ static void instrument_persitent_save_regs(GumArm64Writer * cw,
|
|||||||
|
|
||||||
/* Q */
|
/* Q */
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
|
|
||||||
gum_arm64_writer_put_stp_reg_reg_reg_offset(
|
gum_arm64_writer_put_stp_reg_reg_reg_offset(
|
||||||
cw, ARM64_REG_Q0 + (i * 2), ARM64_REG_Q0 + (i * 2) + 1, ARM64_REG_X0,
|
cw, ARM64_REG_Q0 + (i * 2), ARM64_REG_Q0 + (i * 2) + 1, ARM64_REG_X0,
|
||||||
offsetof(GumCpuContext, v[i]), GUM_INDEX_SIGNED_OFFSET);
|
offsetof(GumCpuContext, v[i]), GUM_INDEX_SIGNED_OFFSET);
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* x0 & x1 */
|
/* x0 & x1 */
|
||||||
gum_arm64_writer_put_ldp_reg_reg_reg_offset(cw, ARM64_REG_X2, ARM64_REG_X3,
|
gum_arm64_writer_put_ldp_reg_reg_reg_offset(cw, ARM64_REG_X2, ARM64_REG_X3,
|
||||||
@ -197,9 +198,11 @@ static void instrument_persitent_restore_regs(GumArm64Writer * cw,
|
|||||||
|
|
||||||
/* Q */
|
/* Q */
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
|
|
||||||
gum_arm64_writer_put_ldp_reg_reg_reg_offset(
|
gum_arm64_writer_put_ldp_reg_reg_reg_offset(
|
||||||
cw, ARM64_REG_Q0 + (i * 2), ARM64_REG_Q0 + (i * 2) + 1, ARM64_REG_X0,
|
cw, ARM64_REG_Q0 + (i * 2), ARM64_REG_Q0 + (i * 2) + 1, ARM64_REG_X0,
|
||||||
offsetof(GumCpuContext, v[i]), GUM_INDEX_SIGNED_OFFSET);
|
offsetof(GumCpuContext, v[i]), GUM_INDEX_SIGNED_OFFSET);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* x2 & x3 */
|
/* x2 & x3 */
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#if defined(__i386__)
|
#if defined(__i386__)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
||||||
GumCpuContext ctx;
|
GumCpuContext ctx;
|
||||||
uint32_t eflags;
|
uint32_t eflags;
|
||||||
|
|
||||||
@ -19,11 +20,14 @@ static persistent_ctx_t saved_regs = {0};
|
|||||||
static gpointer saved_ret = NULL;
|
static gpointer saved_ret = NULL;
|
||||||
|
|
||||||
gboolean persistent_is_supported(void) {
|
gboolean persistent_is_supported(void) {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void instrument_persitent_save_regs(GumX86Writer *cw,
|
static void instrument_persitent_save_regs(GumX86Writer *cw,
|
||||||
persistent_ctx_t *regs) {
|
persistent_ctx_t *regs) {
|
||||||
|
|
||||||
GumAddress regs_address = GUM_ADDRESS(regs);
|
GumAddress regs_address = GUM_ADDRESS(regs);
|
||||||
|
|
||||||
/* Should be pushing FPU here, but meh */
|
/* Should be pushing FPU here, but meh */
|
||||||
@ -72,10 +76,12 @@ static void instrument_persitent_save_regs(GumX86Writer * cw,
|
|||||||
|
|
||||||
/* Pop the saved values */
|
/* Pop the saved values */
|
||||||
gum_x86_writer_put_lea_reg_reg_offset(cw, GUM_X86_ESP, GUM_X86_ESP, 0x8);
|
gum_x86_writer_put_lea_reg_reg_offset(cw, GUM_X86_ESP, GUM_X86_ESP, 0x8);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void instrument_persitent_restore_regs(GumX86Writer *cw,
|
static void instrument_persitent_restore_regs(GumX86Writer *cw,
|
||||||
persistent_ctx_t *regs) {
|
persistent_ctx_t *regs) {
|
||||||
|
|
||||||
GumAddress regs_address = GUM_ADDRESS(regs);
|
GumAddress regs_address = GUM_ADDRESS(regs);
|
||||||
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_EAX, regs_address);
|
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_EAX, regs_address);
|
||||||
|
|
||||||
@ -109,32 +115,42 @@ static void instrument_persitent_restore_regs(GumX86Writer * cw,
|
|||||||
gum_x86_writer_put_popfx(cw);
|
gum_x86_writer_put_popfx(cw);
|
||||||
gum_x86_writer_put_pop_reg(cw, GUM_X86_EAX);
|
gum_x86_writer_put_pop_reg(cw, GUM_X86_EAX);
|
||||||
gum_x86_writer_put_pop_reg(cw, GUM_X86_EBX);
|
gum_x86_writer_put_pop_reg(cw, GUM_X86_EBX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void instrument_exit(GumX86Writer *cw) {
|
static void instrument_exit(GumX86Writer *cw) {
|
||||||
|
|
||||||
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_EAX, GUM_ADDRESS(_exit));
|
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_EAX, GUM_ADDRESS(_exit));
|
||||||
gum_x86_writer_put_mov_reg_u32(cw, GUM_X86_EDI, 0);
|
gum_x86_writer_put_mov_reg_u32(cw, GUM_X86_EDI, 0);
|
||||||
gum_x86_writer_put_push_reg(cw, GUM_X86_EDI);
|
gum_x86_writer_put_push_reg(cw, GUM_X86_EDI);
|
||||||
gum_x86_writer_put_call_reg(cw, GUM_X86_EAX);
|
gum_x86_writer_put_call_reg(cw, GUM_X86_EAX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int instrument_afl_persistent_loop_func(void) {
|
static int instrument_afl_persistent_loop_func(void) {
|
||||||
|
|
||||||
int ret = __afl_persistent_loop(persistent_count);
|
int ret = __afl_persistent_loop(persistent_count);
|
||||||
if (instrument_previous_pc_addr == NULL) {
|
if (instrument_previous_pc_addr == NULL) {
|
||||||
|
|
||||||
FATAL("instrument_previous_pc_addr uninitialized");
|
FATAL("instrument_previous_pc_addr uninitialized");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*instrument_previous_pc_addr = instrument_hash_zero;
|
*instrument_previous_pc_addr = instrument_hash_zero;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void instrument_afl_persistent_loop(GumX86Writer *cw) {
|
static void instrument_afl_persistent_loop(GumX86Writer *cw) {
|
||||||
|
|
||||||
gum_x86_writer_put_call_address_with_arguments(
|
gum_x86_writer_put_call_address_with_arguments(
|
||||||
cw, GUM_CALL_CAPI, GUM_ADDRESS(instrument_afl_persistent_loop_func), 0);
|
cw, GUM_CALL_CAPI, GUM_ADDRESS(instrument_afl_persistent_loop_func), 0);
|
||||||
gum_x86_writer_put_test_reg_reg(cw, GUM_X86_EAX, GUM_X86_EAX);
|
gum_x86_writer_put_test_reg_reg(cw, GUM_X86_EAX, GUM_X86_EAX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void persistent_prologue_hook(GumX86Writer *cw, persistent_ctx_t *regs) {
|
static void persistent_prologue_hook(GumX86Writer *cw, persistent_ctx_t *regs) {
|
||||||
|
|
||||||
if (persistent_hook == NULL) return;
|
if (persistent_hook == NULL) return;
|
||||||
|
|
||||||
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_ECX,
|
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_ECX,
|
||||||
@ -151,9 +167,11 @@ static void persistent_prologue_hook(GumX86Writer *cw, persistent_ctx_t *regs) {
|
|||||||
cw, GUM_CALL_CAPI, GUM_ADDRESS(persistent_hook), 3, GUM_ARG_ADDRESS,
|
cw, GUM_CALL_CAPI, GUM_ADDRESS(persistent_hook), 3, GUM_ARG_ADDRESS,
|
||||||
GUM_ADDRESS(®s->ctx), GUM_ARG_REGISTER, GUM_X86_EDX, GUM_ARG_REGISTER,
|
GUM_ADDRESS(®s->ctx), GUM_ARG_REGISTER, GUM_X86_EDX, GUM_ARG_REGISTER,
|
||||||
GUM_X86_ECX);
|
GUM_X86_ECX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void instrument_persitent_save_ret(GumX86Writer *cw) {
|
static void instrument_persitent_save_ret(GumX86Writer *cw) {
|
||||||
|
|
||||||
/* Stack usage by this function */
|
/* Stack usage by this function */
|
||||||
gssize offset = (3 * 4);
|
gssize offset = (3 * 4);
|
||||||
|
|
||||||
@ -169,9 +187,11 @@ static void instrument_persitent_save_ret(GumX86Writer *cw) {
|
|||||||
gum_x86_writer_put_pop_reg(cw, GUM_X86_EBX);
|
gum_x86_writer_put_pop_reg(cw, GUM_X86_EBX);
|
||||||
gum_x86_writer_put_pop_reg(cw, GUM_X86_EAX);
|
gum_x86_writer_put_pop_reg(cw, GUM_X86_EAX);
|
||||||
gum_x86_writer_put_popfx(cw);
|
gum_x86_writer_put_popfx(cw);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void persistent_prologue_arch(GumStalkerOutput *output) {
|
void persistent_prologue_arch(GumStalkerOutput *output) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SAVE REGS
|
* SAVE REGS
|
||||||
* SAVE RET
|
* SAVE RET
|
||||||
@ -234,15 +254,19 @@ void persistent_prologue_arch(GumStalkerOutput *output) {
|
|||||||
instrument_persitent_save_ret(cw);
|
instrument_persitent_save_ret(cw);
|
||||||
|
|
||||||
if (persistent_debug) { gum_x86_writer_put_breakpoint(cw); }
|
if (persistent_debug) { gum_x86_writer_put_breakpoint(cw); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void persistent_epilogue_arch(GumStalkerOutput *output) {
|
void persistent_epilogue_arch(GumStalkerOutput *output) {
|
||||||
|
|
||||||
GumX86Writer *cw = output->writer.x86;
|
GumX86Writer *cw = output->writer.x86;
|
||||||
|
|
||||||
if (persistent_debug) { gum_x86_writer_put_breakpoint(cw); }
|
if (persistent_debug) { gum_x86_writer_put_breakpoint(cw); }
|
||||||
|
|
||||||
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_EAX, GUM_ADDRESS(&saved_ret));
|
gum_x86_writer_put_mov_reg_address(cw, GUM_X86_EAX, GUM_ADDRESS(&saved_ret));
|
||||||
gum_x86_writer_put_jmp_reg_ptr(cw, GUM_X86_EAX);
|
gum_x86_writer_put_jmp_reg_ptr(cw, GUM_X86_EAX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -493,6 +493,8 @@ struct afl_base_pass : gimple_opt_pass {
|
|||||||
return return_default;
|
return return_default;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
|
@ -590,6 +590,7 @@ bool SplitComparesTransform::splitCompare(CmpInst *cmp_inst, Module &M,
|
|||||||
if (!intTyOp0) {
|
if (!intTyOp0) {
|
||||||
|
|
||||||
// not an integer type
|
// not an integer type
|
||||||
|
if (!be_quiet)
|
||||||
fprintf(stderr, "Error: split-compare: not an integer type\n");
|
fprintf(stderr, "Error: split-compare: not an integer type\n");
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -3886,11 +3886,7 @@ static void internal_malloc_stats(mstate m) {
|
|||||||
mark_smallmap(M, I); \
|
mark_smallmap(M, I); \
|
||||||
else if (RTCHECK(ok_address(M, B->fd))) \
|
else if (RTCHECK(ok_address(M, B->fd))) \
|
||||||
F = B->fd; \
|
F = B->fd; \
|
||||||
else { \
|
else { CORRUPTION_ERROR_ACTION(M); } \
|
||||||
\
|
|
||||||
CORRUPTION_ERROR_ACTION(M); \
|
|
||||||
\
|
|
||||||
} \
|
|
||||||
B->fd = P; \
|
B->fd = P; \
|
||||||
F->bk = P; \
|
F->bk = P; \
|
||||||
P->fd = F; \
|
P->fd = F; \
|
||||||
@ -4104,11 +4100,7 @@ static void internal_malloc_stats(mstate m) {
|
|||||||
} \
|
} \
|
||||||
if (RTCHECK(ok_address(M, RP))) \
|
if (RTCHECK(ok_address(M, RP))) \
|
||||||
*RP = 0; \
|
*RP = 0; \
|
||||||
else { \
|
else { CORRUPTION_ERROR_ACTION(M); } \
|
||||||
\
|
|
||||||
CORRUPTION_ERROR_ACTION(M); \
|
|
||||||
\
|
|
||||||
} \
|
|
||||||
\
|
\
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@ -5598,8 +5590,9 @@ static void *internal_memalign(mstate m, size_t alignment, size_t bytes) {
|
|||||||
We've allocated enough total room so that this is always
|
We've allocated enough total room so that this is always
|
||||||
possible.
|
possible.
|
||||||
*/
|
*/
|
||||||
char * br = (char *)mem2chunk((size_t)(
|
char *br = (char *)mem2chunk(
|
||||||
((size_t)((char *)mem + alignment - SIZE_T_ONE)) & -alignment));
|
(size_t)(((size_t)((char *)mem + alignment - SIZE_T_ONE)) &
|
||||||
|
-alignment));
|
||||||
char *pos = ((size_t)(br - (char *)(p)) >= MIN_CHUNK_SIZE)
|
char *pos = ((size_t)(br - (char *)(p)) >= MIN_CHUNK_SIZE)
|
||||||
? br
|
? br
|
||||||
: br + alignment;
|
: br + alignment;
|
||||||
|
Reference in New Issue
Block a user