SHA256
1
0
forked from pool/dwarves

Accepting request 840495 from devel:tools

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/840495
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/dwarves?expand=0&rev=23
This commit is contained in:
Dominique Leuenberger 2020-10-12 11:46:25 +00:00 committed by Git OBS Bridge
commit bb4c0709ca
8 changed files with 30 additions and 97 deletions

View File

@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCXmvkiQAKCRCyPKLppCJ+
J4lxAP4zV61YzVLpPVa3ruEfIVs9QlMzk83H9ng3mJ9l8SVb9AD/SzUtGLRwUuRR
6es+6YoDwkQCcilMN5K2xeRrctBeHws=
=X4s4
-----END PGP SIGNATURE-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f196b0604c16a3812031ed2cd4c14d27fef889186b514a16db2d2f52717aef70
size 309028

7
dwarves-1.18.tar.sign Normal file
View File

@ -0,0 +1,7 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCX3eWuAAKCRCyPKLppCJ+
J55QAQDLwpxXtKxPlDDj3rYt80cZUZpC61b++LYBLmf3n/jFIwD/ec6iNeLGJkAR
QvmKuS7pvduzR8epg0ORx/Ahoze+qg4=
=CWxS
-----END PGP SIGNATURE-----

3
dwarves-1.18.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:95aaec4c1d51816f6b2ce17fb80ddc95d48578e6bbdeafead3ecaf33a323d2c9
size 324912

View File

@ -1,37 +0,0 @@
From 2ecc308518edfe059f34fd1ad69ef39ad011cab9 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Fri, 18 Sep 2020 16:56:13 -0300
Subject: [PATCH] dwarf_loader: Bail out at DW_TAG_imported_unit tags
We need to support these in a future version, for now, just bail out to
avoid segfaults afterwards.
$ pahole examples/sles/vmlinux-5.3.18-109.g8ff6392-default.debug
WARNING: DW_TAG_partial_unit used, some types will not be considered!
Probably this was optimized using a tool like 'dwz'
A future version of pahole will take support this.
$
Reported-by: Tom de Vries
Bugtracker: https://github.com/acmel/dwarves/issues/10
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
dwarf_loader.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dwarf_loader.c b/dwarf_loader.c
index 74e0227..fd058aa 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -1615,6 +1615,8 @@ static struct tag *__die__process_tag(Dwarf_Die *die, struct cu *cu,
struct tag *tag;
switch (dwarf_tag(die)) {
+ case DW_TAG_imported_unit:
+ return NULL; // We don't support imported units yet, so to avoid segfaults
case DW_TAG_array_type:
tag = die__create_new_array(die, cu); break;
case DW_TAG_base_type:
--
2.28.0

View File

@ -1,44 +0,0 @@
From 8c92fd298101171dc8479acf4af2fdd2fad88c28 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Fri, 18 Sep 2020 13:53:01 -0300
Subject: [PATCH] dwarf_loader: Ignore entries in a DW_TAG_partial_unit, for
now
We will have to keep all CUs in memory and do lookups in imported units,
for now, just don't segfault.
Reported-by: Tom de Vries
Bugtracker: https://github.com/acmel/dwarves/issues/10
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
dwarf_loader.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/dwarf_loader.c b/dwarf_loader.c
index b8d7b35..74e0227 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -2085,7 +2085,19 @@ static int die__process(Dwarf_Die *die, struct cu *cu)
Dwarf_Die child;
const uint16_t tag = dwarf_tag(die);
- if (tag != DW_TAG_compile_unit && tag != DW_TAG_type_unit && tag != DW_TAG_partial_unit) {
+ if (tag == DW_TAG_partial_unit) {
+ static bool warned;
+
+ if (!warned) {
+ fprintf(stderr, "WARNING: DW_TAG_partial_unit used, some types will not be considered!\n"
+ " Probably this was optimized using a tool like 'dwz'\n"
+ " A future version of pahole will take support this.\n");
+ warned = true;
+ }
+ return 0; // so that other units can be processed
+ }
+
+ if (tag != DW_TAG_compile_unit && tag != DW_TAG_type_unit) {
fprintf(stderr, "%s: DW_TAG_compile_unit, DW_TAG_type_unit or DW_TAG_partial_unit expected got %s!\n",
__FUNCTION__, dwarf_tag_name(tag));
return -EINVAL;
--
2.28.0

View File

@ -1,3 +1,17 @@
-------------------------------------------------------------------
Fri Oct 2 22:00:47 UTC 2020 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.18
* pahole now should be segfault free when handling gdb test
suit DWARF files, including ADA, FORTRAN, rust and dwp
compressed files (the latter is refused).
* Bail out on partial units for now, avoiding segfaults.
- Drop
dwarves-dwarf_loader-Ignore-entries-in-a-DW_TAG_partial_unit-for-now.patch,
dwarves-dwarf_loader-Bail-out-at-DW_TAG_imported_unit-tags.patch
(merged)
- Add forced ELF symvers because of ABI breaks
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Sep 21 18:48:25 UTC 2020 - Tom de Vries <tdevries@suse.com> Mon Sep 21 18:48:25 UTC 2020 - Tom de Vries <tdevries@suse.com>

View File

@ -17,7 +17,7 @@
Name: dwarves Name: dwarves
Version: 1.17 Version: 1.18
Release: 0 Release: 0
Summary: DWARF utilities Summary: DWARF utilities
License: GPL-2.0-only License: GPL-2.0-only
@ -28,9 +28,7 @@ URL: http://acmel.wordpress.com/
Source: https://fedorapeople.org/~acme/dwarves/dwarves-%version.tar.xz Source: https://fedorapeople.org/~acme/dwarves/dwarves-%version.tar.xz
Source2: https://fedorapeople.org/~acme/dwarves/dwarves-%version.tar.sign Source2: https://fedorapeople.org/~acme/dwarves/dwarves-%version.tar.sign
Source9: baselibs.conf Source9: baselibs.conf
Patch0: libbpf-Fix-libbpf-hashmap-on-I-LP32-architectures.patch Patch1: libbpf-Fix-libbpf-hashmap-on-I-LP32-architectures.patch
Patch1: dwarves-dwarf_loader-Ignore-entries-in-a-DW_TAG_partial_unit-for-now.patch
Patch2: dwarves-dwarf_loader-Bail-out-at-DW_TAG_imported_unit-tags.patch
BuildRequires: cmake BuildRequires: cmake
BuildRequires: libdw-devel >= 0.170 BuildRequires: libdw-devel >= 0.170
%if 0%{?suse_version} < 1550 %if 0%{?suse_version} < 1550
@ -89,8 +87,10 @@ for processing DWARF, a debugging data format for ELF files.
%autosetup -p1 %autosetup -p1
%build %build
%cmake sv="$PWD/lib.v"
make %{?_smp_mflags} echo "DWARVES_%version { global: *; };" >"$sv"
%cmake -DCMAKE_SHARED_LINKER_FLAGS:STRING="-Wl,--version-script=$sv"
%cmake_build
%install %install
%cmake_install %cmake_install