mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
gnu: Add python-pyvex.
* gnu/packages/patches/python-pyvex-remove-angr-dependency.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/python-xyz.scm (python-pyvex): New variable. Signed-off-by: jgart <jgart@dismail.de>
This commit is contained in:
parent
c31c325a12
commit
0fc16f1b0e
3 changed files with 118 additions and 0 deletions
|
@ -1981,6 +1981,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/python-pytorch-runpath.patch \
|
||||
%D%/packages/patches/python-pytorch-system-libraries.patch \
|
||||
%D%/packages/patches/python-pytorch-without-kineto.patch \
|
||||
%D%/packages/patches/python-pyvex-remove-angr-dependency.patch \
|
||||
%D%/packages/patches/python-robotframework-atest.patch \
|
||||
%D%/packages/patches/python-robotframework-source-date-epoch.patch \
|
||||
%D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
This patch removes the angr dependency from the pyvex these, thus
|
||||
resolving a circular dependency (as angr depends on pyvex). This
|
||||
patch has been taken from upstream.
|
||||
|
||||
This patch is a squashed version of the following upstream patches:
|
||||
|
||||
* https://github.com/angr/pyvex/commit/61fb26f223a8d8a276b702d2448a12e02c5c9c6b
|
||||
* https://github.com/angr/pyvex/commit/a1fb2a4d0826b0e43bd8bbdd00b6db032643ec95
|
||||
|
||||
diff --git a/tests/test_spotter.py b/tests/test_spotter.py
|
||||
index 9271ccd..bed7dd4 100644
|
||||
--- a/tests/test_spotter.py
|
||||
+++ b/tests/test_spotter.py
|
||||
@@ -1,6 +1,5 @@
|
||||
import os
|
||||
|
||||
-import angr
|
||||
import archinfo
|
||||
|
||||
import pyvex
|
||||
@@ -98,53 +97,28 @@ class CortexSpotter(GymratLifter):
|
||||
register(CortexSpotter, "ARMEL")
|
||||
|
||||
|
||||
-def test_full_binary():
|
||||
- p = angr.Project(
|
||||
- os.path.join(test_location, "armel", "RTOSDemo.axf.issue_685"),
|
||||
- arch="ARMEL",
|
||||
- auto_load_libs=False,
|
||||
- )
|
||||
- st = p.factory.call_state(0x000013CE + 1)
|
||||
- b = st.block().vex
|
||||
- simgr = p.factory.simulation_manager(st)
|
||||
- simgr.step()
|
||||
- assert b.jumpkind == "Ijk_Sys_syscall"
|
||||
- assert simgr.active[0].regs.ip_at_syscall.args[0] == 0x13FB
|
||||
-
|
||||
-
|
||||
def test_tmrs():
|
||||
- test_location = str(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../binaries/tests"))
|
||||
- p = angr.Project(
|
||||
- os.path.join(test_location, "armel", "helloworld"),
|
||||
- arch="ARMEL",
|
||||
- auto_load_libs=False,
|
||||
- )
|
||||
+ arch = archinfo.arch_from_id("ARMEL")
|
||||
ins = b"\xef\xf3\x08\x82"
|
||||
- b = pyvex.block.IRSB(ins, 1, p.arch)
|
||||
+ b = pyvex.block.IRSB(ins, 1, arch)
|
||||
assert b.jumpkind == "Ijk_Boring"
|
||||
assert type(b.statements[1].data) == pyvex.expr.Get
|
||||
- assert p.arch.register_names.get(b.statements[1].data.offset, "") == "sp"
|
||||
+ assert arch.register_names.get(b.statements[1].data.offset, "") == "sp"
|
||||
assert type(b.statements[2]) == pyvex.stmt.Put
|
||||
|
||||
|
||||
def test_tmsr():
|
||||
- test_location = str(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../binaries/tests"))
|
||||
- p = angr.Project(
|
||||
- os.path.join(test_location, "armel", "helloworld"),
|
||||
- arch="ARMEL",
|
||||
- auto_load_libs=False,
|
||||
- )
|
||||
+ arch = archinfo.arch_from_id("ARMEL")
|
||||
inss = b"\x82\xf3\x08\x88"
|
||||
- b = pyvex.block.IRSB(inss, 1, p.arch, opt_level=3)
|
||||
+ b = pyvex.block.IRSB(inss, 1, arch, opt_level=3)
|
||||
assert b.jumpkind == "Ijk_Boring"
|
||||
assert type(b.statements[1].data) == pyvex.expr.Get
|
||||
- assert p.arch.register_names.get(b.statements[1].data.offset, "") == "r2"
|
||||
+ assert arch.register_names.get(b.statements[1].data.offset, "") == "r2"
|
||||
assert type(b.statements[2]) == pyvex.stmt.Put
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_basic()
|
||||
test_embedded()
|
||||
- test_full_binary()
|
||||
test_tmrs()
|
||||
test_tmsr()
|
|
@ -200,6 +200,7 @@ (define-module (gnu packages python-xyz)
|
|||
#:use-module (gnu packages docker)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages emulators)
|
||||
#:use-module (gnu packages enchant)
|
||||
#:use-module (gnu packages file)
|
||||
#:use-module (gnu packages fonts)
|
||||
|
@ -33790,6 +33791,42 @@ (define-public python-opcodes
|
|||
and BMI2).")
|
||||
(license license:bsd-2))))
|
||||
|
||||
(define-public python-pyvex
|
||||
(package
|
||||
(name "python-pyvex")
|
||||
;; Must be the same version as python-angr.
|
||||
(version "9.2.46")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(patches (search-patches "python-pyvex-remove-angr-dependency.patch"))
|
||||
(uri (pypi-uri "pyvex" version))
|
||||
(sha256
|
||||
(base32 "1v64rn7gxy6fg065bgsy38z6r494k5ri5r6sn4g08hjj32ihx1ka"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(with-directory-excursion "tests"
|
||||
(invoke "python" "-m" "unittest")))))
|
||||
|
||||
(add-before 'build 'set-cc-native
|
||||
(lambda _
|
||||
(setenv "CC" #$(cc-for-target))
|
||||
(setenv "CC_NATIVE" "gcc"))))))
|
||||
(propagated-inputs (list python-archinfo python-bitstring python-cffi))
|
||||
(home-page "https://github.com/angr/pyvex")
|
||||
(synopsis "Python interface to libVEX and VEX IR")
|
||||
(description
|
||||
"This package provides a Python interface the libVEX and VEX IR.
|
||||
VEX is the intermediate representation (also known as intermediate
|
||||
language) used by the Valgrind analysis tool. As such, VEX is designed
|
||||
to enable all kinds of binary analysis tasks.")
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public python-claripy
|
||||
(package
|
||||
(name "python-claripy")
|
||||
|
|
Loading…
Reference in a new issue