ada862
%define libname libdwarves
ada862
%define libver 1
ada862
ada862
Name: dwarves
c87e5c
Version: 1.22
c87e5c
Release: 1%{?dist}
ada862
License: GPLv2
ada862
Summary: Debugging Information Manipulation Tools (pahole & friends)
ada862
URL: http://acmel.wordpress.com
ada862
Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz
ada862
Requires: %{libname}%{libver} = %{version}-%{release}
ada862
BuildRequires: gcc
ada862
BuildRequires: cmake
ada862
BuildRequires: zlib-devel
ada862
BuildRequires: elfutils-devel >= 0.130
ada862
ada862
%description
ada862
dwarves is a set of tools that use the debugging information inserted in
ada862
ELF binaries by compilers such as GCC, used by well known debuggers such as
ada862
GDB, and more recent ones such as systemtap.
ada862
ada862
Utilities in the dwarves suite include pahole, that can be used to find
ada862
alignment holes in structs and classes in languages such as C, C++, but not
ada862
limited to these.
ada862
ada862
It also extracts other information such as CPU cacheline alignment, helping
ada862
pack those structures to achieve more cache hits.
ada862
ada862
These tools can also be used to encode and read the BTF type information format
ada862
used with the Linux kernel bpf syscall, using 'pahole -J' and 'pahole -F btf'.
ada862
ada862
A diff like tool, codiff can be used to compare the effects changes in source
ada862
code generate on the resulting binaries.
ada862
ada862
Another tool is pfunct, that can be used to find all sorts of information about
ada862
functions, inlines, decisions made by the compiler about inlining, etc.
ada862
24be88
One example of pfunct usage is in the fullcircle tool, a shell that drivers
24be88
pfunct to generate compileable code out of a .o file and then build it using
24be88
gcc, with the same compiler flags, and then use codiff to make sure the
24be88
original .o file and the new one generated from debug info produces the same
24be88
debug info.
24be88
24be88
Pahole also can be used to use all this type information to pretty print raw data
24be88
according to command line directions.
24be88
24be88
Headers can have its data format described from debugging info and offsets from
24be88
it can be used to further format a number of records.
24be88
24be88
The btfdiff utility compares the output of pahole from BTF and DWARF to make
24be88
sure they produce the same results.
24be88
ada862
%package -n %{libname}%{libver}
ada862
Summary: Debugging information  processing library
ada862
ada862
%description -n %{libname}%{libver}
ada862
Debugging information processing library.
ada862
ada862
%package -n %{libname}%{libver}-devel
ada862
Summary: Debugging information library development files
ada862
Requires: %{libname}%{libver} = %{version}-%{release}
ada862
ada862
%description -n %{libname}%{libver}-devel
ada862
Debugging information processing library development files.
ada862
ada862
%prep
24be88
%setup -q
ada862
ada862
%build
24be88
%cmake -DCMAKE_BUILD_TYPE=Release .
ada862
make VERBOSE=1 %{?_smp_mflags}
ada862
ada862
%install
ada862
rm -Rf %{buildroot}
ada862
make install DESTDIR=%{buildroot}
ada862
ada862
%ldconfig_scriptlets -n %{libname}%{libver}
ada862
ada862
%files
ada862
%doc README.ctracer
ada862
%doc README.btf
24be88
%doc changes-v1.19
ada862
%doc NEWS
ada862
%{_bindir}/btfdiff
ada862
%{_bindir}/codiff
ada862
%{_bindir}/ctracer
ada862
%{_bindir}/dtagnames
ada862
%{_bindir}/fullcircle
ada862
%{_bindir}/pahole
ada862
%{_bindir}/pdwtags
ada862
%{_bindir}/pfunct
ada862
%{_bindir}/pglobal
ada862
%{_bindir}/prefcnt
ada862
%{_bindir}/scncopy
ada862
%{_bindir}/syscse
ada862
%{_bindir}/ostra-cg
ada862
%dir %{_datadir}/dwarves/
ada862
%dir %{_datadir}/dwarves/runtime/
ada862
%dir %{_datadir}/dwarves/runtime/python/
ada862
%defattr(0644,root,root,0755)
ada862
%{_mandir}/man1/pahole.1*
ada862
%{_datadir}/dwarves/runtime/Makefile
ada862
%{_datadir}/dwarves/runtime/linux.blacklist.cu
ada862
%{_datadir}/dwarves/runtime/ctracer_relay.c
ada862
%{_datadir}/dwarves/runtime/ctracer_relay.h
ada862
%attr(0755,root,root) %{_datadir}/dwarves/runtime/python/ostra.py*
ada862
ada862
%files -n %{libname}%{libver}
ada862
%{_libdir}/%{libname}.so.*
ada862
%{_libdir}/%{libname}_emit.so.*
ada862
%{_libdir}/%{libname}_reorganize.so.*
ada862
ada862
%files -n %{libname}%{libver}-devel
ada862
%doc MANIFEST README
ada862
%{_includedir}/dwarves/btf_encoder.h
ada862
%{_includedir}/dwarves/config.h
ada862
%{_includedir}/dwarves/ctf.h
ada862
%{_includedir}/dwarves/dutil.h
ada862
%{_includedir}/dwarves/dwarves.h
ada862
%{_includedir}/dwarves/dwarves_emit.h
ada862
%{_includedir}/dwarves/dwarves_reorganize.h
ada862
%{_includedir}/dwarves/elfcreator.h
ada862
%{_includedir}/dwarves/elf_symtab.h
ada862
%{_includedir}/dwarves/gobuffer.h
ada862
%{_includedir}/dwarves/hash.h
ada862
%{_includedir}/dwarves/libctf.h
ada862
%{_includedir}/dwarves/list.h
ada862
%{_includedir}/dwarves/rbtree.h
ada862
%{_libdir}/%{libname}.so
ada862
%{_libdir}/%{libname}_emit.so
ada862
%{_libdir}/%{libname}_reorganize.so
ada862
ada862
%changelog
c87e5c
* Wed Oct 6 2021 Jiri Olsa <jolsa@redhat.com> - 1.22-1
c87e5c
- moving to v1.22 version
c87e5c
- Resolves: rhbz#2010429
c87e5c
92eaa6
* Fri Apr 23 2021 Jiri Olsa <jolsa@redhat.com> - 1.21-0
92eaa6
- moving to v1.21 version
92eaa6
f89478
* Tue May 26 2020 Jiri Olsa <jolsa@redhat.com> - 1.17-1
f89478
- moving to v1.17 version
f89478
ada862
* Wed Nov 06 2019 Jiri Olsa <jolsa@redhat.com> - 1.15-5
ada862
- Add libdwarves version dependency to dwarves package
ada862
ada862
* Mon Nov 04 2019 Jiri Olsa <jolsa@redhat.com> - 1.15-4
ada862
- CI rebuild
ada862
ada862
* Wed Sep 25 2019 Jiri Olsa <jolsa@redhat.com> - 1.15-1
ada862
- Initial build