Compare commits

...

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

@ -1 +1 @@
251fc1ff6b0f953f565f74c25c8aa55e7f8c50d9 SOURCES/dwarves-1.25.tar.xz
a9bbb201925e4b58e73fc17eedbfd5484d101e97 SOURCES/dwarves-1.27.tar.xz

2
.gitignore vendored

@ -1 +1 @@
SOURCES/dwarves-1.25.tar.xz
SOURCES/dwarves-1.27.tar.xz

@ -0,0 +1,83 @@
From 6a2b27c0f512619b0e7a769a18a0fb05bb3789a5 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Tue, 18 Jun 2024 10:37:30 -0300
Subject: [PATCH] core: Initialize cu->node with INIT_LIST_HEAD()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In cu__new() zalloc() is used defensively, and that helped catch this
problem where we assume that a cu us in the cus list of cu instances,
but that is not the case when we use cus__merge_and_process_cu(), for
instance when loading files created by clang with LTO, as reported by
Peter Jung and narrowed down by Nathan Chancellor.
If we use INIT_LIST_HEAD() in cu__new() to initialize cu->node, which is
what we do with other lists and nodes there, then the unconditional
removal using list_del_init() will be a no-op and removing something not
on the cus list of cu instances will not cause problems, just keep an
unconsistent cus->nr_entries field.
So lets just have this fix in first, keeping Nathan's Tested-by and then
do the a bit more involved fix of either adding that cu to the cus list
or checking at removal time if it is there.
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7f1e13e in __list_del (prev=0x0, next=0x0) at /home/acme/git/pahole/list.h:106
106 next->prev = prev;
(gdb) bt
#0 0x00007ffff7f1e13e in __list_del (prev=0x0, next=0x0) at /home/acme/git/pahole/list.h:106
#1 0x00007ffff7f1e176 in list_del_init (entry=0x417980) at /home/acme/git/pahole/list.h:165
#2 0x00007ffff7f1f8f9 in __cus__remove (cus=0x4142a0, cu=0x417980) at /home/acme/git/pahole/dwarves.c:527
#3 0x00007ffff7f1f92b in cus__remove (cus=0x4142a0, cu=0x417980) at /home/acme/git/pahole/dwarves.c:533
#4 0x00007ffff7f3d01c in cus__finalize (cus=0x4142a0, cu=0x417980, conf=0x4133c0 <conf_load>, thr_data=0x0)
at /home/acme/git/pahole/dwarf_loader.c:3040
#5 0x00007ffff7f3e05c in cus__merge_and_process_cu (cus=0x4142a0, conf=0x4133c0 <conf_load>, mod=0x415cf0, dw=0x416110, elf=0x414380,
filename=0x7fffffffe3f7 "cast_common.ko", build_id=0x416680 "\265D\371U\213\373u|\037\250\242\032\271\365⒜]y\023", build_id_len=20,
type_dcu=0x0) at /home/acme/git/pahole/dwarf_loader.c:3482
#6 0x00007ffff7f3e218 in cus__load_module (cus=0x4142a0, conf=0x4133c0 <conf_load>, mod=0x415cf0, dw=0x416110, elf=0x414380,
filename=0x7fffffffe3f7 "cast_common.ko") at /home/acme/git/pahole/dwarf_loader.c:3521
#7 0x00007ffff7f3e396 in cus__process_dwflmod (dwflmod=0x415cf0, userdata=0x415d00, name=0x415ea0 "cast_common.ko", base=65536,
arg=0x7fffffffde40) at /home/acme/git/pahole/dwarf_loader.c:3581
#8 0x00007ffff7eb4609 in dwfl_getmodules (dwfl=0x414300, callback=0x7ffff7f3e2ec <cus__process_dwflmod>, arg=0x7fffffffde40, offset=0)
at ../libdwfl/dwfl_getmodules.c:86
#9 0x00007ffff7f3e4c5 in cus__process_file (cus=0x4142a0, conf=0x4133c0 <conf_load>, fd=3, filename=0x7fffffffe3f7 "cast_common.ko")
at /home/acme/git/pahole/dwarf_loader.c:3647
#10 0x00007ffff7f3e5cd in dwarf__load_file (cus=0x4142a0, conf=0x4133c0 <conf_load>, filename=0x7fffffffe3f7 "cast_common.ko")
at /home/acme/git/pahole/dwarf_loader.c:3684
#11 0x00007ffff7f232df in cus__load_file (cus=0x4142a0, conf=0x4133c0 <conf_load>, filename=0x7fffffffe3f7 "cast_common.ko")
at /home/acme/git/pahole/dwarves.c:2134
#12 0x00007ffff7f23e8b in cus__load_files (cus=0x4142a0, conf=0x4133c0 <conf_load>, filenames=0x7fffffffe0f0)
at /home/acme/git/pahole/dwarves.c:2637
#13 0x000000000040aec0 in main (argc=2, argv=0x7fffffffe0e8) at /home/acme/git/pahole/pahole.c:3805
(gdb) fr 1
#1 0x00007ffff7f1e176 in list_del_init (entry=0x417980) at /home/acme/git/pahole/list.h:165
165 __list_del(entry->prev, entry->next);
(gdb) p entry
$1 = (struct list_head *) 0x417980
(gdb) p entry->next
$2 = (struct list_head *) 0x0
(gdb) p entry->prev
$3 = (struct list_head *) 0x0
Closes: https://github.com/acmel/dwarves/issues/53
Closes: https://gitlab.archlinux.org/archlinux/packaging/packages/pahole/-/issues/1
Tested-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/all/20240617210810.GA1877676@thelio-3990X
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
dwarves.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dwarves.c b/dwarves.c
index 1ec259f5..823a0152 100644
--- a/dwarves.c
+++ b/dwarves.c
@@ -739,6 +739,7 @@ struct cu *cu__new(const char *name, uint8_t addr_size,
cu->dfops = NULL;
INIT_LIST_HEAD(&cu->tags);
INIT_LIST_HEAD(&cu->tool_list);
+ INIT_LIST_HEAD(&cu->node);
cu->addr_size = addr_size;
cu->extra_dbg_info = 0;

@ -0,0 +1,46 @@
From 94a01bde592c555b3eb526aeb4c2ad695c5660d8 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Tue, 18 Jun 2024 11:14:09 -0300
Subject: [PATCH] dwarf_loader: Add missing cus__add(cus, cu) to
cus__merge_and_process_cu()
In cus__finalize() if cu__finalize() returns LSK__DELETE, i.e. if the
tool processing the cu is done with it, we will assume that it is in the
cus list of cu instances, remove it and then delete it.
This was not being done by cus__merge_and_process_cu(), used when
merging all DWARF CUs into a single 'struct cu', such as when processing
binaries generated by clang using LTO.
Add the missing cus__add() to keep cus->nr_entries consistent.
Cc: Alan Maguire <alan.maguire@oracle.com>
Cc: Daniel Xu <dxu@dxuuu.xyz>
Cc: Domenico Andreoli <cavok@debian.org>
Cc: Dominique Leuenberger <dimstar@opensuse.org>
Cc: Eduard Zingerman <eddyz87@gmail.com>
Cc: Jan Alexander Steffens <heftig@archlinux.org>
Cc: Jan Engelhardt <jengelh@inai.de>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Matthias Schwarzott <zzam@gentoo.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Viktor Malik <vmalik@redhat.com>
Cc: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/all/ZnGZ71a4E29kPrvS@x1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
dwarf_loader.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dwarf_loader.c b/dwarf_loader.c
index b832c93c..3caf3245 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -3452,6 +3452,7 @@ static int cus__merge_and_process_cu(struct cus *cus, struct conf_load *conf,
cu->priv = dcu;
cu->dfops = &dwarf__ops;
cu->language = attr_numeric(cu_die, DW_AT_language);
+ cus__add(cus, cu);
}
Dwarf_Die child;

@ -2,18 +2,22 @@
%define libver 1
Name: dwarves
Version: 1.25
Release: 1%{?dist}
License: GPLv2
Version: 1.27
Release: 2%{?dist}
License: GPL-2.0-only
Summary: Debugging Information Manipulation Tools (pahole & friends)
URL: http://acmel.wordpress.com
Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz
# core: Initialize cu->node with INIT_LIST_HEAD()
Patch: https://github.com/acmel/dwarves/commit/6a2b27c0f512619b0e7a769a18a0fb05bb3789a5.patch
# dwarf_loader: Add missing cus__add(cus, cu) to cus__merge_and_process_cu()
Patch: https://github.com/acmel/dwarves/commit/94a01bde592c555b3eb526aeb4c2ad695c5660d8.patch
Requires: %{libname}%{libver} = %{version}-%{release}
BuildRequires: gcc
BuildRequires: cmake >= 2.8.12
BuildRequires: zlib-devel
BuildRequires: elfutils-devel >= 0.130
BuildRequires: libbpf-devel
Provides: pahole
%description
dwarves is a set of tools that use the debugging information inserted in
@ -65,10 +69,10 @@ Requires: %{libname}%{libver} = %{version}-%{release}
Debugging information processing library development files.
%prep
%setup -q
%autosetup -p1
%build
%cmake -DCMAKE_BUILD_TYPE=Release -DLIBBPF_EMBEDDED=Off .
%cmake -DCMAKE_BUILD_TYPE=Release .
%cmake_build
%install
@ -80,7 +84,8 @@ rm -Rf %{buildroot}
%files
%doc README.ctracer
%doc README.btf
%doc changes-v1.25
%doc changes-v1.26
%doc changes-v1.27
%doc NEWS
%{_bindir}/btfdiff
%{_bindir}/codiff
@ -132,9 +137,51 @@ rm -Rf %{buildroot}
%{_libdir}/%{libname}_reorganize.so
%changelog
* Wed Jun 14 2023 Viktor Malik <vmalik@redhat.com> - 1.25-1
- Resolves: rhbz#2190484
- Build with system libbpf
* Tue Nov 26 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 1.27-2
- Rebuilt for MSVSphere 10
* Mon Aug 12 2024 Davide Cavalca <dcavalca@centosproject.org> - 1.27-2
- Backport upstream bugfixes for clang builds
Resolves: RHEL-54228
* Wed Jun 26 2024 Viktor Malik <vmalik@redhat.com> - 1.27-1
- Resolves: RHEL-45148
- Add gating.yaml
- Add "Provides: pahole"
- New release: v1.26
- When expanding types using 'pahole -E' do it for union and struct typedefs and for enums too.
- Print number of holes, bit holes and bit paddings in class member types.
- Introduce --contains_enumerator=ENUMERATOR_NAME:
- Fix pretty printing using DWARF, waiting for a CU with both class (-C) and a specified "type_enum".
- Add support for DW_TAG_constant in the DWARF loader, first seen in Go DWARF.
- Fix loading DW_TAG_subroutine_type generated by the Go compiler.
- Fix loading of 32-bit signed enums from BTF.
- Add 'pahole --btf_features' to allow consumers to specify an opt-in set of features they want to use in BTF encoding.
- Parallelize loading BTF and DWARF, speeding up a bit btfdiff.
- Do type expansion to cover "private" types and enumerations in btfdiff.
- New release: v1.27
- Reproducible parallel builds: multiple runs with different number of loading/encoding threads produce the same result.
- Inject kfunc decl tags into BTF from the BTF IDs ELF section in the Linux kernel vmlinux file.
- Sanitize unsupported DWARF int type with greater-than-16 byte, as BTF doesn't support it.
- Initial support for BTF_KIND_DECL_TAG in the BTF loader, adding support in pfunct output.
- Fix hole discovery with inheritance in C++.
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.25-6
- Bump release for June 2024 mass rebuild
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.25-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.25-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Oct 11 2023 Viktor Malik <vmalik@redhat.com> - 1.25-3
- Migrate license to SPDX
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.25-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sat Apr 8 2023 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.25-1
- New release: v1.25
- Support for DW_TAG_unspecified_type more generally.
- Make sure struct member offsets are in ascending order. Rust BTF needs this.
@ -146,12 +193,28 @@ rm -Rf %{buildroot}
- Support --compile from DWARF in addition to from BTF.
- Exclude RUST CUs in 'btfdiff', as those are not yet being BTF encoded.
* Wed Nov 16 2022 Viktor Malik <vmalik@redhat.com> - 1.24-2
- Backport BTF fix needed for kernel kfuncs
- Related: rhbz#2140020
* Fri Feb 17 2023 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.24-3
- Backport the DW_TAG_unspecified_type support while 1.25 gets ready wrt optimized functions support
* Fri Nov 04 2022 Viktor Malik <vmalik@redhat.com> - 1.24-1
- Resolves: rhbz#2140020
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.24-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Aug 17 2022 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.24-1
- New release: v1.24
- Add support to BTF_KIND_ENUM64.
- Support multithreaded BTF encoding.
- Encode char type as signed in BTF.
- Introduce --lang and --lang_exclude to pahole.
- Introduce --compile to pahole.
- Don't segfault when processing bogus files.
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.23-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.23-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Dec 8 2021 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.23-1
- New release: v1.23
- Process DW_TAG_LLVM_annotation tags.
- Initial support for DW_TAG_skeleton_unit.
@ -161,17 +224,9 @@ rm -Rf %{buildroot}
- Add --skip_missing to not stop when not finding one of -C arguments.
- Fix __attribute__((__aligned__(N)) printing alignment for struct members.
- Fix nested __attribute__(__aligned__(N)) struct printing order.
- New release: v1.24
- Add support to BTF_KIND_ENUM64.
- Support multithreaded BTF encoding.
- Encode char type as signed in BTF.
- Introduce --lang and --lang_exclude to pahole.
- Introduce --compile to pahole.
- Don't segfault when processing bogus files.
* Wed Oct 6 2021 Jiri Olsa <jolsa@redhat.com> - 1.22-1
* Mon Aug 23 2021 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.22-1
- New release: v1.22
- Resolves: rhbz#2010414
- Introduce -j/--jobs option to specify the number of threads to use.
- Multithreaded DWARF loading, requires elfutils >= 0.178.
- Preparatory work for multithreaded BTF encoding, the focus for 1.23.
@ -189,12 +244,13 @@ rm -Rf %{buildroot}
- Introduce sorted type output (--sort).
- Disable incomplete CTF encoder.
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.21-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.21-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri May 14 2021 Jiri Olsa <jolsa@redhat.com> - 1.21-1
- remove ftrace filter
* Mon May 10 2021 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.21-2
- Backport 0001-btf-Remove-ftrace-filter.patch from upstream
* Fri Apr 9 2021 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.21-1
- New release: v1.21
- DWARF loader:
- Handle DWARF5 DW_OP_addrx properly
@ -214,10 +270,7 @@ rm -Rf %{buildroot}
- Pretty printer:
- Honour conf_fprintf.hex when printing enumerations
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 1.20-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Feb 2 2021 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.20-1
* Tue Feb 2 2021 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.20-1
- New release: v1.20
- btf_encoder:
- Improve ELF error reporting using elf_errmsg(elf_errno())
@ -378,7 +431,7 @@ rm -Rf %{buildroot}
* Sat Nov 20 2010 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.9-1
- New release
* Tue Feb 08 2010 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.8-2
* Mon Feb 08 2010 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Dec 4 2009 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.8-1
@ -529,7 +582,7 @@ rm -Rf %{buildroot}
- Fix emission of arrays of structs, unions, etc
- use sysconf for the default cacheline size
* Wed Jan 18 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
* Thu Jan 18 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
- fab0db03ea9046893ca110bb2b7d71b764f61033
- pdwtags added

Loading…
Cancel
Save