Multi-CPU emulator engine based on QEMU
http://www.unicorn-engine.org
Unicorn is a lightweight multi-platform, multi-architecture CPU emulator
framework.
Highlight features:
* Multi-architectures: Arm, Arm64 (Armv8), M68K, Mips, Sparc
& X86 (X86_64 included).
* Clean/simple/lightweight/intuitive architecture-neutral API.
* Implemented in pure C language, with bindings for Rust, Haskell,
Ruby, Python, Java, Go, .NET, Delphi/Pascal & MSVC available.
* Native support for Windows & *nix (with Mac OSX, Linux, *BSD
& Solaris confirmed).
* High performance by using Just-In-Time compiler technique.
* Support fine-grained instrumentation at various levels.
* Thread-safe by design.
* Distributed under free software license GPLv2.
-
4
derived packages
- Download package
-
Checkout Package
osc -A https://api.opensuse.org checkout Virtualization/unicorn && cd $_
- Create Badge
Refresh
Refresh
Source Files
Filename | Size | Changed |
---|---|---|
openSUSE-unicorn-python-rm-distutils.patch | 0000008937 8.73 KB | |
unicorn-2.0.1.post1.tar.gz | 0004071380 3.88 MB | |
unicorn.changes | 0000005521 5.39 KB | |
unicorn.spec | 0000004147 4.05 KB |
Latest Revision
Luigi Baldoni (alois)
accepted
request 1136482
from
Sarah Kriesch (AdaLovelace)
(revision 8)
- Adopt source URL - Add "-latomic" linker flag to fix #1840 - Fix the python bindings, ensure pure platform tag for installability on non-x86 distributions by adding openSUSE-unicorn-python-rm-distutils.patch - Fix the sover - Update to version 2.0.1 * No longer require Python to build * Fix recursive UC_HOOK_MEM callbacks for cross pages access * Remove UC_ERR_TIMEOUT, so timeout on uc_emu_start() is not considered error * Added UC_QUERY_TIMEOUT to query exit reason * Fix UAF when deleting hook while in hook callback * Ensure that hooks are unaffected by a request to stop emulation. * Fix block hooks being called twice after an early exit from execution. * Add cmake option to build Unicorn as a static library * Fix error handling of mmap() * uc_emu_start() can be reentrant * Fix naming conflicts when built with systemd * Add uc_context_free() API * Fix Java binding compilation * Fix build with LLVM on Powerpc64(le) * cmake: enable UNICORN_HAS_ARMEB when ARM is on * Fix wrong sync after UC_ERR_[READ, WRITE, FETCH]_[UNMAPPED, PROT] * Support querying architecture mode besides arm * Fix pausing within Thumb2 ITE blocks * Python: Remove UC_ERR_TIMEOUT * Rust binding * Update ISA of all existing architectures * Support 2 new architectures in PowerPC & RISCV * Set "zip_false" and "is_pure" to "False" to avoid issues on some Linux distributions. * Link to libm to make sure our libraries work. * Support to read ST registers in rust bindings. * Fix a memory leak in uc_close * Support hooking CPUID instruction. * New API: uc_ctl, by which you could control CPU models, TB caches or multiple exits etc. * New Hook: UC_HOOK_EDGE_GENERATED, UC_HOOK_TCG_OPCODE * RISCV CSR read/write. * Support reading MIPS hi/lo regs. * OSS Fuzzing building support. * MSVC 32bit and Android build support. * Introduce clang-format. * Add a go.mod for go bindings. * Use binary search to find mappings. * Fix tb not invalidated when exiting. * Fix bindings makefile. * Fix uc_mem_protect not working. * Rust bindings improvements. * Allow R/W to cp15 registers. * Fix wrong MMIO offset for 32bit targets. * Support nested uc_emu_start calls without context save/restore * Allow writing to CPSR to switch bank registers. * CPUID hook now may return a bool to indicate whether skipping the CPUID instruction. * Correctly generate static archives for the static build and have CI auto-tested. * Rust bindings revised. * Compatible with clang-cl compiler. * Fix exits wrongly removed in nested uc_emu_start * Fix wrong internal states on nested uc_emu_start. * TriCore Support * Build both shared library and static archive as unicorn1 does. * Fix the value collision between UC_MODE_ARMBE8 and UC_MODE_ARM926 * Advance PPC32 PC. * Fix python sdist and add aarch64 Linux wheels. Note pip can build Unicorn2 on M1 now! * C# binding is refined and upgraded to .Net 6. * Fix endianness when writing PPC32 CR register. * Fix the endianness detection in tests. * Support building & running on BE hosts. * SystemZ (aka. s390x) support. * ARM/AARCH64 coprocessor registers read/write support. * Correctly support ARM big endian and drops armeb-softmmu and aarch64eb-softmmu * Support reads and writes over all Arm SIMD registers * RISCV: - Update pc when exiting execution. - Add RISCV control status registers to enable floating. - After ecall, pc not advanced. * X86: - Support read/write STN registers and X64 base regs - Fix 64bit fstenv - Fix IP value of 16bit mode - Fix FPIP & FTST instructions * ARM64: - Support some new registers - Fix APSR handling - Support Arm BE8 mode - Remove patch unicorn.gcc.patch - Enable s390x and PPC - Remove python-setuptools and python-devel from BuildRequires
Comments 0