From fcca82bb287025b89e31e1f15e817959f9e76559 Mon Sep 17 00:00:00 2001 From: mio Date: Sat, 4 Jan 2025 15:48:54 +0800 Subject: [PATCH] Format code --- include/uc_priv.h | 19 +++++++------- include/unicorn/unicorn.h | 2 +- qemu/target/i386/unicorn.c | 3 ++- tests/unit/test_arm64.c | 51 +++++++++++++++++++++++++------------- tests/unit/test_x86.c | 44 ++++++++++++++++---------------- uc.c | 9 ++++--- 6 files changed, 75 insertions(+), 53 deletions(-) diff --git a/include/uc_priv.h b/include/uc_priv.h index f9195b4d..07b5c244 100644 --- a/include/uc_priv.h +++ b/include/uc_priv.h @@ -108,7 +108,8 @@ typedef MemoryRegion *(*uc_memory_mapping_t)(struct uc_struct *, hwaddr addr); typedef void (*uc_memory_filter_t)(MemoryRegion *, int32_t); -typedef bool (*uc_flatview_copy_t)(struct uc_struct *, FlatView *, FlatView *, bool); +typedef bool (*uc_flatview_copy_t)(struct uc_struct *, FlatView *, FlatView *, + bool); typedef void (*uc_readonly_mem_t)(MemoryRegion *mr, bool readonly); @@ -426,14 +427,14 @@ struct uc_struct { // Metadata stub for the variable-size cpu context used with uc_context_*() struct uc_context { - size_t context_size; // size of the real internal context structure - uc_mode mode; // the mode of this context - uc_arch arch; // the arch of this context - int snapshot_level; // the memory snapshot level to restore - bool ramblock_freed; // wheter there was a some ramblock freed - RAMBlock *last_block;// The last element of the ramblock list - FlatView *fv; // The current flatview of the memory - char data[0]; // context + size_t context_size; // size of the real internal context structure + uc_mode mode; // the mode of this context + uc_arch arch; // the arch of this context + int snapshot_level; // the memory snapshot level to restore + bool ramblock_freed; // wheter there was a some ramblock freed + RAMBlock *last_block; // The last element of the ramblock list + FlatView *fv; // The current flatview of the memory + char data[0]; // context }; // We have to support 32bit system so we can't hold uint64_t on void* diff --git a/include/unicorn/unicorn.h b/include/unicorn/unicorn.h index c057dcc9..1ee78f3a 100644 --- a/include/unicorn/unicorn.h +++ b/include/unicorn/unicorn.h @@ -65,7 +65,7 @@ typedef size_t uc_hook; #define UNICORN_DEPRECATED __declspec(deprecated) #else #pragma message( \ - "WARNING: You need to implement UNICORN_DEPRECATED for this compiler") + "WARNING: You need to implement UNICORN_DEPRECATED for this compiler") #define UNICORN_DEPRECATED #endif diff --git a/qemu/target/i386/unicorn.c b/qemu/target/i386/unicorn.c index a694af46..b36eb8fd 100644 --- a/qemu/target/i386/unicorn.c +++ b/qemu/target/i386/unicorn.c @@ -2000,7 +2000,8 @@ static bool x86_stop_interrupt(struct uc_struct *uc, int intno) static bool x86_insn_hook_validate(uint32_t insn_enum) { - // for x86 we can only hook IN, OUT, SYSCALL, SYSENTER, CPUID, RDTSC, and RDTSCP + // for x86 we can only hook IN, OUT, SYSCALL, SYSENTER, CPUID, RDTSC, and + // RDTSCP if (insn_enum != UC_X86_INS_IN && insn_enum != UC_X86_INS_OUT && insn_enum != UC_X86_INS_SYSCALL && insn_enum != UC_X86_INS_SYSENTER && insn_enum != UC_X86_INS_CPUID && insn_enum != UC_X86_INS_RDTSC && diff --git a/tests/unit/test_arm64.c b/tests/unit/test_arm64.c index e48bbda9..2de61d99 100644 --- a/tests/unit/test_arm64.c +++ b/tests/unit/test_arm64.c @@ -529,26 +529,36 @@ static void test_arm64_pc_wrap(void) OK(uc_close(uc)); } -static void -test_arm64_mem_prot_regress_hook_mem(uc_engine *uc, uc_mem_type type, - uint64_t address, int size, int64_t value, void *user_data) +static void test_arm64_mem_prot_regress_hook_mem(uc_engine *uc, + uc_mem_type type, + uint64_t address, int size, + int64_t value, void *user_data) { - // fprintf(stderr, "%s %p %d\n", (type == UC_MEM_WRITE) ? "UC_MEM_WRITE" : "UC_MEM_READ", (void *)address, size); + // fprintf(stderr, "%s %p %d\n", (type == UC_MEM_WRITE) ? "UC_MEM_WRITE" : + // "UC_MEM_READ", (void *)address, size); } -static bool -test_arm64_mem_prot_regress_hook_prot(uc_engine *uc, uc_mem_type type, - uint64_t address, int size, int64_t value, void *user_data) +static bool test_arm64_mem_prot_regress_hook_prot(uc_engine *uc, + uc_mem_type type, + uint64_t address, int size, + int64_t value, + void *user_data) { - // fprintf(stderr, "%s %p %d\n", (type == UC_MEM_WRITE_PROT) ? "UC_MEM_WRITE_PROT" : ((type == UC_MEM_FETCH_PROT) ? "UC_MEM_FETCH_PROT" : "UC_MEM_READ_PROT"), (void *)address, size); + // fprintf(stderr, "%s %p %d\n", (type == UC_MEM_WRITE_PROT) ? + // "UC_MEM_WRITE_PROT" : ((type == UC_MEM_FETCH_PROT) ? "UC_MEM_FETCH_PROT" + // : "UC_MEM_READ_PROT"), (void *)address, size); return false; } -static bool -test_arm64_mem_prot_regress_hook_unm(uc_engine *uc, uc_mem_type type, - uint64_t address, int size, int64_t value, void *user_data) +static bool test_arm64_mem_prot_regress_hook_unm(uc_engine *uc, + uc_mem_type type, + uint64_t address, int size, + int64_t value, void *user_data) { - // fprintf(stderr, "%s %p %d\n", (type == UC_MEM_WRITE_UNMAPPED) ? "UC_MEM_WRITE_UNMAPPED" : ((type == UC_MEM_FETCH_UNMAPPED) ? "UC_MEM_FETCH_UNMAPPED" : "UC_MEM_READ_UNMAPPED"), (void *)address, size); + // fprintf(stderr, "%s %p %d\n", (type == UC_MEM_WRITE_UNMAPPED) ? + // "UC_MEM_WRITE_UNMAPPED" : ((type == UC_MEM_FETCH_UNMAPPED) ? + // "UC_MEM_FETCH_UNMAPPED" : "UC_MEM_READ_UNMAPPED"), (void *)address, + // size); return false; } @@ -562,17 +572,24 @@ static void test_arm64_mem_prot_regress(void) uc_engine *uc; OK(uc_open(UC_ARCH_ARM64, UC_MODE_ARM, &uc)); - OK(uc_mem_map(uc, 0, 0x4000, UC_PROT_READ|UC_PROT_EXEC)); - OK(uc_mem_map(uc, 0x4000, 0xC000, UC_PROT_READ|UC_PROT_WRITE)); + OK(uc_mem_map(uc, 0, 0x4000, UC_PROT_READ | UC_PROT_EXEC)); + OK(uc_mem_map(uc, 0x4000, 0xC000, UC_PROT_READ | UC_PROT_WRITE)); OK(uc_mem_write(uc, 0, code, sizeof(code))); uc_hook hh_mem; - OK(uc_hook_add(uc, &hh_mem, UC_HOOK_MEM_READ | UC_HOOK_MEM_WRITE, test_arm64_mem_prot_regress_hook_mem, NULL, 1, 0)); + OK(uc_hook_add(uc, &hh_mem, UC_HOOK_MEM_READ | UC_HOOK_MEM_WRITE, + test_arm64_mem_prot_regress_hook_mem, NULL, 1, 0)); uc_hook hh_prot; - OK(uc_hook_add(uc, &hh_prot, UC_HOOK_MEM_READ_PROT | UC_HOOK_MEM_WRITE_PROT | UC_HOOK_MEM_FETCH_PROT, test_arm64_mem_prot_regress_hook_prot, NULL, 1, 0)); + OK(uc_hook_add(uc, &hh_prot, + UC_HOOK_MEM_READ_PROT | UC_HOOK_MEM_WRITE_PROT | + UC_HOOK_MEM_FETCH_PROT, + test_arm64_mem_prot_regress_hook_prot, NULL, 1, 0)); uc_hook hh_unm; - OK(uc_hook_add(uc, &hh_unm, UC_HOOK_MEM_READ_UNMAPPED | UC_HOOK_MEM_WRITE_UNMAPPED | UC_HOOK_MEM_FETCH_UNMAPPED, test_arm64_mem_prot_regress_hook_unm, NULL, 1, 0)); + OK(uc_hook_add(uc, &hh_unm, + UC_HOOK_MEM_READ_UNMAPPED | UC_HOOK_MEM_WRITE_UNMAPPED | + UC_HOOK_MEM_FETCH_UNMAPPED, + test_arm64_mem_prot_regress_hook_unm, NULL, 1, 0)); const uint64_t value = 0x801b; OK(uc_reg_write(uc, UC_ARM64_REG_X0, &value)); diff --git a/tests/unit/test_x86.c b/tests/unit/test_x86.c index 92b08f7d..df36332d 100644 --- a/tests/unit/test_x86.c +++ b/tests/unit/test_x86.c @@ -632,10 +632,11 @@ static void test_x86_smc_add(void) /* * mov qword ptr [rip+0x10], rax * mov word ptr [rip], 0x0548 - * [orig] mov eax, dword ptr [rax + 0x12345678]; [after SMC] 480578563412 add rax, 0x12345678 - * hlt + * [orig] mov eax, dword ptr [rax + 0x12345678]; [after SMC] 480578563412 + * add rax, 0x12345678 hlt */ - char code[] = "\x48\x89\x05\x10\x00\x00\x00\x66\xc7\x05\x00\x00\x00\x00\x48\x05\x8b\x80\x78\x56\x34\x12\xf4"; + char code[] = "\x48\x89\x05\x10\x00\x00\x00\x66\xc7\x05\x00\x00\x00\x00\x48" + "\x05\x8b\x80\x78\x56\x34\x12\xf4"; uc_common_setup(&uc, UC_ARCH_X86, UC_MODE_64, code, sizeof(code) - 1); OK(uc_mem_map(uc, stack_base, 0x2000, UC_PROT_ALL)); @@ -648,10 +649,11 @@ static void test_x86_smc_mem_hook_callback(uc_engine *uc, uc_mem_type t, uint64_t addr, int size, uint64_t value, void *user_data) { - uint64_t write_addresses[] = { 0x1030, 0x1010, 0x1010, 0x1018, 0x1018, 0x1029, 0x1029 }; + uint64_t write_addresses[] = {0x1030, 0x1010, 0x1010, 0x1018, + 0x1018, 0x1029, 0x1029}; unsigned int *i = user_data; - TEST_CHECK(*i < (sizeof(write_addresses)/sizeof(write_addresses[0]))); + TEST_CHECK(*i < (sizeof(write_addresses) / sizeof(write_addresses[0]))); TEST_CHECK(write_addresses[*i] == addr); (*i)++; } @@ -666,19 +668,19 @@ static void test_x86_smc_mem_hook(void) /* * mov qword ptr [rip+0x29], rax * mov word ptr [rip], 0x0548 - * [orig] mov eax, dword ptr [rax + 0x12345678]; [after SMC] 480578563412 add rax, 0x12345678 - * nop - * nop - * nop - * mov qword ptr [rip-0x08], rax - * mov word ptr [rip], 0x0548 - * [orig] mov eax, dword ptr [rax + 0x12345678]; [after SMC] 480578563412 add rax, 0x12345678 - * hlt + * [orig] mov eax, dword ptr [rax + 0x12345678]; [after SMC] 480578563412 + * add rax, 0x12345678 nop nop nop mov qword ptr [rip-0x08], rax mov word + * ptr [rip], 0x0548 [orig] mov eax, dword ptr [rax + 0x12345678]; [after + * SMC] 480578563412 add rax, 0x12345678 hlt */ - char code[] = "\x48\x89\x05\x29\x00\x00\x00\x66\xC7\x05\x00\x00\x00\x00\x48\x05\x8B\x80\x78\x56\x34\x12\x90\x90\x90\x48\x89\x05\xF8\xFF\xFF\xFF\x66\xC7\x05\x00\x00\x00\x00\x48\x05\x8B\x80\x78\x56\x34\x12\xF4"; + char code[] = + "\x48\x89\x05\x29\x00\x00\x00\x66\xC7\x05\x00\x00\x00\x00\x48\x05\x8B" + "\x80\x78\x56\x34\x12\x90\x90\x90\x48\x89\x05\xF8\xFF\xFF\xFF\x66\xC7" + "\x05\x00\x00\x00\x00\x48\x05\x8B\x80\x78\x56\x34\x12\xF4"; uc_common_setup(&uc, UC_ARCH_X86, UC_MODE_64, code, sizeof(code) - 1); - OK(uc_hook_add(uc, &hook, UC_HOOK_MEM_WRITE, test_x86_smc_mem_hook_callback, &i, 1, 0)); + OK(uc_hook_add(uc, &hook, UC_HOOK_MEM_WRITE, test_x86_smc_mem_hook_callback, + &i, 1, 0)); OK(uc_mem_map(uc, stack_base, 0x2000, UC_PROT_ALL)); r_rsp = stack_base + 0x1800; OK(uc_reg_write(uc, UC_X86_REG_RSP, &r_rsp)); @@ -1343,14 +1345,13 @@ static void test_x86_unaligned_access(void) OK(uc_close(uc)); } -static void test_x86_64_unaligned_access(void){ +static void test_x86_64_unaligned_access(void) +{ uc_engine *uc; uc_hook hook; - char code[] = { - "\x48\x89\x01" // mov qword ptr [rcx],rax - "\x48\x8b\x00" // mov rax,qword ptr [rax] - "\xcc" - }; + char code[] = {"\x48\x89\x01" // mov qword ptr [rcx],rax + "\x48\x8b\x00" // mov rax,qword ptr [rax] + "\xcc"}; uint64_t r_rax = LEINT64(0x2fffff); uint64_t r_rcx = LEINT64(0x2fffff); struct writelog_t write_log[10]; @@ -1382,7 +1383,6 @@ static void test_x86_64_unaligned_access(void){ TEST_CHECK(b == 0x2fffff); OK(uc_close(uc)); - } #endif diff --git a/uc.c b/uc.c index 895bd4fa..623e898e 100644 --- a/uc.c +++ b/uc.c @@ -35,7 +35,8 @@ static void clear_deleted_hooks(uc_engine *uc); static uc_err uc_snapshot(uc_engine *uc); static uc_err uc_restore_latest_snapshot(uc_engine *uc); -#if defined(__APPLE__) && defined(HAVE_PTHREAD_JIT_PROTECT) && (defined(__arm__) || defined(__aarch64__)) +#if defined(__APPLE__) && defined(HAVE_PTHREAD_JIT_PROTECT) && \ + (defined(__arm__) || defined(__aarch64__)) static void save_jit_state(uc_engine *uc) { if (!uc->nested) { @@ -2148,7 +2149,8 @@ uc_err uc_context_save(uc_engine *uc, uc_context *context) if (!context->fv) { return UC_ERR_NOMEM; } - if (!uc->flatview_copy(uc, context->fv, uc->address_space_memory.current_map, false)) { + if (!uc->flatview_copy(uc, context->fv, + uc->address_space_memory.current_map, false)) { restore_jit_state(uc); return UC_ERR_NOMEM; } @@ -2434,7 +2436,8 @@ uc_err uc_context_restore(uc_engine *uc, uc_context *context) uc_snapshot(uc); uc->ram_list.freed = context->ramblock_freed; uc->ram_list.last_block = context->last_block; - if (!uc->flatview_copy(uc, uc->address_space_memory.current_map, context->fv, true)) { + if (!uc->flatview_copy(uc, uc->address_space_memory.current_map, + context->fv, true)) { return UC_ERR_NOMEM; } uc->tcg_flush_tlb(uc);