import dwarves-1.17-1.el8

This commit is contained in:
CentOS Sources 2020-07-28 02:37:42 -04:00 committed by Stepan Oksanichenko
parent 19b55ad16d
commit e3093d965b
4 changed files with 8 additions and 101 deletions

View File

@ -1 +1 @@
90995f46f9fcec884748a1deeb2283a4ae202594 SOURCES/dwarves-1.15.tar.xz 66b7c00296027a8a5858ef32427919c3a84cf5ef SOURCES/dwarves-1.17.tar.xz

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/dwarves-1.15.tar.xz SOURCES/dwarves-1.17.tar.xz

View File

@ -1,94 +0,0 @@
From b1412a88bb616f449401be285d43b028962992b9 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Mon, 1 Jul 2019 11:37:40 -0300
Subject: [PATCH 1/1] fprintf: Fixup handling classes with no members
Will Cohen reported this NULL pointer dereference while processing some
object linking with cuda:
#0 0x00007ffff7f91453 in __class__fprintf (class=0x522560, cu=0x40ff80, conf=0x7fffffffa930, fp=0x7ffff7ece780 <_IO_2_1_stdout_>)
at /home/acme/git/pahole/dwarves_fprintf.c:1624
#1 0x00007ffff7f92195 in tag__fprintf (tag=0x522560, cu=0x40ff80, conf=0x7fffffffa930, fp=0x7ffff7ece780 <_IO_2_1_stdout_>)
at /home/acme/git/pahole/dwarves_fprintf.c:1835
#2 0x00007ffff7f90b57 in __class__fprintf (class=0x5224c0, cu=0x40ff80, conf=0x7fffffffaaa0, fp=0x7ffff7ece780 <_IO_2_1_stdout_>)
at /home/acme/git/pahole/dwarves_fprintf.c:1406
#3 0x00007ffff7f92195 in tag__fprintf (tag=0x5224c0, cu=0x40ff80, conf=0x40a200 <conf>, fp=0x7ffff7ece780 <_IO_2_1_stdout_>)
at /home/acme/git/pahole/dwarves_fprintf.c:1835
#4 0x0000000000402d03 in class_formatter (class=0x5224c0, cu=0x40ff80, id=1257) at /home/acme/git/pahole/pahole.c:224
#5 0x0000000000403074 in print_classes (cu=0x40ff80) at /home/acme/git/pahole/pahole.c:319
#6 0x0000000000404bb2 in pahole_stealer (cu=0x40ff80, conf_load=0x40a240 <conf_load>) at /home/acme/git/pahole/pahole.c:1174
#7 0x00007ffff7f9ff73 in finalize_cu (cus=0x40b2b0, cu=0x40ff80, dcu=0x7fffffffacf0, conf=0x40a240 <conf_load>)
at /home/acme/git/pahole/dwarf_loader.c:2227
#8 0x00007ffff7f9ffac in finalize_cu_immediately (cus=0x40b2b0, cu=0x40ff80, dcu=0x7fffffffacf0, conf=0x40a240 <conf_load>)
at /home/acme/git/pahole/dwarf_loader.c:2236
#9 0x00007ffff7fa064c in cus__load_module (cus=0x40b2b0, conf=0x40a240 <conf_load>, mod=0x40d760, dw=0x40e980, elf=0x40b360,
filename=0x7fffffffd5e3 "examples/wcohen/02_Exercise.cuda") at /home/acme/git/pahole/dwarf_loader.c:2389
#10 0x00007ffff7fa0760 in cus__process_dwflmod (dwflmod=0x40d760, userdata=0x40d770, name=0x40d910 "examples/wcohen/02_Exercise.cuda",
base=4194304, arg=0x7fffffffcf10) at /home/acme/git/pahole/dwarf_loader.c:2434
#11 0x00007ffff7f32be1 in dwfl_getmodules () from /lib64/libdw.so.1
#12 0x00007ffff7fa0820 in cus__process_file (cus=0x40b2b0, conf=0x40a240 <conf_load>, fd=3,
filename=0x7fffffffd5e3 "examples/wcohen/02_Exercise.cuda") at /home/acme/git/pahole/dwarf_loader.c:2487
#13 0x00007ffff7fa089c in dwarf__load_file (cus=0x40b2b0, conf=0x40a240 <conf_load>, filename=0x7fffffffd5e3 "examples/wcohen/02_Exercise.cuda")
at /home/acme/git/pahole/dwarf_loader.c:2504
#14 0x00007ffff7f8b0dd in cus__load_file (cus=0x40b2b0, conf=0x40a240 <conf_load>, filename=0x7fffffffd5e3 "examples/wcohen/02_Exercise.cuda")
at /home/acme/git/pahole/dwarves.c:1745
#15 0x00007ffff7f8bc2a in cus__load_files (cus=0x40b2b0, conf=0x40a240 <conf_load>, filenames=0x7fffffffd150)
at /home/acme/git/pahole/dwarves.c:2109
#16 0x0000000000404ff0 in main (argc=2, argv=0x7fffffffd148) at /home/acme/git/pahole/pahole.c:1294
(gdb)
(gdb) p class__name(class, cu)
$6 = 0x5cbb85 "__nv_hdl_helper_trait<__nv_dl_tag<int (*)(int, char**), main, 1u>, void (main(int, char**)::__lambda0::*)(int, double&)const>"
(gdb) p class->type.nr_members
$7 = 0
(gdb) p last
$8 = (struct class_member *) 0x0
(gdb)
So, before checking for bitfield details, first check if there were
members.
Now, if we show all structs/classes in that object file and look for the
above data structure, we find it inside another:
$ pahole examples/wcohen/02_Exercise.cuda
<SNIP>
struct __nv_hdl_helper_trait_outer<false, false, int, Kokkos::View<double**>, Kokkos::View<double*>, Kokkos::View<double*> > {
struct __nv_hdl_helper_trait<__nv_dl_tag<int (*)(int, char**), main, 1u>, void (main(int, char**)::__lambda0::*)(int, double&)const> {
class __nv_hdl_wrapper_t<false, false, __nv_dl_tag<int (*)(int, char**), main, 1u>, void(int, double&), int, Kokkos::View<doubl get<main(int, char**)::__lambda0>(class __lambda0, int, class View<double**>, class View<double*>, class View<double*>);
/* size: 1, cachelines: 0, members: 0 */
/* padding: 1 */
/* last cacheline: 1 bytes */
};
/* size: 1, cachelines: 0, members: 0 */
/* padding: 1 */
/* last cacheline: 1 bytes */
};
<SNIP>
$
Reported-by: William Cohen <wcohen@redhat.com>
Fixes: 13e5b9fc00ee ("fprintf: Add unnamed bitfield padding at the end to rebuild original type")
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
dwarves_fprintf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dwarves_fprintf.c b/dwarves_fprintf.c
index 8ad1ced7840c..706f1b5033f5 100644
--- a/dwarves_fprintf.c
+++ b/dwarves_fprintf.c
@@ -1620,7 +1620,7 @@ static size_t __class__fprintf(struct class *class, const struct cu *cu,
* to avoid adding the forced bitfield paddings and have btfdiff happy.
*/
if (class->padding != 0 && type->alignment == 0 && cconf.has_alignment_info &&
- !cconf.suppress_force_paddings) {
+ !cconf.suppress_force_paddings && last != NULL) {
tag_pos = cu__type(cu, last->tag.type);
size = tag__size(tag_pos, cu);
--
2.20.1

View File

@ -2,13 +2,12 @@
%define libver 1 %define libver 1
Name: dwarves Name: dwarves
Version: 1.15 Version: 1.17
Release: 5%{?dist} Release: 1%{?dist}
License: GPLv2 License: GPLv2
Summary: Debugging Information Manipulation Tools (pahole & friends) Summary: Debugging Information Manipulation Tools (pahole & friends)
URL: http://acmel.wordpress.com URL: http://acmel.wordpress.com
Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz
Patch: 0001-fprintf-Fixup-handling-classes-with-no-members.patch
Requires: %{libname}%{libver} = %{version}-%{release} Requires: %{libname}%{libver} = %{version}-%{release}
BuildRequires: gcc BuildRequires: gcc
BuildRequires: cmake BuildRequires: cmake
@ -50,8 +49,7 @@ Requires: %{libname}%{libver} = %{version}-%{release}
Debugging information processing library development files. Debugging information processing library development files.
%prep %prep
%setup -q -c -n %{name}-%{version} %setup -q -n %{name}-%{version}
%patch -p1
%build %build
%cmake . %cmake .
@ -120,6 +118,9 @@ make install DESTDIR=%{buildroot}
%{_libdir}/%{libname}_reorganize.so %{_libdir}/%{libname}_reorganize.so
%changelog %changelog
* Tue May 26 2020 Jiri Olsa <jolsa@redhat.com> - 1.17-1
- moving to v1.17 version
* Wed Nov 06 2019 Jiri Olsa <jolsa@redhat.com> - 1.15-5 * Wed Nov 06 2019 Jiri Olsa <jolsa@redhat.com> - 1.15-5
- Add libdwarves version dependency to dwarves package - Add libdwarves version dependency to dwarves package