Chris Eagle
f8f9e993a8
merge upstream/noglib and update some glib related types
2016-12-19 12:32:06 -08:00
Chris Eagle
e07e57a862
battling git
2016-12-19 12:10:02 -08:00
Chris Eagle
e53c295f61
please the gods of brace
2016-12-19 12:02:01 -08:00
Chris Eagle
71bda8e012
stick to gint/guint rather than int32_t/uint32_t
2016-12-19 09:43:35 -08:00
Nguyen Anh Quynh
bd1632e60c
fix an warning 'control may reach end of non-void function'
2016-12-20 00:21:02 +08:00
Nguyen Anh Quynh
16bbe4fb88
do not redefine GHashTable
2016-12-20 00:19:13 +08:00
Nguyen Anh Quynh
04e2e7e845
glib_compat.c: code style
2016-12-19 22:18:33 +08:00
Nguyen Anh Quynh
b19f1607c6
Revert "remove qemu/util/qemu-timer-common.c"
...
This reverts commit 934fa2c90f
.
2016-12-19 20:31:38 +08:00
Nguyen Anh Quynh
b680ee11f8
Revert "remove qemu/util/qemu-timer-common.c"
...
This reverts commit 934fa2c90f
.
2016-12-19 20:30:46 +08:00
Nguyen Anh Quynh
5f81c00559
Merge branch 'noglib' of https://github.com/cseagle/unicorn into cseagle-noglib
2016-12-19 17:32:27 +08:00
Nguyen Anh Quynh
934fa2c90f
remove qemu/util/qemu-timer-common.c
2016-12-19 17:29:25 +08:00
Chris Eagle
5690b7b68f
annotate the hash functions
2016-12-18 19:45:09 -08:00
Chris Eagle
c7bd120650
imlpement key destroy and value destroy callbacks in hash tables
2016-12-18 15:28:11 -08:00
Chris Eagle
e46545f722
remove glib dependency by provide compatible replacements
2016-12-18 14:56:58 -08:00
Nguyen Anh Quynh
e1b65a6edb
cleanup unused code
2016-11-19 23:48:23 +08:00
Nguyen Anh Quynh
1f65b76fbd
fix some compilation warnings regarding typcase of (CPUState *)
2016-10-26 17:05:26 +08:00
Nguyen Anh Quynh
c59e06d798
mips: fix some compilation warnings
2016-10-22 13:36:37 +08:00
Nguyen Anh Quynh
4083b87032
add new hook type UC_HOOK_MEM_READ_AFTER, adapted from PR #399 by @farmdve. updated all bindings, except Ruby & Haskell
2016-10-22 11:19:55 +08:00
Nguyen Anh Quynh
2a608c778e
sparc: fix an compilation warning
2016-10-21 22:32:02 +08:00
Fish
ad7ae63e92
Remove unmapped/freed memory regions from the object property list.
...
This commit fixes the following issues:
- Any unmapped/free'd memory regions (MemoryRegion instances) are not
removed from the object property linked list of its owner (which is
always qdev_get_machine(uc)). This issue makes adding new memory
mapping by calling mem_map() or mem_map_ptr() slower as more and more
memory pages are mapped and unmapped - yes, even if those memory pages
are unmapped, they still impact the speed of future memory page
mappings due to this issue.
- FlatView is not reconstructed after a memory region is freed during
unmapping, which leads to a use-after-free the next time a new memory
region is mapped in address_space_update_topology().
2016-10-20 03:48:58 -07:00
Nguyen Anh Quynh
b7cdbe7a88
Merge branch 'feat/reg_save_restore' of https://github.com/rhelmot/unicorn into rhelmot-feat/reg_save_restore
2016-10-07 09:57:07 +08:00
danghvu
fb9cd97504
memleak: Fix m68k memleak
2016-10-03 14:47:03 -05:00
danghvu
84d99412bc
memleak: Fix Sparc memory leak
2016-10-03 14:23:27 -05:00
Nguyen Anh Quynh
7d15a60b25
arm64: disable deadcode introduced by PR #643
2016-09-29 12:34:44 +08:00
Nguyen Anh Quynh
507d557aa5
arm: disable deadcode introduced by PR #643
2016-09-29 12:33:16 +08:00
Ryan Hileman
cb615fdba7
remove uc->cpus
2016-09-23 07:38:21 -07:00
Nguyen Anh Quynh
69d976375e
Merge branch 'fix/self_modifying' of https://github.com/rhelmot/unicorn into rhelmot-fix/self_modifying
2016-08-30 21:20:22 +08:00
Nguyen Anh Quynh
8b030ae51a
fix for issue #523
2016-08-27 21:49:11 +08:00
Nguyen Anh Quynh
89c9ea5f8f
Merge branch 'fix/eflags' of https://github.com/rhelmot/unicorn into rhelmot-fix/eflags
2016-08-24 16:13:31 +08:00
Nguyen Anh Quynh
40ea64af19
Merge branch 'feat/xmm_regs' of https://github.com/rhelmot/unicorn into rhelmot-feat/xmm_regs
2016-08-23 06:52:45 +08:00
Nguyen Anh Quynh
8e1102f741
Merge pull request #620 from rhelmot/feat/invalid_floatx80_check
...
Port patch from upstream to check for invalid long double encodings
2016-08-21 09:48:26 +08:00
Andrew Dutcher
1f5d14df4d
Port patch from upstream to check for invalid long double encodings
2016-08-20 11:31:46 -07:00
Andrew Dutcher
0ef2b5fd71
New feature: registers can be bulk saved/restored in an opaque blob
2016-08-20 04:14:07 -07:00
Ryan Hileman
f99030179c
fix free() -> g_free()
2016-08-11 07:49:19 -07:00
Andrew Dutcher
3a1f231e8f
eflags patch
2016-08-09 19:38:44 -07:00
Andrew Dutcher
97b10da133
Undo the disaster that was the patch to unicorn github issue #266 and fix it correctly. makes normal self-modifying code work.
2016-08-09 19:35:20 -07:00
Andrew Dutcher
4a8f52ae7f
support xmm registers
2016-08-09 19:34:34 -07:00
Nguyen Anh Quynh
fd39ec465b
arm: sync env.uc->thumb with env.thumb in arm_reg_write()
2016-07-30 13:21:44 +08:00
Nguyen Anh Quynh
a59f54ca72
Merge branch 'master' of https://github.com/esanfelix/unicorn into esanfelix-master
2016-07-30 13:18:37 +08:00
Nguyen Anh Quynh
c61aff1dbe
mips: remove an unused variable
2016-07-15 15:12:15 +08:00
danghvu
bb8f894872
windows: Remove unnecessary mman inclusion (issue #587 )
2016-07-11 13:35:49 -05:00
Hoang-Vu Dang
b9a10152f1
memleak: code_gen_buffer using g_free for non-linux
2016-07-11 10:13:13 -05:00
danghvu
27e0699ef5
mips: Fix memleak
2016-07-09 20:16:00 -05:00
danghvu
117a318188
memleak: missing from refactoring
2016-07-08 12:49:43 -05:00
danghvu
6b9f17f2f7
memleak: refactor unicorn_common.h, move stuff to uc_close
2016-07-08 11:16:23 -05:00
danghvu
ada1c13662
Fix memleak: do not re-initialize halt_cond
2016-07-06 01:49:10 -05:00
Hoang-Vu Dang
de5786f98d
Fix memleak: code_gen_buffer
2016-07-05 23:48:02 -05:00
Hoang-Vu Dang
9a2a5b15d8
Rename unhandled CPU exception
2016-07-05 11:10:39 -05:00
Hoang-Vu Dang
9cdca5a32b
Unhandled interrupt will halt execution
2016-07-04 17:07:57 -05:00
Eloi Sanfelix
3a1c13fda9
Set thumb mode based on PC value in ARM. Mask off last bit of PC.
2016-06-17 13:46:34 +02:00
Nguyen Anh Quynh
40ac55cf74
Merge branch 'drop-zlib' of https://github.com/radare/unicorn into radare-drop-zlib
2016-06-15 16:41:13 +07:00
pancake
fe96e8325b
Remove unused zlib dependency
2016-06-15 09:24:16 +02:00
mkravchik
4b45869437
Reading and writing NEON registers
2016-05-04 11:23:32 +03:00
Nguyen Anh Quynh
f4723916df
remove qemu_cond_destroy from qemu/header_gen.py
2016-04-23 10:23:09 +08:00
Nguyen Anh Quynh
72ba554738
qemu_thread_join() takes only 1 arg
2016-04-23 10:17:04 +08:00
Nguyen Anh Quynh
3a742fb6f6
fix conflicts when merging no-thread to master
2016-04-23 10:06:57 +08:00
Nguyen Anh Quynh
8932463f9d
arm: qutie emulation on EXCP_YIELD exception. this fixes testcase 004-segmentation_fault_1 in #520
2016-04-20 12:04:15 +08:00
Nguyen Anh Quynh
cc6cbc5cf7
Merge branch 'memleak' into m2
2016-04-18 12:48:13 +08:00
Nguyen Anh Quynh
ba31be79f4
update qemu/powerpc.h
2016-04-17 23:37:25 +08:00
Nguyen Anh Quynh
47a7bb3c9f
Merge branch 'smaller_nothreads' of https://github.com/cseagle/unicorn into cseagle-smaller_nothreads
2016-04-17 23:37:06 +08:00
Nguyen Anh Quynh
721f17eb74
Merge branch 'batch_reg' of https://github.com/lunixbochs/unicorn into lunixbochs-batch_reg
2016-04-06 09:39:22 +08:00
Nguyen Anh Quynh
70da2485fc
x86: comment out restore_eflags() because it breaks some executions. see #505
2016-04-06 09:36:06 +08:00
Ryan Hileman
acd88856e1
add batched reg access
2016-04-04 20:51:38 -07:00
Ryan Hileman
66619fc6cd
remove call to restore_eflags ( #496 )
2016-04-03 23:08:17 -07:00
Chris Eagle
3add48feb5
Merge branch 'master' into smaller_nothreads
2016-03-25 19:47:52 -07:00
Chris Eagle
6991d69dad
merge from upstream
2016-03-25 19:46:44 -07:00
Ryan Hileman
977863401e
static -> dynamic code buffer, and shrink 32M->8M
2016-03-25 18:28:03 -07:00
Chris Eagle
9467254fc0
strip out per cpu thread code
2016-03-25 17:24:28 -07:00
Ryan Hileman
f0af8f8282
execute cpus in same thread as uc_emu_start()
...
note: I'm sure this makes some dead code
2016-03-23 22:50:56 -07:00
Chris Eagle
4c4203cec8
fix x86 segment setup by updating cached segment registers on reg_write
2016-03-22 23:54:30 -07:00
Nguyen Anh Quynh
859111f8f5
x86: return immediately after handling FPSW/FPCW/FPTAG registers
2016-03-20 18:15:41 +08:00
Nguyen Anh Quynh
fb1ebac000
Merge branch 'master' into m1
2016-03-09 15:13:42 +08:00
Hiroyuki UEKAWA
c5888e5670
move macros in qemu/target-*/unicorn*.c
to uc_priv.h
2016-03-02 12:43:02 +09:00
Hiroyuki UEKAWA
1cd3c3093b
fix WRITE_BYTE_H
2016-03-02 10:51:50 +09:00
Jonas Zaddach
5fa6705d7a
Fixed restoring of eflags after helper call
2016-02-29 22:57:41 +01:00
Nguyen Anh Quynh
b69feb8d0b
Merge branch 'master' into memleak2
2016-02-15 15:52:10 +08:00
Nguyen Anh Quynh
8962adc9c5
sparc: use power_down to terminate emulation, rather than using trap. this fix hangup issue of tests/regress/sparc_reg.py
2016-02-15 15:51:14 +08:00
Nguyen Anh Quynh
3bd7fa4bfe
chmod -x qemu/target-i386/unicorn.c
2016-02-12 13:48:58 +08:00
coco
95beec805c
fixed memcpy that should be memmove
2016-02-11 16:38:50 +01:00
Nguyen Anh Quynh
b6897e2015
fix a compilation warning
2016-02-11 09:19:08 +08:00
Nguyen Anh Quynh
6478a24404
Merge branch 'gdt_idt' of https://github.com/cseagle/unicorn into cseagle-gdt_idt
2016-02-06 17:31:42 +08:00
Nguyen Anh Quynh
e73cbf1c88
arm: UC_QUERY_MODE return hardware mode (see issue #397 )
2016-02-06 09:47:57 +08:00
Chris Eagle
dec3615d12
ldtr and tr limit is 20 bits, not 16 bits
2016-02-04 19:26:47 -08:00
Chris Eagle
b49358524f
fix reg_read casting for x86 segment registers
2016-02-04 19:22:39 -08:00
Chris Eagle
4cb43be5bf
fix reg_read casting for x86 segment registers
2016-02-04 19:20:59 -08:00
Chris Eagle
49b9f4f8da
uc_x86_mmr type available in qemu/target-i386/unicorn.c
2016-02-04 19:09:41 -08:00
Chris Eagle
c339ced218
file perms
2016-02-04 17:18:24 -08:00
Chris Eagle
f3dc2522a0
read/write of x86 segment registers should modify selector field not base field
2016-02-04 17:17:40 -08:00
Chris Eagle
59f7bf3be7
file perms
2016-02-04 16:48:27 -08:00
Chris Eagle
e59382e030
updated gdtr/idtr/ldtr/tr read/write code
2016-02-04 16:44:52 -08:00
Chris Eagle
9977054a15
add support for setting gdtr, idtr, ldtr, and tr programatically
2016-02-03 09:22:29 -08:00
Nguyen Anh Quynh
20b01a6933
fix merge conflict
2016-02-01 12:08:38 +08:00
Nguyen Anh Quynh
cfaac6921b
c89
2016-02-01 12:05:46 +08:00
danghvu
36e53ad8a1
Fix arm & arm64 memleaks
2016-01-31 16:22:20 -06:00
Nguyen Anh Quynh
c8569d8128
arm: fix change PC feature. now tests/regress/callback-pc.py passes
2016-01-28 16:03:19 +08:00
Nguyen Anh Quynh
5a04bcb115
allow to change PC during callback. this solves issue #210
2016-01-28 14:06:17 +08:00
Nguyen Anh Quynh
e750a4e97c
when uc_mem_exec() remove EXE permission, quit current TB & continue emulating with TB flushed. this fixes issue in PR #378
2016-01-28 00:56:55 +08:00
Nguyen Anh Quynh
48ab148d1c
Merge branch 'hook'
2016-01-26 22:52:29 +08:00
Nguyen Anh Quynh
2341f5dd1a
code style
2016-01-26 17:37:48 +08:00
Willi Ballenthin
a640b76b94
qemu-thread-posix: bail on mutex errors
...
partially addresses #400
2016-01-24 22:46:13 -05:00
Nguyen Anh Quynh
6f3d48077e
rename UC_QUERY_ARM_MODE to a more generic name UC_QUERY_MODE. make all bindings support this new constant
2016-01-24 01:08:23 +08:00
Nguyen Anh Quynh
4dbad9aa9b
add new API uc_query() to query internal status of emulator at runtime
2016-01-23 17:14:44 +08:00
Nguyen Anh Quynh
38d1443504
Merge branch 'hook-refactor' of https://github.com/lunixbochs/unicorn into lunixbochs-hook-refactor
2016-01-23 13:24:12 +08:00
Ryan Hileman
2ac1281f82
rework code/block tracing
2016-01-22 19:07:50 -08:00
Nguyen Anh Quynh
249e2ac0a0
Merge branch 'hook-refactor' of https://github.com/lunixbochs/unicorn into lunixbochs-hook-refactor
2016-01-23 10:58:37 +08:00
Ryan Hileman
0886ae8ede
rework code/block tracing
2016-01-22 18:42:27 -08:00
Ryan Hileman
93052f6566
refactor to allow multiple hooks for one type
2016-01-22 18:41:43 -08:00
xorstream
b4b83ff207
moar fixes
2016-01-23 12:56:47 +11:00
xorstream
d8aaa2f44c
Fixes to runtime arm mask checks
2016-01-23 12:44:12 +11:00
xorstream
678d645b80
Fix uc_mode usage in source code
2016-01-23 12:29:22 +11:00
xorstream
8763d426c2
Fix uc_mode usage in source code
2016-01-23 12:08:49 +11:00
Nguyen Anh Quynh
6490b4f2a9
arm64: fix the issue of multiple definition of aarch64_tb_set_jmp_target (issue #387 )
2016-01-22 22:44:18 +08:00
Nguyen Anh Quynh
309abbe453
remove qemu/config-all-disas.mak
2016-01-22 17:11:57 +08:00
Nguyen Anh Quynh
3eb51116b9
arm64: fix the access to tcg_op_defs[] in arm64 backend (issue #387 )
2016-01-22 11:35:01 +08:00
Nguyen Anh Quynh
840eb54f05
Revert "arm64: fix the access to tcg_op_defs[] in arm64 backend (issue #387 )"
...
This reverts commit 3000ca6abf
.
2016-01-22 11:33:36 +08:00
Nguyen Anh Quynh
3000ca6abf
arm64: fix the access to tcg_op_defs[] in arm64 backend (issue #387 )
2016-01-22 11:33:28 +08:00
Nguyen Anh Quynh
07bd81bda6
do not redefine tb_set_jmp_target1. this partly fixes issue #387
2016-01-22 11:29:22 +08:00
Nguyen Anh Quynh
839ef672b0
only declare use_idiv_instructions_rt when __ARM_ARCH_EXT_IDIV__ is not defined
2016-01-19 00:19:28 +08:00
Nguyen Anh Quynh
3b52af4fbd
avoid confusion between macro & variable use_idiv_instructions (ARM backend)
2016-01-18 23:53:50 +08:00
Nguyen Anh Quynh
d9249b91c2
add some missing symbols for ARM backend
2016-01-18 20:42:45 +08:00
petevine
8db7f79daf
Finish adding getauxval
2016-01-18 12:48:49 +01:00
petevine
1bf85461c2
Add getauxval.c back
2016-01-18 12:47:32 +01:00
Nguyen Anh Quynh
7695fb1578
x86: no need to reset env->invalid_error in x86_reg_reset() as we always do that in cpu_exec()
2016-01-12 01:01:11 +08:00
farmdve
c9f4bd27cc
Reset env->invalid_error before executing a translation block.
2016-01-11 18:12:57 +02:00
Nguyen Anh Quynh
a0aa26d6ee
c89
2016-01-10 23:34:36 +08:00
Nguyen Anh Quynh
580bc7b56a
cleanup
2016-01-10 23:10:00 +08:00
farmdve
036763d6ae
Fix memory leaks as reported by DrMemory and Valgrind.
...
ARM and probably the rest of the arches have significant memory leaks as
they have no release interface.
Additionally, DrMemory does not have 64-bit support and thus I can't
test the 64-bit version under Windows. Under Linux valgrind supports
both 32-bit and 64-bit but there are different macros and code for Linux
and Windows.
2016-01-08 01:42:56 +02:00
Nguyen Anh Quynh
13726b3d40
Merge branch 'master' into cygwin
2016-01-07 23:17:32 +07:00
farmdve
2304bbfc96
Remove more instances of tcg_register_jit
2016-01-07 16:39:41 +02:00
Nguyen Anh Quynh
bfeb08d1ba
fix some compilation warning
2016-01-06 14:11:21 +08:00
Nguyen Anh Quynh
e8a295991f
update qemu/header_gen.py
2016-01-06 00:44:29 +07:00
Nguyen Anh Quynh
e0cb02569e
remove unused tcg_register_jit() and related code
2016-01-05 16:02:34 +07:00
Nguyen Anh Quynh
075ccadbe9
x86: set s->pc in disas_insn() early to fix uninitialized read issue. bug reported by @farmdve
2016-01-03 08:25:51 +07:00
Nguyen Anh Quynh
19930b0514
spaces
2016-01-01 14:15:01 +08:00
Nguyen Anh Quynh
b3ebd1b7cb
Merge branch 'master' of https://github.com/iroiro123/unicorn into iroiro123-master
2016-01-01 14:01:39 +08:00
Nguyen Anh Quynh
f935469658
mips: handle memory redirect for all APIs. this fixes issue #347
2015-12-28 15:19:30 +08:00
Nguyen Anh Quynh
f10d79e95f
x86: fix a compilation warning on unused variable
2015-12-28 13:06:25 +08:00
Nguyen Anh Quynh
b5feddbf1e
indentation
2015-12-28 13:04:59 +08:00
Nguyen Anh Quynh
99b401c609
Merge branch 'la-fixed' of https://github.com/JCYang/unicorn into JCYang-la-fixed
2015-12-28 12:21:31 +08:00
Spl3en
bb375e4fa9
Reset correctly the register CR0 in protected mode by calling cpu_x86_update_cr0 instead of setting it manually.
2015-12-25 04:55:15 +01:00
Spl3en
9ca993d8aa
Restore the protected mode check.
2015-12-24 18:39:19 +01:00
Spl3en
4c3ad139ea
( Fix #341 ) SYSENTER instruction is not properly hooked with uc_hook_add in x86 emulation.
...
helper_sysenter in qemu/target-i386/seg_helper.c didn't check properly if a call interrupt callback was registred.
It has been fixed by copying the helper_syscall behavior.
2015-12-24 16:00:22 +01:00
Nguyen Anh Quynh
ed319bda0b
x86: identity map guest address to host address. this fixes issue #300
2015-12-24 09:51:17 +08:00
Nguyen Anh Quynh
4117a111eb
mips: handle hook callback for blikely instruction properly. this fixes issue #330 , #331
2015-12-23 01:40:03 +08:00
JC Yang
8ef018a2cb
Fix possible wrong conditional branch in generated host code by fixing
...
the tcg_liveness_analysis().
Refer to https://github.com/unicorn-engine/unicorn/issues/287 for further info.
2015-12-21 18:01:01 +08:00
Hiroyuki Uekawa
6445c80b29
Build for Cygwin
2015-12-20 22:00:35 +09:00
Nguyen Anh Quynh
b72671c6d5
sparc, arm, m68k: check for exit request after every hooked instruction
2015-12-20 12:28:15 +08:00
Nguyen Anh Quynh
4f268febb4
mips: check for exit request after every hooked instruction. this fix issue #329
2015-12-20 12:23:36 +08:00
Nguyen Anh Quynh
771f9f7c3b
fix conflicts when merging map-ptr branch to master branch
2015-12-17 08:12:02 +08:00
Nguyen Anh Quynh
8d3265d9e1
mips: remove unused variable is_bc_slot
2015-12-16 23:06:17 +08:00
xorstream
395251d3e8
Fix codehook for MIPS instructions in delay slot
2015-12-15 17:02:56 +11:00
Nguyen Anh Quynh
74aeef217c
Merge branch 'master' of https://github.com/unicorn-engine/unicorn
2015-12-13 13:11:54 +08:00
Nguyen Anh Quynh
bc63102e50
mips: only patch instruction size when there is a callback on the instruction. this fixes issue #282
2015-12-13 13:11:40 +08:00
farmdve
8b79a872d0
Fix segfault introduced in my previous commits.
2015-12-11 22:35:25 +02:00
Nguyen Anh Quynh
f21fa3d966
do not flush TB when l1_map is uninitialized. this fixes issue #280 , #284
2015-12-12 03:09:38 +08:00
Nguyen Anh Quynh
a142611f56
sparc: set compute functions for icc_table[] & xcc_table[]. this fixes issue #289
2015-12-12 00:41:09 +08:00
Nguyen Anh Quynh
74986cc59a
g_free() can handle NULL pointer
2015-12-11 11:25:35 +08:00
farmdve
3e57615c76
Fix uc_mem_unmap memory leak and in uc_close.
...
It appears the problem is that we are not calling the memory region
destructor. After modifying memory_unmap to include the destructor call
for the memory region, the memory is freed.
Furthermore in uc_close we must explicitly free any blocks that were not
unmapped by the user to prevent leaks.
This should fix issue 305.
2015-12-11 02:42:31 +02:00
Ryan Hileman
230cbd5330
add permissions to map_ptr api
2015-11-28 11:28:31 -08:00
Nguyen Anh Quynh
4a759cebb5
set permission for memory region allocated by memory_map_ptr(). this fixes the segfault in sample_x86.c, function test_x86_map_ptr()
2015-11-28 17:11:27 +08:00
Ryan Hileman
6d21ebabea
implement host-controlled memory mapping for #261
2015-11-27 23:30:36 -08:00
Nguyen Anh Quynh
42b8879bb2
Merge branch 'master' of https://github.com/farmdve/unicorn into farmdve-master
2015-11-18 00:45:55 +08:00
Nguyen Anh Quynh
3302b9798c
add some debug helper on generated machine code
2015-11-18 00:43:18 +08:00
farmdve
65a649dec0
Fix issue #269
...
Patch from here
http://lists.nongnu.org/archive/html/qemu-devel/2015-11/msg03848.html
Also fix another potential issue with constants from
bbeb82395e (diff-9e0011b4d4a5890b309421630e6d86c3)
2015-11-17 18:34:38 +02:00
Nguyen Anh Quynh
edaea7020b
x86: on self-modifying code, generate JIT code until end of block. this fixes issue #266
2015-11-16 21:55:42 +08:00
Nguyen Anh Quynh
9099755ca1
flush JIT cache before finishing emulation. this fixes issue #263 . TODO: optimize this for better performance
2015-11-13 23:57:03 +08:00
farmdve
1ba39a582c
change tabs to whitespaces...
2015-11-13 16:53:01 +02:00
farmdve
661714d0c2
Potential fix for issue #262/#263
2015-11-13 16:51:59 +02:00
Nguyen Anh Quynh
d126644bb2
Merge pull request #259 from lunixbochs/multiarch
...
improve multiarch support
2015-11-12 15:11:06 +08:00
Ryan Hileman
ad5cd37551
improve multiarch support
2015-11-11 22:48:21 -08:00
Nguyen Anh Quynh
2f297bdd3a
handle some errors properly so avoid exit() during initialization. this fixes issue #237
2015-11-12 01:43:41 +08:00
Nguyen Anh Quynh
272293556a
do not abort() when memory is insufficient. this fixes issue #244
2015-11-10 11:44:29 +08:00
Nguyen Anh Quynh
938d0b89eb
x86: check for exit request after every hooked instruction. this should fix issue #232
2015-11-07 01:02:45 +08:00
Nguyen Anh Quynh
51323c9c17
x86: properly calculate EFLAGS when UC_HOOK_CODE is used. this should fix issue #246
2015-11-05 20:26:39 +08:00
Nguyen Anh Quynh
b66a323b19
do not free MemoryRegion in memory_unmap() because it will be unref later in memory_region_unref(). this fixes issue #202
2015-10-28 01:26:59 +08:00
Nguyen Anh Quynh
3a36e327ab
support memory redirection, so the issue #217 is fixed
2015-10-27 14:37:03 +08:00
Ryan Hileman
8c60d0dca5
allow setting x86 segment base to host-sized value
2015-10-23 00:15:08 -07:00
Nguyen Anh Quynh
142d3a6f72
arm: allow to read CPSR register
2015-10-17 15:59:27 +08:00
feliam
b43f89566f
Bugfix
2016-03-15 12:17:40 -03:00
Nguyen Anh Quynh
75e5fb466c
x86: fix writing to UC_X86_REG_FPCW
2016-03-14 09:27:46 +08:00
feliam
23b3f651f9
Indentation
2016-03-10 07:45:36 -03:00
feliam
0a3799eada
FPU control word and tags
2016-03-09 19:14:33 -03:00
feliam
ff66a72d7b
GDT/LDT/IDT/FPU access from python bingings
2016-03-09 18:07:38 -03:00
Nguyen Anh Quynh
600a1af710
Merge branch 'master' of https://github.com/unicorn-engine/unicorn
2015-10-03 15:46:19 +08:00
Nguyen Anh Quynh
9e64cba6ec
Rename some hook related enums:
...
- UC_ERR_READ_INVALID -> UC_ERR_READ_UNMAPPED
- UC_ERR_WRITE_INVALID -> UC_ERR_WRITE_UNMAPPED
- UC_ERR_FETCH_INVALID -> UC_ERR_FETCH_UNMAPPED
- UC_MEM_READ_INVALID -> UC_MEM_READ_UNMAPPED
- UC_MEM_WRITE_INVALID -> UC_MEM_WRITE_UNMAPPED
- UC_MEM_FETCH_INVALID -> UC_MEM_FETCH_UNMAPPED
- UC_HOOK_MEM_READ_INVALID -> UC_HOOK_MEM_READ_UNMAPPED
- UC_HOOK_MEM_WRITE_INVALID -> UC_HOOK_MEM_WRITE_UNMAPPED
- UC_HOOK_MEM_FETCH_INVALID -> UC_HOOK_MEM_FETCH_UNMAPPED
- UC_HOOK_MEM_INVALID -> UC_HOOK_MEM_UNMAPPED
This also renames some newly added macros to use _INVALID postfix:
- UC_HOOK_MEM_READ_ERR -> UC_HOOK_MEM_READ_INVALID
- UC_HOOK_MEM_WRITE_ERR -> UC_HOOK_MEM_WRITE_INVALID
- UC_HOOK_MEM_FETCH_ERR -> UC_HOOK_MEM_FETCH_INVALID
- UC_HOOK_MEM_ERR -> UC_HOOK_MEM_INVALID
Fixed all the bindings Java, Go & Python.
2015-09-30 14:46:55 +08:00
Nguyen Anh Quynh
3ca8774f1a
arm: properly handle the case when first insn in block is until address
2015-09-30 14:42:08 +08:00
Nguyen Anh Quynh
4a42041a83
handle 'bad ram pointer' case. this fixes issue #159
2015-09-29 18:22:22 +08:00
Nguyen Anh Quynh
2b0b4169bc
mips: advance PC for SYSCALL instruction. this fixes issue #157
2015-09-28 10:58:43 +08:00
Nguyen Anh Quynh
53ce8f217d
mips: handle delay slot better for branch instructions. this should fix issue #155
2015-09-27 15:05:40 +08:00
Nguyen Anh Quynh
728fe750b9
Merge pull request #140 from cherepanov74/master
...
Fixes crash on Windows 64bit
2015-09-27 11:10:02 +08:00
Nguyen Anh Quynh
886946dcf4
do not use syscall to quit emulation. this can fix issues #147 & #148
2015-09-26 16:49:00 +08:00
Nguyen Anh Quynh
15f087be74
Merge branch 'master' of https://github.com/unicorn-engine/unicorn
2015-09-26 10:44:15 +08:00
Nguyen Anh Quynh
90eb8f2e72
This commit continues the PR #111
...
- Allow to register handler separately for invalid memory access
- Add new memory events for hooking:
- UC_MEM_READ_INVALID, UC_MEM_WRITE_INVALID, UC_MEM_FETCH_INVALID
- UC_HOOK_MEM_READ_PROT, UC_HOOK_MEM_WRITE_PROT, UC_HOOK_MEM_FETCH_PROT
- Rename UC_ERR_EXEC_PROT to UC_ERR_FETCH_PROT
- Change API uc_hook_add() so event type @type can be combined from hooking types
2015-09-24 14:18:02 +08:00
Sean Heelan
dfb4a9d9ad
Revert "Remove uc_cb_eventmem_t as it is identical to uc_cb_hookmem_t"
...
As pointed out by aquynh the return types are actually different. A
uc_cb_eventmem_t callback returns a bool, while uc_cb_hookmem_t has a
void return type.
This reverts commit cb2b97f26c
.
2015-09-23 12:51:47 +07:00
Sean Heelan
cb2b97f26c
Remove uc_cb_eventmem_t as it is identical to uc_cb_hookmem_t, as per
...
issue #111
2015-09-22 12:37:05 +07:00
Nguyen Anh Quynh
14a01b5186
mips: handle delay slot so do not duplicate calling instruction handler. this fixes issue #133
2015-09-22 11:59:53 +08:00
Nguyen Anh Quynh
a853eb6363
mips, m68k: early check to see if the address of BB is the until address
2015-09-22 10:24:26 +08:00
danghvu
0c67f41ed9
Fix issue #118
2015-09-21 20:30:05 -05:00
Nguyen Anh Quynh
d7d4be25b1
arm64: early check to see if the address of this block is the until address
2015-09-21 10:26:33 +08:00
Nguyen Anh Quynh
9aa04d9496
tb_gen_code(): only check to link next page if tb->size > 0 (so we skip empty block)
2015-09-20 00:05:17 +07:00
Nguyen Anh Quynh
5005b4a6e2
arm: early check to see if the address of this block is the until address
2015-09-17 09:16:57 +07:00
Nguyen Anh Quynh
d6b9c31dc9
sparc: more cleanup
2015-09-16 16:04:12 +07:00
mothran
893e6abcbd
first atttempt at SPARC64 fixes, no longer SEGV's, set CPU model to: Sun UltraSparc IV
2015-09-15 23:12:03 -07:00
mothran
f4894a1c77
removed unneed cases in the switch statement
2015-09-14 20:44:50 -07:00
mothran
6b521e9e9b
update the sparc reg read/write to include o/l/i registers
2015-09-14 20:03:32 -07:00
cherepanov74
2fc483ec47
Fixes crash on Windows 64bit
2015-09-14 20:42:29 +02:00
mothran
7dc41a8e4e
update the regwptr upon reset
2015-09-13 18:10:28 -07:00
mothran
657a6c3e25
modified the sparc reg get/set functions to use the current reg window ptr
2015-09-12 10:29:35 -07:00
Nguyen Anh Quynh
ab337ef65a
Merge branch 'master' of https://github.com/unicorn-engine/unicorn
2015-09-11 15:58:58 +08:00
mothran
afecfee565
added SPARC sp / fp registers, also updated uint32_t's to uint64_t's in SPARC64
2015-09-10 23:20:52 -07:00
Nguyen Anh Quynh
d7ef204398
rename error codes ERR_MEM_READ, ERR_MEM_WRITE, ERR_MEM_FETCH
2015-09-09 16:25:48 +08:00
Nguyen Anh Quynh
d3d38d3f21
handle read/write/fetch from unaligned addresses. this adds new error codes UC_ERR_READ_UNALIGNED, UC_ERR_WRITE_UNALIGNED & UC_ERR_FETCH_UNALIGNED
2015-09-09 15:52:15 +08:00
Nguyen Anh Quynh
18b6680e96
mips: disable debug output
2015-09-08 23:56:25 +08:00
Nguyen Anh Quynh
2929138c99
sparc: do not call INSN handler on until-address, and verify until-address early when translating block in JIT frontend.
2015-09-08 13:26:53 +08:00
Nguyen Anh Quynh
7a5d790ade
rename UC_MEM_EXE to UC_MEM_FETCH
2015-09-08 12:55:56 +08:00
Nguyen Anh Quynh
c1dd9fbfdf
arm64: handle SP register. this fixes issue #122
2015-09-08 08:40:42 +08:00
Nguyen Anh Quynh
6c132bc673
arm: fix #114 by enabling cortex-a15 model. FIXME: enable this on demand with an API
2015-09-08 01:08:37 +08:00
Nguyen Anh Quynh
3ac8615cbb
arm: handle invalid instruction. this fixes issue #114
2015-09-08 00:43:09 +08:00
Nguyen Anh Quynh
9e4ed32e8a
x86: handle SYSCALL even if there is no handler
2015-09-07 10:19:45 +08:00
Nguyen Anh Quynh
a166c24f8e
x86: correct EIP of INT instruction by updating it only after calling interrupt handler
2015-09-06 14:58:11 +08:00
Chris Eagle
e9c6b11506
add mem_api sample program and fix check for wrong NX related constant in cputlb.c
2015-09-04 10:27:03 -07:00
Chris Eagle
8cfd902e4b
Move mem_xxx samples to regress. Add check to only flush tlb when unmapping if there is a current cpu
2015-09-04 00:48:24 -07:00
Nguyen Anh Quynh
022f8d82d1
handle memory fetch as invalid memory access. now we can also report error if exec memory is unmapped (UC_ERR_MEM_FETCH)
2015-09-04 11:55:17 +08:00
Nguyen Anh Quynh
84e3b5c897
cast all the values to write to registers in uc_reg_write() to unsigned type. this fixes issue #98
2015-09-04 11:17:08 +08:00
Jonathon Reinhart
da46071c7d
bring new code and samples up-to-date with API changes
2015-09-03 22:15:49 -04:00
Jonathon Reinhart
5e9d07a40a
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
2015-09-03 22:01:52 -04:00
Chris Eagle
2da46caef7
smooth out split_region related code
2015-09-03 12:26:36 -07:00
Nguyen Anh Quynh
6ca85a72ed
simplify uc_mem_protect() & uc_mem_unmap()
2015-09-04 01:02:38 +08:00
Nguyen Anh Quynh
9f9d57e84f
cleaning & indentation
2015-09-03 18:16:49 +08:00
Nguyen Anh Quynh
b8d4240240
solve merging conflict
2015-09-03 18:05:21 +08:00
Jonathon Reinhart
bd0a6921cc
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
2015-09-02 21:04:43 -04:00
Nguyen Anh Quynh
be659d201d
fix confusion betweet UC_MEM_xxx & UC_HOOK_MEM_xxx. fix issue #93
2015-09-03 01:13:57 +08:00
Nguyen Anh Quynh
2d9db36a2b
fix some errors introduced by the last commit on qemu-thread-win32.c
2015-09-02 01:34:23 -07:00
Nguyen Anh Quynh
8b39ec5b0c
initial support to remove a static variable in qemu-thread-win32.c
2015-09-02 16:13:12 +08:00
Nguyen Anh Quynh
a94e31165d
x86: fix issue #95
2015-09-02 12:00:43 +08:00
Ryan Hileman
db8f499fe9
fix crash on some SSE instructions
2015-09-01 19:12:51 -07:00
Chris Eagle
49d1fa7ebd
Merge branch 'master' into mem_map_ex_cse
2015-09-01 12:13:53 -07:00
Chris Eagle
2c4f3769d4
clean up mem_protect related constants and error codes
2015-09-01 12:10:09 -07:00
Jonathon Reinhart
2c802a3e4b
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
...
# Conflicts:
# qemu/target-i386/unicorn.c
2015-09-01 13:17:03 -04:00
Nguyen Anh Quynh
90fc201f8d
x86: enable bunch of instructions via CPUID. this fixes issue #91
2015-09-02 00:16:45 +08:00
Chris Eagle
73027026ce
Merge branch 'master' into mem_map_ex_cse
2015-08-31 23:49:54 -07:00
Chris Eagle
658e399776
clean up mem_protect related constants
2015-08-31 19:08:48 -07:00
Nguyen Anh Quynh
bea73ef213
stop emulation when hitting invalid code address. this fixes issue #82
2015-09-01 00:17:55 +08:00
Chris Eagle
b27e987932
Add target_page_size member to uc_struct to track TARGET_PAGE_SIZE
2015-08-31 01:00:44 -07:00
Chris Eagle
410e317e92
dont use explicit page size, use TARGET_PAGE_SIZE
2015-08-30 21:24:14 -07:00
Chris Eagle
9e4e96ff47
final updates for uc_mem_unmap, uc_mem_protect, and support ro UC_PROT_EXEC permission
2015-08-30 19:50:18 -07:00
mothran
6aa2b73bea
removed ifdef for x64 in fpu saving
2015-08-30 19:39:46 -07:00
mothran
e1ab761e8a
fixed typo
2015-08-30 19:32:39 -07:00
mothran
2b6f806759
removed testing printf
2015-08-30 19:22:41 -07:00
mothran
4cd5fa3811
fpip x64 fxsave working with using hflags to check CPU mode
2015-08-30 18:56:55 -07:00
mothran
912faf2c3c
after closer review, in x64 the the op size is 32 so data32 is set, can removed the unicorn dependency and regress/fpu_ip64.py still works
2015-08-30 18:04:28 -07:00
mothran
2febbb6021
Merge branch 'master' of github.com:unicorn-engine/unicorn into fpip_update
2015-08-30 11:13:23 -07:00
Chris Eagle
0a60fa4c8a
fix perms
2015-08-30 00:22:49 -07:00
Chris Eagle
942de0f2ae
implemented basic block splitting, uc_mem_unmap should work for sub=blocks or across contiguous blocks
2015-08-30 00:22:18 -07:00
Jonathon Reinhart
3bd705a060
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
2015-08-30 00:23:51 -04:00
Chris Eagle
4a680b9277
Merge branch 'master' into mem_map_ex_cse
2015-08-29 21:22:33 -07:00
Chris Eagle
6beb1b8a13
intermediate commit, working unmap of complete blocks, still need sub-blocks, and cross block
2015-08-29 21:17:30 -07:00
Nguyen Anh Quynh
c23d387e2f
remove redundant uc_struct.ram
2015-08-30 10:51:28 +08:00
mothran
b7d60313b5
added 64 bit mode to the fstenv helper function, also a fpu_ip64.py regress script
2015-08-29 01:56:36 -07:00
Chris Eagle
592cbc6eaf
conflict resolution with merge master
2015-08-28 23:51:56 -07:00
mothran
79184ff23d
Merge branch 'master' of github.com:unicorn-engine/unicorn into fpip_update
2015-08-28 23:40:25 -07:00
Chris Eagle
986096d443
fix file perms
2015-08-28 21:05:38 -07:00
Chris Eagle
94ac0f02e6
file permissions changes
2015-08-28 20:03:36 -07:00
Chris Eagle
eab6167241
Merge branch 'master' into mem_map_ex_cse
2015-08-28 19:00:39 -07:00
Chris Eagle
9ba59e4988
Step one towards uc_mem_protect, uc_mem_unmap, and support for UC_PROT_EXEC and NX regions
2015-08-28 18:59:45 -07:00
Nguyen Anh Quynh
6bd5e2efa7
chmod -x qemu/softmmu_template.h
2015-08-29 09:28:32 +08:00
mothran
feb8ced027
fixed the FPIP updates to correctly only work with non-control instructions and make sure the pc addr is correct
2015-08-28 10:39:11 -07:00
Nguyen Anh Quynh
b69180ad5a
Merge branch 'mem_map_ex' of https://github.com/cseagle/unicorn into cseagle-mem_map_ex
2015-08-28 18:47:18 +08:00
Chris Eagle
3452b47f7c
Add code to handle non-readable memory
2015-08-28 03:42:25 -07:00
mothran
933ef379b4
restricted fpip updates to only non-control instructions
2015-08-28 03:19:10 -07:00
Nguyen Anh Quynh
3b5df362d7
chmod -x <some source code>
2015-08-28 18:12:56 +08:00
Nguyen Anh Quynh
96a274c4aa
Merge branch 'mem_map_ex' of https://github.com/cseagle/unicorn into cseagle-mem_map_ex
2015-08-28 18:11:10 +08:00
Nguyen Anh Quynh
4a1c5ff071
x86: verify until address early when translating block in frontend. this should fix issue #63
2015-08-28 16:06:06 +08:00
Chris Eagle
9530b2daff
Remove MemoryBlock struct by consolidating in MemoryRegion. add new API uc_mem_protect. Add regress/mem_protect.c. Drop UC_PROT_EXEC for time being
2015-08-27 23:19:32 -07:00
mothran
59b09a71bf
first shot at getting FPIP working, need to remove all FP control instructions from being updated
2015-08-27 21:54:23 -07:00
Chris Eagle
bf32753c29
Merge branch 'master' into mem_map_ex
2015-08-27 19:17:06 -07:00
Chris Eagle
686acb7e6e
Detect all occurences of write to read only page. Add callback capability on write to read only. Add new error type UC_ERR_MEM_WRITE_RO and new access type UC_MEM_WRITE_RO for use in callback
2015-08-27 18:03:17 -07:00
Nguyen Anh Quynh
b335cf016c
do not generate basic-block callback when translation is broken in the middle due to full cache (all the remaining archs)
2015-08-27 21:09:00 +08:00
Chris Eagle
4b529bc56c
Free up all MemoryRegion* when uc is closed
2015-08-26 14:09:46 -07:00
Chris Eagle
00944b6cde
Add ability to mark memory are read only. Add new API uc_mem_map_ex to allow permissions to be passed. Change MemoryBlock to track created MemoryRegions. Add regress/ro_mem_test.c
2015-08-26 13:29:54 -07:00
Chris Eagle
b39f5d2a91
When checking for invalid memory always do the faster check of whether we are hooking env->uc->hook_mem_idx before doing the expensive check of scanning the memory map
2015-08-26 08:55:19 -07:00
Chris Eagle
095cdb5f9d
Merge remote-tracking branch 'upstream/master'
2015-08-26 08:25:37 -07:00
Jonathon Reinhart
8918deb1b2
change uch to uc_struct (target-m68k)
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
fcb099805f
change uch to uc_struct (qemu)
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
b57662e43d
change uch to uc_struct (target-i386)
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
e7a8eb8976
change uch to uc_struct (target-sparc)
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
15a774ac90
change uch to uc_struct (target-mips)
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
622d5cd5f9
change uch to uc_struct (target-arm)
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
6c4726c88e
change uch to uc_struct (ioport.c)
2015-08-26 09:02:16 -04:00
Nguyen Anh Quynh
192f07c503
reset invalid_error after callbacks decide to continue after invalid memory accesses
2015-08-26 16:15:38 +08:00
Chris Eagle
03e8b28d71
First cut at cleaning up uc_mem_map, eliminate map_begin and map_end, move tracking inside uc struct
2015-08-25 21:52:18 -07:00
Nguyen Anh Quynh
cc5d28e112
mips: fix issue #39
2015-08-26 09:39:09 +08:00
Nguyen Anh Quynh
2fac7fc2e4
x86: better support for 16bit mode
2015-08-26 00:39:46 +08:00
Nguyen Anh Quynh
39d3856871
when block size is unknown because the translation cache is full, assign it value 0
2015-08-25 16:10:05 +08:00
Nguyen Anh Quynh
c3e95ec34e
x86: do not generate basic-block callback when translation is broken in the middle due to full cache
2015-08-25 14:50:55 +08:00
Jonathon Reinhart
9163bba812
restore mode of .[ch] files
...
These were marked as executable in 5c3b6819
, likely due to a Windows
filesystem being involved. This can be avoided:
http://stackoverflow.com/q/1580596/119527
2015-08-24 21:19:12 -04:00
Chris Eagle
5c3b681945
Add const to uc_reg_write and derivitives
2015-08-24 09:42:50 -07:00
Nguyen Anh Quynh
9d9c0d1a25
uc_emu_start() report error on illegal instruction at the output
2015-08-25 00:02:31 +08:00
pancake
c5d99777f4
Use const in uc_mem_write and derivates
2015-08-24 17:02:14 +02:00
mothran
2516de7ed8
renamed m68k enum constants
2015-08-23 21:56:24 -07:00
mothran
a167f7c456
renames the register constants so unicorn and capstone can compile together
2015-08-23 21:36:33 -07:00
Nguyen Anh Quynh
7ca9a07e1b
x86: enable SSE. this fixes issue #3
2015-08-23 10:41:14 +08:00
Nguyen Anh Quynh
4701fb80b4
code style: convert tabs to spaces
2015-08-23 09:06:31 +08:00
Nguyen Anh Quynh
e1baf2f36b
x86: support hooking SYSCALL/SYSENTER instructions. we no longer share the SYSCALL callback with interrupt instructions
2015-08-23 01:19:40 +08:00
Ryan Hileman
0ac3cf99d4
call int80 callback from x86_64 syscall helper
2015-08-21 16:26:02 -07:00
Nguyen Anh Quynh
344d016104
import
2015-08-21 15:04:50 +08:00