Multi-CPU emulator engine based on QEMU

Edit Package unicorn
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.

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's avatar Luigi Baldoni (alois) accepted request 1136482 from Sarah Kriesch's avatar 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
openSUSE Build Service is sponsored by