[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#69074] [PATCH v3 09/14] gnu: Add python-pyvex.
From: |
soeren |
Subject: |
[bug#69074] [PATCH v3 09/14] gnu: Add python-pyvex. |
Date: |
Thu, 4 Jul 2024 22:05:18 +0200 |
From: Sören Tempel <soeren@soeren-tempel.net>
* 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.
---
gnu/local.mk | 1 +
.../python-pyvex-remove-angr-dependency.patch | 80 +++++++++++++++++++
gnu/packages/python-xyz.scm | 37 +++++++++
3 files changed, 118 insertions(+)
create mode 100644
gnu/packages/patches/python-pyvex-remove-angr-dependency.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 3327161547..c88832f08a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1978,6 +1978,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 \
diff --git a/gnu/packages/patches/python-pyvex-remove-angr-dependency.patch
b/gnu/packages/patches/python-pyvex-remove-angr-dependency.patch
new file mode 100644
index 0000000000..dccf22bbc6
--- /dev/null
+++ b/gnu/packages/patches/python-pyvex-remove-angr-dependency.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()
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 9e685abf17..7c1a9b04ec 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -199,6 +199,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)
@@ -33804,6 +33805,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")
- [bug#69074] [PATCH v3 05/14] gnu: Add python-rpyc., (continued)
- [bug#69074] [PATCH v3 05/14] gnu: Add python-rpyc., soeren, 2024/07/04
- [bug#69074] [PATCH v3 03/14] gnu: Add python-mulpyplexer., soeren, 2024/07/04
- [bug#69074] [PATCH v3 04/14] gnu: Add python-nampa., soeren, 2024/07/04
- [bug#69074] [PATCH v3 08/14] gnu: Add python-archinfo., soeren, 2024/07/04
- [bug#69074] [PATCH v3 12/14] gnu: unicorn: Update to 2.0.1.post1., soeren, 2024/07/04
- [bug#69074] [PATCH v3 06/14] gnu: Add python-pysmt., soeren, 2024/07/04
- [bug#69074] [PATCH v3 13/14] gnu: capstone: Backport upstream fix for Python bindings., soeren, 2024/07/04
- [bug#69074] [PATCH v3 07/14] gnu: Add python-claripy., soeren, 2024/07/04
- [bug#69074] [PATCH v3 11/14] gnu: Add python-ailment., soeren, 2024/07/04
- [bug#69074] [PATCH v3 10/14] gnu: Add python-cle., soeren, 2024/07/04
- [bug#69074] [PATCH v3 09/14] gnu: Add python-pyvex.,
soeren <=
- [bug#69074] [PATCH v3 14/14] gnu: Add python-angr., soeren, 2024/07/04