Import from AlmaLinux stable repository
This commit is contained in:
parent
e83b0c918a
commit
2ee92b1c43
@ -1 +1 @@
|
|||||||
2f743d3dc421ae8478cb47051449c721b77f51ab SOURCES/dwarves-1.24.tar.xz
|
251fc1ff6b0f953f565f74c25c8aa55e7f8c50d9 SOURCES/dwarves-1.25.tar.xz
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/dwarves-1.24.tar.xz
|
SOURCES/dwarves-1.25.tar.xz
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
From b72f5188856df0abf45e1a707856bb4e4e86153c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alan Maguire <alan.maguire@oracle.com>
|
|
||||||
Date: Fri, 21 Oct 2022 16:02:03 +0100
|
|
||||||
Subject: [PATCH] dwarves: Zero-initialize struct cu in cu__new() to prevent
|
|
||||||
incorrect BTF types
|
|
||||||
|
|
||||||
BTF deduplication was throwing some strange results, where core kernel
|
|
||||||
data types were failing to deduplicate due to the return values
|
|
||||||
of function type members being void (0) instead of the actual type
|
|
||||||
(unsigned int). An example of this can be seen below, where
|
|
||||||
"struct dst_ops" was failing to deduplicate between kernel and
|
|
||||||
module:
|
|
||||||
|
|
||||||
struct dst_ops {
|
|
||||||
short unsigned int family;
|
|
||||||
unsigned int gc_thresh;
|
|
||||||
int (*gc)(struct dst_ops *);
|
|
||||||
struct dst_entry * (*check)(struct dst_entry *, __u32);
|
|
||||||
unsigned int (*default_advmss)(const struct dst_entry *);
|
|
||||||
unsigned int (*mtu)(const struct dst_entry *);
|
|
||||||
...
|
|
||||||
|
|
||||||
struct dst_ops___2 {
|
|
||||||
short unsigned int family;
|
|
||||||
unsigned int gc_thresh;
|
|
||||||
int (*gc)(struct dst_ops___2 *);
|
|
||||||
struct dst_entry___2 * (*check)(struct dst_entry___2 *, __u32);
|
|
||||||
void (*default_advmss)(const struct dst_entry___2 *);
|
|
||||||
void (*mtu)(const struct dst_entry___2 *);
|
|
||||||
...
|
|
||||||
|
|
||||||
This was seen with
|
|
||||||
|
|
||||||
bcc648a10cbc ("btf_encoder: Encode DW_TAG_unspecified_type returning routines as void")
|
|
||||||
|
|
||||||
...which rewrites the return value as 0 (void) when it is marked
|
|
||||||
as matching DW_TAG_unspecified_type:
|
|
||||||
|
|
||||||
static int32_t btf_encoder__tag_type(struct btf_encoder *encoder, uint32_t type_id_off, uint32_t tag_type)
|
|
||||||
{
|
|
||||||
if (tag_type == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (encoder->cu->unspecified_type.tag && tag_type == encoder->cu->unspecified_type.type) {
|
|
||||||
// No provision for encoding this, turn it into void.
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return type_id_off + tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
However the odd thing was that on further examination, the unspecified type
|
|
||||||
was not being set, so why was this logic being tripped? Futher debugging
|
|
||||||
showed that the encoder->cu->unspecified_type.tag value was garbage, and
|
|
||||||
the type id happened to collide with "unsigned int"; as a result we
|
|
||||||
were replacing unsigned ints with void return values, and since this
|
|
||||||
was being done to function type members in structs, it triggered a
|
|
||||||
type mismatch which failed deduplication between kernel and module.
|
|
||||||
|
|
||||||
The fix is simply to calloc() the cu in cu__new() instead.
|
|
||||||
|
|
||||||
Committer notes:
|
|
||||||
|
|
||||||
We have zalloc(size) as an alias to calloc(1, size), use it instead.
|
|
||||||
|
|
||||||
Fixes: bcc648a10cbcd0b9 ("btf_encoder: Encode DW_TAG_unspecified_type returning routines as void")
|
|
||||||
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
|
|
||||||
Acked-by: Andrii Nakryiko <andrii@kernel.org>
|
|
||||||
Acked-by: Jiri Olsa <jolsa@kernel.org>
|
|
||||||
Cc: bpf@vger.kernel.org
|
|
||||||
Cc: dwarves@vger.kernel.org
|
|
||||||
Link: https://lore.kernel.org/r/1666364523-9648-1-git-send-email-alan.maguire@oracle.com
|
|
||||||
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
||||||
---
|
|
||||||
dwarves.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/dwarves.c b/dwarves.c
|
|
||||||
index fbebc1d..95a3bac 100644
|
|
||||||
--- a/dwarves.c
|
|
||||||
+++ b/dwarves.c
|
|
||||||
@@ -626,7 +626,7 @@ struct cu *cu__new(const char *name, uint8_t addr_size,
|
|
||||||
const unsigned char *build_id, int build_id_len,
|
|
||||||
const char *filename, bool use_obstack)
|
|
||||||
{
|
|
||||||
- struct cu *cu = malloc(sizeof(*cu) + build_id_len);
|
|
||||||
+ struct cu *cu = zalloc(sizeof(*cu) + build_id_len);
|
|
||||||
|
|
||||||
if (cu != NULL) {
|
|
||||||
uint32_t void_id;
|
|
||||||
--
|
|
||||||
2.38.1
|
|
||||||
|
|
@ -2,18 +2,18 @@
|
|||||||
%define libver 1
|
%define libver 1
|
||||||
|
|
||||||
Name: dwarves
|
Name: dwarves
|
||||||
Version: 1.24
|
Version: 1.25
|
||||||
Release: 2%{?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
|
||||||
Requires: %{libname}%{libver} = %{version}-%{release}
|
Requires: %{libname}%{libver} = %{version}-%{release}
|
||||||
Patch1: 0001-dwarves-Zero-initialize-struct-cu-in-cu__new-to-prev.patch
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: cmake >= 2.8.12
|
BuildRequires: cmake >= 2.8.12
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
BuildRequires: elfutils-devel >= 0.130
|
BuildRequires: elfutils-devel >= 0.130
|
||||||
|
BuildRequires: libbpf-devel
|
||||||
|
|
||||||
%description
|
%description
|
||||||
dwarves is a set of tools that use the debugging information inserted in
|
dwarves is a set of tools that use the debugging information inserted in
|
||||||
@ -66,10 +66,9 @@ Debugging information processing library development files.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%cmake -DCMAKE_BUILD_TYPE=Release .
|
%cmake -DCMAKE_BUILD_TYPE=Release -DLIBBPF_EMBEDDED=Off .
|
||||||
%cmake_build
|
%cmake_build
|
||||||
|
|
||||||
%install
|
%install
|
||||||
@ -81,8 +80,7 @@ rm -Rf %{buildroot}
|
|||||||
%files
|
%files
|
||||||
%doc README.ctracer
|
%doc README.ctracer
|
||||||
%doc README.btf
|
%doc README.btf
|
||||||
%doc changes-v1.23
|
%doc changes-v1.25
|
||||||
%doc changes-v1.24
|
|
||||||
%doc NEWS
|
%doc NEWS
|
||||||
%{_bindir}/btfdiff
|
%{_bindir}/btfdiff
|
||||||
%{_bindir}/codiff
|
%{_bindir}/codiff
|
||||||
@ -134,6 +132,20 @@ rm -Rf %{buildroot}
|
|||||||
%{_libdir}/%{libname}_reorganize.so
|
%{_libdir}/%{libname}_reorganize.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jun 14 2023 Viktor Malik <vmalik@redhat.com> - 1.25-1
|
||||||
|
- Resolves: rhbz#2190484
|
||||||
|
- Build with system libbpf
|
||||||
|
- 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.
|
||||||
|
- Support C atomic types (DW_TAG_atomic_type).
|
||||||
|
- Initial support for DW_TAG_LLVM_annotation, used for BTF type tags, for __rcu, __user, etc
|
||||||
|
- Exclude functions with the same name (static functions in different CUs), inconsistent prototypes or not following calling convention.
|
||||||
|
- Allow generation of BTF for optimized functions, those that end with a .isra*, .constprop*.
|
||||||
|
- Support 'pahole --lang=/--lang_exclude=asm'
|
||||||
|
- 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
|
* Wed Nov 16 2022 Viktor Malik <vmalik@redhat.com> - 1.24-2
|
||||||
- Backport BTF fix needed for kernel kfuncs
|
- Backport BTF fix needed for kernel kfuncs
|
||||||
- Related: rhbz#2140020
|
- Related: rhbz#2140020
|
||||||
|
Loading…
Reference in New Issue
Block a user