From 192f07c503f8e99e7a17d5fa488225d2175112a7 Mon Sep 17 00:00:00 2001 From: Nguyen Anh Quynh Date: Wed, 26 Aug 2015 16:15:38 +0800 Subject: [PATCH 1/3] reset invalid_error after callbacks decide to continue after invalid memory accesses --- qemu/softmmu_template.h | 10 ++++++++++ samples/sample_x86.c | 1 + 2 files changed, 11 insertions(+) diff --git a/qemu/softmmu_template.h b/qemu/softmmu_template.h index 3fca97ec..5ae4a73f 100644 --- a/qemu/softmmu_template.h +++ b/qemu/softmmu_template.h @@ -198,6 +198,8 @@ WORD_TYPE helper_le_ld_name(CPUArchState *env, target_ulong addr, int mmu_idx, // printf("***** Invalid memory read at " TARGET_FMT_lx "\n", addr); cpu_exit(env->uc->current_cpu); return 0; + } else { + env->invalid_error = UC_ERR_OK; } } @@ -233,6 +235,8 @@ WORD_TYPE helper_le_ld_name(CPUArchState *env, target_ulong addr, int mmu_idx, // printf("Invalid memory read at " TARGET_FMT_lx "\n", addr); cpu_exit(env->uc->current_cpu); return 0; + } else { + env->invalid_error = UC_ERR_OK; } /* ??? Note that the io helpers always read data in the target @@ -316,6 +320,8 @@ WORD_TYPE helper_be_ld_name(CPUArchState *env, target_ulong addr, int mmu_idx, // printf("***** Invalid memory read at " TARGET_FMT_lx "\n", addr); cpu_exit(env->uc->current_cpu); return 0; + } else { + env->invalid_error = UC_ERR_OK; } } @@ -474,6 +480,8 @@ void helper_le_st_name(CPUArchState *env, target_ulong addr, DATA_TYPE val, // printf("***** Invalid memory write at " TARGET_FMT_lx "\n", addr); cpu_exit(env->uc->current_cpu); return; + } else { + env->invalid_error = UC_ERR_OK; } } @@ -586,6 +594,8 @@ void helper_be_st_name(CPUArchState *env, target_ulong addr, DATA_TYPE val, // printf("***** Invalid memory write at " TARGET_FMT_lx "\n", addr); cpu_exit(env->uc->current_cpu); return; + } else { + env->invalid_error = UC_ERR_OK; } } diff --git a/samples/sample_x86.c b/samples/sample_x86.c index b0dec117..4e4a736d 100644 --- a/samples/sample_x86.c +++ b/samples/sample_x86.c @@ -725,6 +725,7 @@ static void test_x86_16(void) uc_close(&handle); } + int main(int argc, char **argv, char **envp) { if (argc == 2) { From 1161401c356c138d2a8d10a6332ca90da8a0e42e Mon Sep 17 00:00:00 2001 From: danghvu Date: Wed, 26 Aug 2015 16:20:29 +0700 Subject: [PATCH 2/3] Makefile: make install also compiles samples --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index dbd39dd5..d62eec00 100644 --- a/Makefile +++ b/Makefile @@ -249,7 +249,7 @@ else endif -install: compile_lib $(PKGCFGF) +install: all $(PKGCFGF) mkdir -p $(LIBDIR) ifeq ($(UNICORN_SHARED),yes) $(INSTALL_LIB) $(LIBRARY) $(LIBDIR) From 60d000432983988cb22f0fc6827b877b2c142bb5 Mon Sep 17 00:00:00 2001 From: Jonathon Reinhart Date: Wed, 26 Aug 2015 05:34:31 -0400 Subject: [PATCH 3/3] remove executable bit from mode of source files http://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-file-mode-chmod-changes --- bindings/java/Makefile | 0 bindings/java/samples/Sample_arm.java | 0 bindings/java/samples/Sample_arm64.java | 0 bindings/java/samples/Sample_m68k.java | 0 bindings/java/samples/Sample_mips.java | 0 bindings/java/samples/Sample_sparc.java | 0 bindings/java/samples/Sample_x86.java | 0 bindings/java/samples/Shellcode.java | 0 bindings/java/unicorn/Arm64Regs.java | 0 bindings/java/unicorn/ArmRegs.java | 0 bindings/java/unicorn/BlockHook.java | 0 bindings/java/unicorn/CodeHook.java | 0 bindings/java/unicorn/Hook.java | 0 bindings/java/unicorn/InHook.java | 0 bindings/java/unicorn/InterruptHook.java | 0 bindings/java/unicorn/M68kRegs.java | 0 bindings/java/unicorn/MemoryInvalidHook.java | 0 bindings/java/unicorn/MipsRegs.java | 0 bindings/java/unicorn/OutHook.java | 0 bindings/java/unicorn/ReadHook.java | 0 bindings/java/unicorn/ReadWriteHook.java | 0 bindings/java/unicorn/SparcRegs.java | 0 bindings/java/unicorn/SyscallHook.java | 0 bindings/java/unicorn/Unicorn.java | 0 bindings/java/unicorn/UnicornArchs.java | 0 bindings/java/unicorn/UnicornErrors.java | 0 bindings/java/unicorn/UnicornException.java | 0 bindings/java/unicorn/UnicornHooks.java | 0 bindings/java/unicorn/UnicornModes.java | 0 bindings/java/unicorn/WriteHook.java | 0 bindings/java/unicorn/X86Instructions.java | 0 bindings/java/unicorn/X86Regs.java | 0 bindings/java/unicorn_Unicorn.c | 0 regress/Makefile | 0 regress/block_test.c | 0 35 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 bindings/java/Makefile mode change 100755 => 100644 bindings/java/samples/Sample_arm.java mode change 100755 => 100644 bindings/java/samples/Sample_arm64.java mode change 100755 => 100644 bindings/java/samples/Sample_m68k.java mode change 100755 => 100644 bindings/java/samples/Sample_mips.java mode change 100755 => 100644 bindings/java/samples/Sample_sparc.java mode change 100755 => 100644 bindings/java/samples/Sample_x86.java mode change 100755 => 100644 bindings/java/samples/Shellcode.java mode change 100755 => 100644 bindings/java/unicorn/Arm64Regs.java mode change 100755 => 100644 bindings/java/unicorn/ArmRegs.java mode change 100755 => 100644 bindings/java/unicorn/BlockHook.java mode change 100755 => 100644 bindings/java/unicorn/CodeHook.java mode change 100755 => 100644 bindings/java/unicorn/Hook.java mode change 100755 => 100644 bindings/java/unicorn/InHook.java mode change 100755 => 100644 bindings/java/unicorn/InterruptHook.java mode change 100755 => 100644 bindings/java/unicorn/M68kRegs.java mode change 100755 => 100644 bindings/java/unicorn/MemoryInvalidHook.java mode change 100755 => 100644 bindings/java/unicorn/MipsRegs.java mode change 100755 => 100644 bindings/java/unicorn/OutHook.java mode change 100755 => 100644 bindings/java/unicorn/ReadHook.java mode change 100755 => 100644 bindings/java/unicorn/ReadWriteHook.java mode change 100755 => 100644 bindings/java/unicorn/SparcRegs.java mode change 100755 => 100644 bindings/java/unicorn/SyscallHook.java mode change 100755 => 100644 bindings/java/unicorn/Unicorn.java mode change 100755 => 100644 bindings/java/unicorn/UnicornArchs.java mode change 100755 => 100644 bindings/java/unicorn/UnicornErrors.java mode change 100755 => 100644 bindings/java/unicorn/UnicornException.java mode change 100755 => 100644 bindings/java/unicorn/UnicornHooks.java mode change 100755 => 100644 bindings/java/unicorn/UnicornModes.java mode change 100755 => 100644 bindings/java/unicorn/WriteHook.java mode change 100755 => 100644 bindings/java/unicorn/X86Instructions.java mode change 100755 => 100644 bindings/java/unicorn/X86Regs.java mode change 100755 => 100644 bindings/java/unicorn_Unicorn.c mode change 100755 => 100644 regress/Makefile mode change 100755 => 100644 regress/block_test.c diff --git a/bindings/java/Makefile b/bindings/java/Makefile old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Sample_arm.java b/bindings/java/samples/Sample_arm.java old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Sample_arm64.java b/bindings/java/samples/Sample_arm64.java old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Sample_m68k.java b/bindings/java/samples/Sample_m68k.java old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Sample_mips.java b/bindings/java/samples/Sample_mips.java old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Sample_sparc.java b/bindings/java/samples/Sample_sparc.java old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Sample_x86.java b/bindings/java/samples/Sample_x86.java old mode 100755 new mode 100644 diff --git a/bindings/java/samples/Shellcode.java b/bindings/java/samples/Shellcode.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/Arm64Regs.java b/bindings/java/unicorn/Arm64Regs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/ArmRegs.java b/bindings/java/unicorn/ArmRegs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/BlockHook.java b/bindings/java/unicorn/BlockHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/CodeHook.java b/bindings/java/unicorn/CodeHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/Hook.java b/bindings/java/unicorn/Hook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/InHook.java b/bindings/java/unicorn/InHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/InterruptHook.java b/bindings/java/unicorn/InterruptHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/M68kRegs.java b/bindings/java/unicorn/M68kRegs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/MemoryInvalidHook.java b/bindings/java/unicorn/MemoryInvalidHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/MipsRegs.java b/bindings/java/unicorn/MipsRegs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/OutHook.java b/bindings/java/unicorn/OutHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/ReadHook.java b/bindings/java/unicorn/ReadHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/ReadWriteHook.java b/bindings/java/unicorn/ReadWriteHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/SparcRegs.java b/bindings/java/unicorn/SparcRegs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/SyscallHook.java b/bindings/java/unicorn/SyscallHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/Unicorn.java b/bindings/java/unicorn/Unicorn.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/UnicornArchs.java b/bindings/java/unicorn/UnicornArchs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/UnicornErrors.java b/bindings/java/unicorn/UnicornErrors.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/UnicornException.java b/bindings/java/unicorn/UnicornException.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/UnicornHooks.java b/bindings/java/unicorn/UnicornHooks.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/UnicornModes.java b/bindings/java/unicorn/UnicornModes.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/WriteHook.java b/bindings/java/unicorn/WriteHook.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/X86Instructions.java b/bindings/java/unicorn/X86Instructions.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn/X86Regs.java b/bindings/java/unicorn/X86Regs.java old mode 100755 new mode 100644 diff --git a/bindings/java/unicorn_Unicorn.c b/bindings/java/unicorn_Unicorn.c old mode 100755 new mode 100644 diff --git a/regress/Makefile b/regress/Makefile old mode 100755 new mode 100644 diff --git a/regress/block_test.c b/regress/block_test.c old mode 100755 new mode 100644