Compare commits

..

No commits in common. 'c9-beta' and 'c10-beta' have entirely different histories.

@ -1 +1 @@
c0dfa4f6236a4505916ce67d63b856bf806b0d83 SOURCES/capstone-4.0.2.tar.gz
ed7ae8d55a1a9bf82fef7067bee7a6d77ce1cff5 SOURCES/capstone-5.0.1.tar.gz

2
.gitignore vendored

@ -1 +1 @@
SOURCES/capstone-4.0.2.tar.gz
SOURCES/capstone-5.0.1.tar.gz

@ -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 <aquynh@gmail.com>, 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

@ -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'],

@ -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] <arch+mode> <assembly\-hexstring> [start\-address\-in\-hex\-format]
.SS "The following <arch+mode> 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

@ -1,35 +1,42 @@
Name: capstone
Version: 4.0.2
Release: 10%{?dist}
Version: 5.0.1
Release: 4%{?dist}
Summary: A lightweight multi-platform, multi-architecture disassembly framework
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/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.}
%global gituser aquynh
%define _lto_cflags %{nil}
#%%global _hardened_build 1
%global gituser capstone-engine
%global gitname capstone
# 4.0.2 release
%global commit 1d230532840a37ac032c6ab80128238fc930c6c1
# 5.0.1 release
%global gitdate 20230823
%global commit 097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa
%global shortcommit %(c=%{commit}; echo ${c:0:7})
License: BSD
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:
# Manpage for cstool is missing in the package, add one generated by help2man
Source1: cstool.1
# 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
# 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
# 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
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
%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
@ -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,38 +207,89 @@ 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
%ldconfig_scriptlets
%files
@ -202,7 +297,7 @@ make check LD_LIBRARY_PATH="`pwd`"
%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,60 @@ 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 <mrezanin@redhat.com> - 4.0.2-10
- Import to CentOS 9 Stream / RHEL 9
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 5.0.1-4
- Bump release for June 2024 mass rebuild
* Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Sep 15 2023 Jonathan Wright <jonathan@almalinux.org> - 5.0.1-1
- Update to 5.0.1
* Wed Jul 19 2023 Jonathan Wright <jonathan@almalinux.org> - 5.0-1
- Modernize spec file using pyproject/wheel build
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 4.0.2-14
- Rebuilt for Python 3.12
* Fri Jan 27 2023 Michal Ambroz <rebus AT_ seznam.cz> - 4.0.2-13
- update the new github page
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 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 <python-maint@redhat.com> - 4.0.2-10
- Rebuilt for Python 3.11
* Sat Feb 05 2022 Jiri Vanek <jvanek@redhat.com> - 4.0.2-9
- Rebuilt for java-17-openjdk as system jdk

Loading…
Cancel
Save