From e22eb2ba7776a74b54a57b0faa3494d2d4596c45 Mon Sep 17 00:00:00 2001 From: AkarshHCL Date: Thu, 28 Nov 2024 07:10:22 +0000 Subject: [PATCH] Upgrade: capstone to version 5.0.1 --- .../capstone/capstone-5.0.1-ocaml.patch | 12 + .../capstone/capstone-5.0.1-platform.patch | 22 ++ .../capstone/capstone.signatures.json | 5 +- SPECS-EXTENDED/capstone/capstone.spec | 373 +++++++++++------- SPECS-EXTENDED/capstone/cstool.1 | 256 ++++++++++++ cgmanifest.json | 4 +- 6 files changed, 530 insertions(+), 142 deletions(-) create mode 100644 SPECS-EXTENDED/capstone/capstone-5.0.1-ocaml.patch create mode 100644 SPECS-EXTENDED/capstone/capstone-5.0.1-platform.patch create mode 100644 SPECS-EXTENDED/capstone/cstool.1 diff --git a/SPECS-EXTENDED/capstone/capstone-5.0.1-ocaml.patch b/SPECS-EXTENDED/capstone/capstone-5.0.1-ocaml.patch new file mode 100644 index 00000000000..a577369b99a --- /dev/null +++ b/SPECS-EXTENDED/capstone/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/SPECS-EXTENDED/capstone/capstone-5.0.1-platform.patch b/SPECS-EXTENDED/capstone/capstone-5.0.1-platform.patch new file mode 100644 index 00000000000..771f6743296 --- /dev/null +++ b/SPECS-EXTENDED/capstone/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-EXTENDED/capstone/capstone.signatures.json b/SPECS-EXTENDED/capstone/capstone.signatures.json index 9ef7da117a5..e211e3c4e4e 100644 --- a/SPECS-EXTENDED/capstone/capstone.signatures.json +++ b/SPECS-EXTENDED/capstone/capstone.signatures.json @@ -1,5 +1,6 @@ { "Signatures": { - "capstone-4.0.2.tar.gz": "7c81d798022f81e7507f1a60d6817f63aa76e489aa4e7055255f21a22f5e526a" + "capstone-5.0.1.tar.gz": "2b9c66915923fdc42e0e32e2a9d7d83d3534a45bb235e163a70047951890c01a", + "cstool.1": "654b4c5a83b415a4fb993f8177a225d1a596f95da7fbc91d37613dc31050f00c" } -} +} \ No newline at end of file diff --git a/SPECS-EXTENDED/capstone/capstone.spec b/SPECS-EXTENDED/capstone/capstone.spec index 9e272ef90f3..1b1b0b793e2 100644 --- a/SPECS-EXTENDED/capstone/capstone.spec +++ b/SPECS-EXTENDED/capstone/capstone.spec @@ -1,230 +1,327 @@ Vendor: Microsoft Corporation Distribution: Azure Linux Name: capstone -Version: 4.0.2 -Release: 4%{?dist} +Version: 5.0.1 +Release: 1%{?dist} Summary: A lightweight multi-platform, multi-architecture disassembly framework -License: BSD +License: BSD-3-Clause AND BSD-4-Clause AND APSL-2.0 AND NCSA AND MIT URL: http://www.capstone-engine.org/ # https://github.com/aquynh/capstone/releases -Source0: https://github.com/aquynh/capstone/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/ + %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.} -# Build with python3 package by default -%bcond_without python3 - -# Build without python2 package for newer releases f32+ and rhel8+ - -%bcond_with python2 - - - + +%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 + + +# 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 -BuildRequires: javapackages-filesystem - -%if 0%{?with_python2} -BuildRequires: python2 -BuildRequires: python2-devel -BuildRequires: python2-setuptools -%endif # if with_python2 +%endif +%endif + -%if 0%{?with_python3} + +%if %{with python3} BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-pip BuildRequires: python%{python3_pkgversion}-setuptools -%endif # if with_python3 - -%global _hardened_build 1 - - +BuildRequires: python%{python3_pkgversion}-wheel +BuildRequires: python%{python3_pkgversion}-pytest +%endif + +%if %{with ocaml} +BuildRequires: ocaml +BuildRequires: ocaml-ocamlbuild +%endif + %description %{common_desc} - + %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} - + %description devel %{common_desc} The %{name}-devel package contains libraries and header files for developing applications that use %{name}. - - - -%if 0%{?with_python2} -%package -n python2-capstone -%{?python_provide:%python_provide python2-capstone} -# Remove before F30 -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} - -%description -n python2-capstone + + +%package static +Summary: Static linking of %{name} library + +%description static %{common_desc} -The python2-capstone package contains python bindings for %{name}. -%endif # with_python2 - - - -%if 0%{?with_python3} +The %{name}-static package contains files needed for static linking +of %{name} library into static binaries. + + + + + + + +%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} - - + + %description -n python%{python3_pkgversion}-capstone %{common_desc} The python%{python3_pkgversion}-capstone package contains python3 bindings for %{name}. -%endif # with_python3 - - - +#with python3 +%endif + + +%if %{with java} +%ifarch %{java_arches} %package java Summary: Java bindings for %{name} Requires: %{name} = %{version}-%{release} 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 -S git - - - +# autosetup -n %%{gitname}-%%{commit} -S git +%autosetup -n %{gitname}-%{version} -p1 + +%if %{with python3} +pushd bindings/python +%pyproject_buildrequires +popd +%endif + + %build -#DESTDIR="%{buildroot}" V=1 CFLAGS="%{optflags}" \ 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 - -%if 0%{?with_python2} -CFLAGS="%{optflags}" %{__python2} setup.py build -%endif # with_python2 - -%if 0%{?with_python3} -CFLAGS="%{optflags}" %{__python3} setup.py build -%endif # with_python3 + +%if %{with python2} +%py2_build +%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 0%{?with_python3} +%if %{with python3} %make_build PYTHON2=%{__python3} PYTHON3=%{__python3} CFLAGS="%{optflags}" # %{?_smp_mflags} parallel seems broken %else %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 {} ';' - +# 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 0%{?with_python2} -%{__python2} setup.py install --skip-build --root %{buildroot} -%endif # with_python2 - -%if 0%{?with_python3} -%{__python3} setup.py install --skip-build --root %{buildroot} -%endif # with_python3 +%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 - - - -#%check -#ln -s libcapstone.so libcapstone.so.4 -#make check LD_LIBRARY_PATH="`pwd`" - - - +%endif +%endif + +%if %{with ocaml} +# install ocaml binding +%endif + + + +%check +# 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 %{_includedir}/* %{_libdir}/*.so %{_libdir}/pkgconfig/* + + +%files static +%license LICENSE.TXT LICENSE_LLVM.TXT +%{_libdir}/libcapstone.a + + - - -%if 0%{?with_python2} -%files -n python2-capstone -%{python2_sitelib}/*egg-info -%{python2_sitelib}/%{name} -%endif # _with_python2 - - - -%if 0%{?with_python3} + +%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} -%endif # _with_python3 - - - +%{python3_sitelib}/capstone* +%endif + + +%if %{with java} +%ifarch %{java_arches} %files java %{_javadir}/ +%endif +%endif + + +%if %{with ocaml} +%files -n ocaml-%{name} +%endif %changelog +* Thu Nov 28 2024 Akarsh Chaudhary - 5.0.1-1 +- Upgrade to version 5.0.1 + * Thu Feb 17 2022 Pawel Winogrodzki - 4.0.2-4 - Adding BR on "javapackages-filesystem" to provide missing macros. - License verified. diff --git a/SPECS-EXTENDED/capstone/cstool.1 b/SPECS-EXTENDED/capstone/cstool.1 new file mode 100644 index 00000000000..50efef0bf99 --- /dev/null +++ b/SPECS-EXTENDED/capstone/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/cgmanifest.json b/cgmanifest.json index 59ac79df69a..7047b567306 100644 --- a/cgmanifest.json +++ b/cgmanifest.json @@ -1437,8 +1437,8 @@ "type": "other", "other": { "name": "capstone", - "version": "4.0.2", - "downloadUrl": "https://github.com/aquynh/capstone/archive/4.0.2.tar.gz" + "version": "5.0.1", + "downloadUrl": "https://github.com/aquynh/capstone/archive/5.0.1.tar.gz" } } },