From b143c8a1e29a2f84897b6ad4135a7e4917a355ad Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 14 May 2025 14:40:15 +0000 Subject: [PATCH] import UBI capstone-5.0.1-6.el10 --- .capstone.metadata | 1 - .gitignore | 2 +- capstone-5.0.1-ocaml.patch | 12 ++ capstone-5.0.1-platform.patch | 22 +++ SPECS/capstone.spec => capstone.spec | 233 +++++++++++++++++++----- cstool.1 | 256 +++++++++++++++++++++++++++ sources | 1 + 7 files changed, 479 insertions(+), 48 deletions(-) delete mode 100644 .capstone.metadata create mode 100644 capstone-5.0.1-ocaml.patch create mode 100644 capstone-5.0.1-platform.patch rename SPECS/capstone.spec => capstone.spec (65%) create mode 100644 cstool.1 create mode 100644 sources diff --git a/.capstone.metadata b/.capstone.metadata deleted file mode 100644 index 8cc7735..0000000 --- a/.capstone.metadata +++ /dev/null @@ -1 +0,0 @@ -c0dfa4f6236a4505916ce67d63b856bf806b0d83 SOURCES/capstone-4.0.2.tar.gz diff --git a/.gitignore b/.gitignore index 4c1995c..6a4f04e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/capstone-4.0.2.tar.gz +capstone-5.0.1.tar.gz diff --git a/capstone-5.0.1-ocaml.patch b/capstone-5.0.1-ocaml.patch new file mode 100644 index 0000000..a577369 --- /dev/null +++ b/capstone-5.0.1-ocaml.patch @@ -0,0 +1,12 @@ +diff -ru capstone-5.0.1/bindings/ocaml/Makefile capstone-5.0.1.new/bindings/ocaml/Makefile +--- capstone-5.0.1/bindings/ocaml/Makefile 2023-08-22 18:03:55.000000000 +0200 ++++ capstone-5.0.1.new/bindings/ocaml/Makefile 2023-11-12 10:28:45.320198200 +0100 +@@ -2,7 +2,7 @@ + # By Nguyen Anh Quynh , 2013-2015 + + LIB = capstone +-FLAGS = '-Wall -Wextra -Wwrite-strings' ++FLAGS = '-Wall -Wextra -Wwrite-strings -I ../../include -L ../../' + PYTHON2 ?= python + + all: arm_const.cmxa arm64_const.cmxa m680x_const.cmxa mips_const.cmxa ppc_const.cmxa sparc_const.cmxa sysz_const.cmxa x86_const.cmxa xcore_const.cmxa arm.cmxa arm64.cmxa m680x.cmxa mips.cmxa ppc.cmxa x86.cmxa sparc.cmxa systemz.cmxa xcore.cmxa capstone.cmxa test_basic.cmx test_detail.cmx test_x86.cmx test_arm.cmx test_arm64.cmx test_mips.cmx test_ppc.cmx test_sparc.cmx test_systemz.cmx test_xcore.cmx test_m680x.cmx ocaml.o diff --git a/capstone-5.0.1-platform.patch b/capstone-5.0.1-platform.patch new file mode 100644 index 0000000..771f674 --- /dev/null +++ b/capstone-5.0.1-platform.patch @@ -0,0 +1,22 @@ +diff -uNr capstone-5.0.orig/bindings/python/setup.py capstone-5.0/bindings/python/setup.py +--- capstone-5.0.orig/bindings/python/setup.py 2023-08-07 16:55:34.314825530 -0500 ++++ capstone-5.0/bindings/python/setup.py 2023-08-07 21:06:59.182376477 -0500 +@@ -201,15 +201,9 @@ + idx = sys.argv.index('bdist_wheel') + 1 + sys.argv.insert(idx, '--plat-name') + name = get_platform() +- if 'linux' in name: +- # linux_* platform tags are disallowed because the python ecosystem is fubar +- # linux builds should be built in the centos 5 vm for maximum compatibility +- # see https://github.com/pypa/manylinux +- # see also https://github.com/angr/angr-dev/blob/master/bdist.sh +- sys.argv.insert(idx + 1, 'manylinux1_' + platform.machine()) +- else: +- # https://www.python.org/dev/peps/pep-0425/ +- sys.argv.insert(idx + 1, name.replace('.', '_').replace('-', '_')) ++ pyversion = platform.python_version() ++ major_version, minor_version = map(int, pyversion.split('.')[:2]) ++ sys.argv.insert(idx + 1, name.replace('.', '_').replace('-', '_') + "_" + str(major_version) + str(minor_version)) + + setup( + provides=['capstone'], diff --git a/SPECS/capstone.spec b/capstone.spec similarity index 65% rename from SPECS/capstone.spec rename to capstone.spec index 7ba4de2..3b30651 100644 --- a/SPECS/capstone.spec +++ b/capstone.spec @@ -1,36 +1,43 @@ Name: capstone -Version: 4.0.2 -Release: 10%{?dist} +Version: 5.0.1 +Release: 6%{?dist} Summary: A lightweight multi-platform, multi-architecture disassembly framework - -%global gituser aquynh -%global gitname capstone -# 4.0.2 release -%global commit 1d230532840a37ac032c6ab80128238fc930c6c1 -%global shortcommit %(c=%{commit}; echo ${c:0:7}) - -License: BSD +License: BSD-3-Clause AND BSD-4-Clause AND APSL-2.0 AND NCSA AND MIT URL: http://www.capstone-engine.org/ -VCS: https://github.com/aquynh/capstone/ -# https://github.com/aquynh/capstone/releases -# Source0: https://github.com/%%{gituser}/%%{gitname}/archive/%%{commit}/%%{name}-%%{version}-%%{shortcommit}.tar.gz -Source0: https://github.com/%{gituser}/%{gitname}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz - -# Test suite binary samples to be used for disassembly -# Source1: - -# Fedora 29 makes python executable separate from python2 and python3. This patch makes -# it possible to specify PYTHON2 and PYTHON3 binary to be explicit that by "python" we mean "python2" -# Patch0: capstone-python.patch - -# Upstream patch which fixes libcapstone.pc. -# See: https://github.com/aquynh/capstone/issues/1339 -# Patch1: 0001-Fix-include-path-in-pkg-config-for-Makefile-too-1339.patch +VCS: https://github.com/capstone-engine/capstone/ +# https://github.com/capstone-engine/capstone/releases %global common_desc %{expand: Capstone is a disassembly framework with the target of becoming the ultimate disasm engine for binary analysis and reversing in the security community.} + +%define _lto_cflags %{nil} +#%%global _hardened_build 1 + +%global gituser capstone-engine +%global gitname capstone +# 5.0.1 release +%global gitdate 20230823 +%global commit 097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +# Source0: https://github.com/%%{gituser}/%%{gitname}/archive/%%{commit}/%%{name}-%%{version}-%%{shortcommit}.tar.gz +Source0: https://github.com/%{gituser}/%{gitname}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz + +# Manpage for cstool is missing in the package, add one generated by help2man +Source1: cstool.1 + +# modified to remove the GH CI modifications from this patch +# Patch: https://patch-diff.githubusercontent.com/raw/capstone-engine/capstone/pull/2099.patch +# Patch0: https://github.com/capstone-engine/capstone/pull/2099.patch#/capstone-5.0.1-cibuildwheel.patch + +Patch0: capstone-5.0.1-platform.patch + +# Ocaml binding is not using local path for the includes/links +Patch1: capstone-5.0.1-ocaml.patch + + # Build with python3 package by default %bcond_without python3 @@ -41,29 +48,47 @@ disasm engine for binary analysis and reversing in the security community.} %bcond_without python2 %endif +# Build with java binding +%bcond_without java + +# Build without ocaml binding - it is not ready to be distributed as ocaml shared library +%bcond_with ocaml + + %global srcname distribute BuildRequires: gcc BuildRequires: make BuildRequires: git + +%if %{with java} +%ifarch %{java_arches} BuildRequires: jna BuildRequires: java-devel +%endif +%endif %if %{with python2} BuildRequires: python2 BuildRequires: python2-devel +BuildRequires: python2-pip BuildRequires: python2-setuptools %endif %if %{with python3} BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-pip BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-wheel +BuildRequires: python%{python3_pkgversion}-pytest %endif -%global _hardened_build 1 - +%if %{with ocaml} +BuildRequires: ocaml +BuildRequires: ocaml-ocamlbuild +%endif %description %{common_desc} @@ -81,13 +106,14 @@ developing applications that use %{name}. %if %{with python2} %package -n python2-capstone +BuildArch: noarch %{?python_provide:%python_provide python2-capstone} # Remove before F30 +# loading the libcapstone dynamically using ctypes, not tied to certain architecture Provides: %{name}-python = %{version}-%{release} -Provides: %{name}-python%{?_isa} = %{version}-%{release} Obsoletes: %{name}-python < %{version}-%{release} Summary: Python bindings for %{name} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name} = %{version}-%{release} %description -n python2-capstone %{common_desc} @@ -99,11 +125,11 @@ The python2-capstone package contains python bindings for %{name}. %if %{with python3} %package -n python%{python3_pkgversion}-capstone +BuildArch: noarch %{?python_provide:%python_provide python%{python3_pkgversion}-capstone} Provides: %{name}-python%{python3_pkgversion} = %{version}-%{release} -Provides: %{name}-python%{python3_pkgversion}%{?_isa} = %{version}-%{release} Obsoletes: %{name}-python%{python3_pkgversion} < %{version}-%{release} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name} = %{version}-%{release} Summary: Python3 bindings for %{name} @@ -114,7 +140,8 @@ The python%{python3_pkgversion}-capstone package contains python3 bindings for % %endif - +%if %{with java} +%ifarch %{java_arches} %package java Summary: Java bindings for %{name} Requires: %{name} = %{version}-%{release} @@ -123,13 +150,29 @@ BuildArch: noarch %description java %{common_desc} The %{name}-java package contains java bindings for %{name}. +%endif +%endif +%if %{with ocaml} +%package -n ocaml-%{name} +Summary: OCaml bindings for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n ocaml-%{name} +%{common_desc} +The ocaml-%{name} package contains OCaml bindings for %{name}. +%endif %prep # autosetup -n %%{gitname}-%%{commit} -S git -%autosetup -n %{gitname}-%{version} -S git +%autosetup -n %{gitname}-%{version} -p1 +%if %{with python3} +pushd bindings/python +%pyproject_buildrequires +popd +%endif %build @@ -138,11 +181,9 @@ PREFIX="%{_prefix}" LIBDIRARCH="%{_lib}" INCDIR="%{_includedir}" \ %make_build PYTHON2=%{__python2} PYTHON3=%{__python3} # Fix pkgconfig file -sed -i 's;%{buildroot};;' capstone.pc grep -v archive capstone.pc > capstone.pc.tmp mv capstone.pc.tmp capstone.pc - # build python bindings pushd bindings/python @@ -151,11 +192,14 @@ pushd bindings/python %endif %if %{with python3} +# %%pyproject_wheel %py3_build %endif popd -# build java bindings needs some python +%if %{with java} +%ifarch %{java_arches} +# build java bindings needs some python runtime pushd bindings/java %if %{with python3} %make_build PYTHON2=%{__python3} PYTHON3=%{__python3} CFLAGS="%{optflags}" # %{?_smp_mflags} parallel seems broken @@ -163,46 +207,97 @@ pushd bindings/java %make_build PYTHON2=%{__python2} PYTHON3=%{__python2} CFLAGS="%{optflags}" # %{?_smp_mflags} parallel seems broken %endif popd +%endif +%endif +%if %{with ocaml} +pushd bindings/ocaml +# build ocaml bindings needs some python runtime +%if %{with python3} +%make_build PYTHON2=%{__python3} PYTHON3=%{__python3} CFLAGS="%{optflags}" -j1 # %{?_smp_mflags} parallel seems broken +%else +%make_build PYTHON2=%{__python2} PYTHON3=%{__python2} CFLAGS="%{optflags}" -j1 # %{?_smp_mflags} parallel seems broken +%endif +popd +%endif %install DESTDIR=%{buildroot} PREFIX="%{_prefix}" LIBDIRARCH=%{_lib} \ INCDIR="%{_includedir}" make install + +# cleanup static libraries find %{buildroot} -name '*.la' -exec rm -f {} ';' find %{buildroot} -name '*.a' -exec rm -f {} ';' +# add the manpage +install -d -D %{buildroot}%{_mandir}/man1 +install -p -m 644 -D %{SOURCE1} %{buildroot}%{_mandir}/man1/ + + # install python bindings pushd bindings/python %if %{with python2} %py2_install + +# cleanup the install +rm -rf %{buildroot}%{python2_sitelib}/capstone/lib/libcapstone.a +rm -rf %{buildroot}%{python2_sitelib}/capstone/lib/libcapstone.so +rm -rf %{buildroot}%{python2_sitelib}/capstone/include/capstone %endif %if %{with python3} %py3_install +# %%pyproject_install +# %%pyproject_save_files capstone + +# cleanup the install +rm -rf %{buildroot}%{python3_sitelib}/capstone/lib/libcapstone.a +rm -rf %{buildroot}%{python3_sitelib}/capstone/lib/libcapstone.so +rm -rf %{buildroot}%{python3_sitelib}/capstone/include/capstone + %endif popd +%if %{with java} +%ifarch %{java_arches} # install java bindings install -D -p -m 0644 bindings/java/%{name}.jar %{buildroot}/%{_javadir}/%{name}.jar +%endif +%endif + +%if %{with ocaml} +# install ocaml binding +%endif %check -ln -s libcapstone.so.4 libcapstone.so +# ln -s libcapstone.so.5 libcapstone.so make check LD_LIBRARY_PATH="`pwd`" +%if %{with python3} +pushd bindings/python +%pytest -sv -k "not testcb and not test_cs_disasm_quick" +popd +%endif + +%if %{with ocaml} +pushd bindings/ocaml +make check LD_LIBRARY_PATH="`pwd`" +popd +%endif + %ldconfig_scriptlets - %files %license LICENSE.TXT LICENSE_LLVM.TXT %doc CREDITS.TXT ChangeLog README.md SPONSORS.TXT %{_libdir}/*.so.* %{_bindir}/cstool - +%{_mandir}/man1/cstool.1* %files devel @@ -211,7 +306,6 @@ make check LD_LIBRARY_PATH="`pwd`" %{_libdir}/pkgconfig/* - %if %{with python2} %files -n python2-capstone %{python2_sitelib}/*egg-info @@ -219,21 +313,68 @@ make check LD_LIBRARY_PATH="`pwd`" %endif - %if %{with python3} +#%%files -n python%%{python3_pkgversion}-capstone -f %%{pyproject_files} %files -n python%{python3_pkgversion}-capstone -%{python3_sitelib}/*egg-info -%{python3_sitelib}/%{name} +%{python3_sitelib}/capstone* %endif - +%if %{with java} +%ifarch %{java_arches} %files java %{_javadir}/ +%endif +%endif + + +%if %{with ocaml} +%files -n ocaml-%{name} +%endif + %changelog -* Fri Sep 02 2022 Miroslav Rezanina - 4.0.2-10 -- Import to CentOS 9 Stream / RHEL 9 +* Tue Oct 29 2024 Troy Dawson - 5.0.1-6 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 + +* Sat Sep 21 2024 Andrew Hughes - 5.0.1-5 +- Rebuilt with java-21-openjdk as default JDK: + https://issues.redhat.com/browse/RHEL-34597 + +* Mon Jun 24 2024 Troy Dawson - 5.0.1-4 +- Bump release for June 2024 mass rebuild + +* Tue Jan 23 2024 Fedora Release Engineering - 5.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 5.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Sep 15 2023 Jonathan Wright - 5.0.1-1 +- Update to 5.0.1 + +* Wed Jul 19 2023 Jonathan Wright - 5.0-1 +- Modernize spec file using pyproject/wheel build + +* Wed Jul 19 2023 Fedora Release Engineering - 4.0.2-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jun 13 2023 Python Maint - 4.0.2-14 +- Rebuilt for Python 3.12 + +* Fri Jan 27 2023 Michal Ambroz - 4.0.2-13 +- update the new github page + +* Wed Jan 18 2023 Fedora Release Engineering - 4.0.2-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 4.0.2-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild +- drop java binding for platforms not in %%{java_arches} + +* Mon Jun 13 2022 Python Maint - 4.0.2-10 +- Rebuilt for Python 3.11 * Sat Feb 05 2022 Jiri Vanek - 4.0.2-9 - Rebuilt for java-17-openjdk as system jdk diff --git a/cstool.1 b/cstool.1 new file mode 100644 index 0000000..50efef0 --- /dev/null +++ b/cstool.1 @@ -0,0 +1,256 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH CSTOOL "1" "November 2023" "Cstool for Capstone Disassembler Engine v5.0.1" "User Commands" +.SH NAME +Cstool \- manual page for Cstool for Capstone Disassembler Engine +.SH DESCRIPTION +Cstool for Capstone Disassembler Engine +.PP +Syntax: cstool [\-d|\-s|\-u|\-v] [start\-address\-in\-hex\-format] +.SS "The following options are supported:" +.TP +x16 +16\-bit mode (X86) +.TP +x32 +32\-bit mode (X86) +.TP +x64 +64\-bit mode (X86) +.TP +x16att +16\-bit mode (X86), syntax AT&T +.TP +x32att +32\-bit mode (X86), syntax AT&T +.TP +x64att +64\-bit mode (X86), syntax AT&T +.TP +arm +arm +.TP +armbe +arm + big endian +.TP +thumb +thumb mode +.TP +thumbbe +thumb + big endian +.TP +cortexm +thumb + cortex\-m extensions +.TP +armv8 +arm v8 +.TP +thumbv8 +thumb v8 +.TP +armv8be +arm v8 + big endian +.TP +thumbv8be +thumb v8 + big endian +.TP +arm64 +aarch64 mode +.TP +arm64be +aarch64 + big endian +.TP +mips +mips32 + little endian +.TP +mipsbe +mips32 + big endian +.TP +mips64 +mips64 + little endian +.TP +mips64be +mips64 + big endian +.TP +ppc32 +ppc32 + little endian +.TP +ppc32be +ppc32 + big endian +.TP +ppc32qpx +ppc32 + qpx + little endian +.TP +ppc32beqpx +ppc32 + qpx + big endian +.TP +ppc32ps +ppc32 + ps + little endian +.TP +ppc32beps +ppc32 + ps + big endian +.TP +ppc64 +ppc64 + little endian +.TP +ppc64be +ppc64 + big endian +.TP +ppc64qpx +ppc64 + qpx + little endian +.TP +ppc64beqpx +ppc64 + qpx + big endian +.TP +sparc +sparc +.TP +systemz +systemz (s390x) +.TP +xcore +xcore +.TP +m68k +m68k + big endian +.TP +m68k40 +m68k_040 +.TP +tms320c64x +TMS320C64x +.TP +m6800 +M6800/2 +.TP +m6801 +M6801/3 +.TP +m6805 +M6805 +.TP +m6808 +M68HC08 +.TP +m6809 +M6809 +.TP +m6811 +M68HC11 +.TP +cpu12 +M68HC12/HCS12 +.TP +hd6301 +HD6301/3 +.TP +hd6309 +HD6309 +.TP +hcs08 +HCS08 +.TP +evm +Ethereum Virtual Machine +.TP +6502 +MOS 6502 +.TP +65c02 +WDC 65c02 +.TP +w65c02 +WDC w65c02 +.TP +65816 +WDC 65816 (long m/x) +.TP +wasm: +Web Assembly +.TP +bpf +Classic BPF +.TP +bpfbe +Classic BPF + big endian +.TP +ebpf +Extended BPF +.TP +ebpfbe +Extended BPF + big endian +.TP +riscv32 +riscv32 +.TP +riscv64 +riscv64 +.TP +sh +superh SH1 +.TP +sh2 +superh SH2 +.TP +sh2e +superh SH2E +.TP +sh2dsp +superh SH2\-DSP +.TP +sh2a +superh SH2A +.TP +sh2afpu +superh SH2A\-FPU +.TP +sh3 +superh SH3 +.TP +sh3be +superh SH3 big endian +.TP +sh3e +superh SH3E +.TP +sh3ebe +superh SH3E big endian +.TP +sh3\-dsp +superh SH3\-DSP +.TP +sh3\-dspbe +superh SH3\-DSP big endian +.TP +sh4 +superh SH4 +.TP +sh4be +superh SH4 big endian +.TP +sh4a +superh SH4A +.TP +sh4abe +superh SH4A big endian +.TP +sh4al\-dsp +superh SH4AL\-DSP +.IP +sh4al\-dspbe superh SH4AL\-DSP big endian +tc110 tricore V1.1 +tc120 tricore V1.2 +tc130 tricore V1.3 +tc131 tricore V1.3.1 +tc160 tricore V1.6 +tc161 tricore V1.6.1 +tc162 tricore V1.6.2 +.SS "Extra options:" +.HP +\fB\-d\fR show detailed information of the instructions +.HP +\fB\-s\fR decode in SKIPDATA mode +.HP +\fB\-u\fR show immediates as unsigned +.HP +\fB\-v\fR show version & Capstone core build info +.PP diff --git a/sources b/sources new file mode 100644 index 0000000..b5723a1 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (capstone-5.0.1.tar.gz) = 350aba77ce2d96b5c25764913591ba80e4497177ae0a8b2c820c6755ee8310848fbfc54e7ccac27fafc2dbc6778118ad92c53d1b5cb601d4fa146dec7d7e11e5