Commit Graph

2005 Commits

Author SHA1 Message Date
Charles Ferguson
f0b509c176
Ensure that hooks are unaffected by a request to stop emulation. (#1154)
This change removes the check for stop requests from the hook loop
macro.

Requests to stop emulation (uc_emu_stop) should only affect whether
the emulation stops. This isn't the case at present for the invocation
of hooks. If emulation is requested to be stopped (which is indicated
by `uc->stop_request`), the hooks will skip all execution. This means
that when the emulation stop is requested, some expected operations
may not occur before the emulation exits - leaving the system in an
inconsistent or broken state.

This is particularly obvious in the case where a CPU interrupt is
required, and a hook has been registered for such cases. The expected
operation is that the hook be called, and no CPU exception be raised
(because the hook has handled it). However, because of the short-cut
in the case where the `uc_emu_stop` function has been called out of
band (eg on another thread), this hook would not be called. In such
cases the execution would terminate with an error that an 'unhandled
CPU exception' occurred, and the hook would never have been called.

This probably affects other parts of the system, such as hooks which
handle remapping of memory on demand (UC_HOOK_MEM_READ_UNMAPPED and
friends) where the remap would not happen and instead an error about
the unmapped memory would be raised.

In all cases, it makes sense that execution continue normally until
the outer loop which controls the execution determines that the
emulation should stop. This will mean that for any given sequence of
events all the emulation operations are completed deterministically
regardless of when the stop request was received.
2020-05-05 08:36:50 +08:00
Dominik Maier
625399774c
X64 base regs (#1166)
* x86: setup FS & GS base

* Fixed base register writes for x64, removed then for x16/x32 (the don't exist there?)

* FS reg comes before GS so the base regs do so, too

* added shebang to const_generator.py

* Added base regs to and added 'all' support to const_generator

Co-authored-by: naq <aquynh@gmail.com>
2020-05-05 08:34:51 +08:00
Charles Ferguson
b7e64f3c99
Fix block hooks being called twice after an early exit from execution. (#1194)
Ensure the TCG exit flag is cleared at the end of cpu_exec. This ensures
that subsequent calls are not polluted by the prior call to request an
early exit. The symptoms of the problem being addressed here are that
after a cpu_exit call triggered within a hook there may still be a
pending tcg_exit_req flag set. This then causes a block to start its
execution and then be aborted (from which point it'll continue because
there's no other condition to service). The start of the execution
causes the block hook to be called, no actual code to be run, and then
the block started again with another block hook call.

This change is discussed in ticket 1193:
    https://github.com/unicorn-engine/unicorn/issues/1193
2020-05-05 08:32:12 +08:00
Dominik Maier
9fedbd96f4
fixed leaks in test cases (#1247) 2020-05-02 18:18:18 +08:00
Nguyen Anh Quynh
1ad541cd55 delete .appveyor.yml0 2020-05-01 20:26:53 +08:00
Nguyen Anh Quynh
d7e61123ac cmake: spacing 2020-05-01 20:18:07 +08:00
Nguyen Anh Quynh
0cd66bab8a fix qemu/scripts/qapi-build.sh 2020-04-30 14:00:48 +08:00
Nguyen Anh Quynh
00bbe2ce7d we do not need Python to build anymore 2020-04-30 13:58:33 +08:00
Nguyen Anh Quynh
05013b8e47 Merge branch 'master' of github.com:unicorn-engine/unicorn 2020-04-30 11:13:42 +08:00
Nguyen Anh Quynh
27167a8ccb delete unused qemu/scripts/qapi-event.py 2020-04-30 11:13:28 +08:00
Chen Huitao
d5f088c85f
add host detection in CMakeLists.txt (#1244)
* fix finding python path which only has python3.

* add host detection.

* add ia64, ppc, s390 host detections.
2020-04-29 08:47:48 +08:00
Nguyen Anh Quynh
0d93f055b4 cleanup qemu/configure 2020-04-28 16:46:41 +08:00
Nguyen Anh Quynh
2b13230a4d qemu/Makefile cleanup 2020-04-28 13:50:50 +08:00
Nguyen Anh Quynh
21b5c122a3 qemu/Makefile cleanup 2020-04-28 13:34:16 +08:00
Nguyen Anh Quynh
06d741242d qemu/Makefile cleanup 2020-04-28 13:30:18 +08:00
Chen Huitao
414c230b59
fix m68k func name (#1245)
* fix finding python path which only has python3.

* fix m68k func name.
2020-04-28 09:51:45 +08:00
Nguyen Anh Quynh
9a70675975 qemu/Makefile cleanup 2020-04-28 09:39:10 +08:00
Nguyen Anh Quynh
49473d7780 Merge branch 'master' of github.com:unicorn-engine/unicorn 2020-04-28 08:58:41 +08:00
Nguyen Anh Quynh
709d081972 more qemu/Makefile* cleanup 2020-04-28 02:38:51 +08:00
Nguyen Anh Quynh
dd28727e99 more qemu/Makefile* cleanup 2020-04-28 01:53:39 +08:00
Nguyen Anh Quynh
cdd9340113 cleanup qemu Makefile* 2020-04-27 23:01:26 +08:00
Nguyen Anh Quynh
d2c66b8386 cleanup qemu/configure 2020-04-27 20:44:11 +08:00
Chen Huitao
8905ecd5e4
move some operations after hook callback (#1243)
* fix finding python path which only has python3.

* move some operations after hook callback.
2020-04-27 19:54:58 +08:00
Nguyen Anh Quynh
5826b1fa54 Merge branch 'master' of github.com:unicorn-engine/unicorn 2020-04-27 01:51:59 +08:00
Nguyen Anh Quynh
cc5bfbc844 delete unused file i386-softmmu.mak 2020-04-27 01:31:39 +08:00
chfl4gs
c5adcad5a2
fix travis-ci cmake path (#1242)
* Travis-CI Migration (#1230)

* Travis-CI Migration

* Travis-CI addition cmake Linux

* Travis-CI cmake fix
2020-04-27 00:01:39 +08:00
chfl4gs
bc04300591
Travis-CI - Cmake (#1241)
* Travis-CI Migration (#1230)

* Travis-CI Migration

* Travis-CI addition cmake Linux
2020-04-26 17:52:22 +08:00
Nguyen Anh Quynh
0ac28359a3 Makefile cleanup 2020-04-25 17:54:14 +08:00
Nguyen Anh Quynh
86923806f2 rename .appveyor.yml to .appveyor.yml0 2020-04-25 00:17:01 +08:00
Nguyen Anh Quynh
ec59efe6d4 rename .appveyor.yml to temporarily deactive Appveyor 2020-04-24 23:43:50 +08:00
chfl4gs
17b2aa8c36
Travis-CI Migration (#1230) (#1240)
* Travis-CI Migration
2020-04-24 21:55:54 +08:00
Nguyen Anh Quynh
d2571117e9 Merge branch 'master' of github.com:unicorn-engine/unicorn 2020-04-24 18:07:04 +08:00
Nguyen Anh Quynh
d947b5f76f cleanup qemu Makefile 2020-04-24 18:06:21 +08:00
Pedro Tammela
18aa2627f7
fix binding install on python2 (#1231) 2020-04-24 17:15:12 +08:00
Nguyen Anh Quynh
dff96a24a1 cleanup qemu/Makefile* 2020-04-24 15:34:06 +08:00
Chen Huitao
d13609d49d
fix mingw gcc error (#1238)
* fix finding python path which only has python3.

* read deps from files of qemu, fixed library deps.

* cleanup code of get objs, restore old qemu/Makefile.

* update some target name, remove dup empty line.

* update .PHONY targets.

* compatible with mingw-gcc compler.

* move part of CC to head.

* restore part of CC. use uname -s to detect mingw.
2020-04-21 20:12:57 +08:00
Nguyen Anh Quynh
b0fb37921b Merge branch 'master' of github.com:unicorn-engine/unicorn 2020-04-21 00:56:31 +08:00
Nguyen Anh Quynh
5a854720d2 README: try to put CI badge on the same line with Gitter 2020-04-21 00:56:16 +08:00
Chen Huitao
ca5acd2545
fix mingw gcc error (#1237)
* fix finding python path which only has python3.

* read deps from files of qemu, fixed library deps.

* cleanup code of get objs, restore old qemu/Makefile.

* update some target name, remove dup empty line.

* update .PHONY targets.

* compatible with mingw-gcc compler.

* move part of CC to head.
2020-04-21 00:52:28 +08:00
Nguyen Anh Quynh
b43bc6f324 README: remove Appveyor badge 2020-04-21 00:48:51 +08:00
chfl4gs
80f043f8d0
Travis-CI Migration (#1230)
* Travis-CI Migration

* allow_failures for osx
2020-04-21 00:47:08 +08:00
Nguyen Anh Quynh
dc8e237ea2 Makefile: silent printf 2020-04-20 21:48:07 +08:00
Chen Huitao
cc22b1a557
fix deps of library files (#1235)
* fix finding python path which only has python3.

* read deps from files of qemu, fixed library deps.

* cleanup code of get objs, restore old qemu/Makefile.

* update some target name, remove dup empty line.

* update .PHONY targets.
2020-04-20 21:46:40 +08:00
Nguyen Anh Quynh
d4b9f436f0 more ppc cleanup 2020-04-13 17:55:16 +08:00
Nguyen Anh Quynh
148fa4d66d cleanup: we do not support PowerPC 2020-04-13 17:37:06 +08:00
Chen Huitao
b5f9441689
fix some oss-fuzz bugs (#1233)
* fix oss-fuzz 18138.

* fix oss-fuzz 20079.

* fix oss-fuzz 20209.

* fix oss-fuzz 20210.

* fix oss-fuzz 20262.

* rollback.

* rollback.

* fix oss-fuzz 20079.

* fix oss-fuzz 20179.

* fix oss-fuzz 20195.

* fix oss-fuzz 20206.

* fix oss-fuzz 20207.

* fix oss-fuzz 20265.

* fix oss-fuzz 20285.

* fix oss-fuzz 20868.

* fix oss-fuzz 20908.

* fix oss-fuzz 20909.

* fix oss-fuzz 20914.

* fix oss-fuzz 20922.

* fix oss-fuzz 20928.

* remove warnigs.

* fix oss-fuzz 20961.

* fix oss-fuzz 21005.

* remove clang warnings.

* fix oss-fuzz 21043.

* fix oss-fuzz 21047.

* fix oss-fuzz 21050.

* fix oss-fuzz 21219.

* fix oss-fuzz 21380.

* fix oss-fuzz 21455.

* fix oss-fuzz 21458.

* fix oss-fuzz 21650.

* fix oss-fuzz 21651.
2020-04-13 16:34:07 +08:00
Nguyen Anh Quynh
f0e47055c8 ready to tag rc3 2020-04-08 22:52:43 +08:00
Chen Huitao
4d7193eeb3
fix some oss-fuzz (#1229)
* fix oss-fuzz 18138.

* fix oss-fuzz 20079.

* fix oss-fuzz 20209.

* fix oss-fuzz 20210.

* fix oss-fuzz 20262.

* rollback.

* rollback.

* fix oss-fuzz 20079.

* fix oss-fuzz 20179.

* fix oss-fuzz 20195.

* fix oss-fuzz 20206.

* fix oss-fuzz 20207.

* fix oss-fuzz 20265.

* fix oss-fuzz 20285.

* fix oss-fuzz 20868.

* fix oss-fuzz 20908.

* fix oss-fuzz 20909.

* fix oss-fuzz 20914.

* fix oss-fuzz 20922.

* fix oss-fuzz 20928.

* remove warnigs.

* fix oss-fuzz 20961.

* fix oss-fuzz 21005.

* remove clang warnings.

* fix oss-fuzz 21043.

* fix oss-fuzz 21047.

* fix oss-fuzz 21050.

* fix oss-fuzz 21219.

* fix oss-fuzz 21380.

* fix oss-fuzz 21455.

* fix oss-fuzz 21458.
2020-04-08 03:37:12 +08:00
Chen Huitao
930cb9ada8
fix some oss-fuzz (#1224)
* fix oss-fuzz 18138.

* fix oss-fuzz 20079.

* fix oss-fuzz 20209.

* fix oss-fuzz 20210.

* fix oss-fuzz 20262.

* rollback.

* rollback.

* fix oss-fuzz 20079.

* fix oss-fuzz 20179.

* fix oss-fuzz 20195.

* fix oss-fuzz 20206.

* fix oss-fuzz 20207.

* fix oss-fuzz 20265.

* fix oss-fuzz 20285.

* fix oss-fuzz 20868.

* fix oss-fuzz 20908.

* fix oss-fuzz 20909.

* fix oss-fuzz 20914.

* fix oss-fuzz 20922.

* fix oss-fuzz 20928.

* remove warnigs.

* fix oss-fuzz 20961.

* fix oss-fuzz 21005.

* remove clang warnings.

* fix oss-fuzz 21043.

* fix oss-fuzz 21047.

* fix oss-fuzz 21050.

* fix oss-fuzz 21219.
2020-03-24 16:23:04 +08:00
Nguyen Anh Quynh
8ff326a2a3
fix finding python path which only has python3. (#1220) 2020-03-06 01:48:53 +08:00