import dwarves-1.21-2.el9
This commit is contained in:
commit
2ecb640231
1
.dwarves.metadata
Normal file
1
.dwarves.metadata
Normal file
@ -0,0 +1 @@
|
||||
4bd8a111efefbf4058942e76d1193810e4ee5515 SOURCES/dwarves-1.21.tar.xz
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
SOURCES/dwarves-1.21.tar.xz
|
392
SOURCES/0001-btf-Remove-ftrace-filter.patch
Normal file
392
SOURCES/0001-btf-Remove-ftrace-filter.patch
Normal file
@ -0,0 +1,392 @@
|
||||
From 58a98f76ac95b1bb11920ff2b58206b2364e6b3b Mon Sep 17 00:00:00 2001
|
||||
From: Martin KaFai Lau <kafai@fb.com>
|
||||
Date: Thu, 6 May 2021 13:56:22 -0700
|
||||
Subject: [PATCH] btf: Remove ftrace filter
|
||||
|
||||
BTF is currently generated for functions that are in ftrace list
|
||||
or extern.
|
||||
|
||||
A recent use case also needs BTF generated for functions included in
|
||||
allowlist.
|
||||
|
||||
In particular, the kernel commit:
|
||||
|
||||
e78aea8b2170 ("bpf: tcp: Put some tcp cong functions in allowlist for bpf-tcp-cc")
|
||||
|
||||
allows bpf program to directly call a few tcp cc kernel functions. Those
|
||||
kernel functions are currently allowed only if CONFIG_DYNAMIC_FTRACE
|
||||
is set to ensure they are in the ftrace list but this kconfig dependency
|
||||
is unnecessary.
|
||||
|
||||
Those kernel functions are specified under an ELF section .BTF_ids.
|
||||
There was an earlier attempt [0] to add another filter for the functions in
|
||||
the .BTF_ids section. That discussion concluded that the ftrace filter
|
||||
should be removed instead.
|
||||
|
||||
This patch is to remove the ftrace filter and its related functions.
|
||||
|
||||
Number of BTF FUNC with and without is_ftrace_func():
|
||||
My kconfig in x86: 40643 vs 46225
|
||||
Jiri reported on arm: 25022 vs 55812
|
||||
|
||||
[0]: https://lore.kernel.org/dwarves/20210423213728.3538141-1-kafai@fb.com/
|
||||
|
||||
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
|
||||
Tested-by: Nathan Chancellor <nathan@kernel.org> # build
|
||||
Acked-by: Jiri Olsa <jolsa@kernel.org>
|
||||
Acked-by: Jiri Slaby <jirislaby@kernel.org>
|
||||
Cc: Andrii Nakryiko <andrii@kernel.org>
|
||||
Cc: Jiri Olsa <jolsa@kernel.org>
|
||||
Cc: kernel-team@fb.com
|
||||
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
---
|
||||
btf_encoder.c | 285 ++------------------------------------------------
|
||||
1 file changed, 7 insertions(+), 278 deletions(-)
|
||||
|
||||
diff --git a/btf_encoder.c b/btf_encoder.c
|
||||
index 80e896961d4e..c711f124b31e 100644
|
||||
--- a/btf_encoder.c
|
||||
+++ b/btf_encoder.c
|
||||
@@ -27,17 +27,8 @@
|
||||
*/
|
||||
#define KSYM_NAME_LEN 128
|
||||
|
||||
-struct funcs_layout {
|
||||
- unsigned long mcount_start;
|
||||
- unsigned long mcount_stop;
|
||||
- unsigned long mcount_sec_idx;
|
||||
-};
|
||||
-
|
||||
struct elf_function {
|
||||
const char *name;
|
||||
- unsigned long addr;
|
||||
- unsigned long size;
|
||||
- unsigned long sh_addr;
|
||||
bool generated;
|
||||
};
|
||||
|
||||
@@ -64,12 +55,9 @@ static void delete_functions(void)
|
||||
#define max(x, y) ((x) < (y) ? (y) : (x))
|
||||
#endif
|
||||
|
||||
-static int collect_function(struct btf_elf *btfe, GElf_Sym *sym,
|
||||
- size_t sym_sec_idx)
|
||||
+static int collect_function(struct btf_elf *btfe, GElf_Sym *sym)
|
||||
{
|
||||
struct elf_function *new;
|
||||
- static GElf_Shdr sh;
|
||||
- static size_t last_idx;
|
||||
const char *name;
|
||||
|
||||
if (elf_sym__type(sym) != STT_FUNC)
|
||||
@@ -91,257 +79,12 @@ static int collect_function(struct btf_elf *btfe, GElf_Sym *sym,
|
||||
functions = new;
|
||||
}
|
||||
|
||||
- if (sym_sec_idx != last_idx) {
|
||||
- if (!elf_section_by_idx(btfe->elf, &sh, sym_sec_idx))
|
||||
- return 0;
|
||||
- last_idx = sym_sec_idx;
|
||||
- }
|
||||
-
|
||||
functions[functions_cnt].name = name;
|
||||
- functions[functions_cnt].addr = elf_sym__value(sym);
|
||||
- functions[functions_cnt].size = elf_sym__size(sym);
|
||||
- functions[functions_cnt].sh_addr = sh.sh_addr;
|
||||
functions[functions_cnt].generated = false;
|
||||
functions_cnt++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int addrs_cmp(const void *_a, const void *_b)
|
||||
-{
|
||||
- const __u64 *a = _a;
|
||||
- const __u64 *b = _b;
|
||||
-
|
||||
- if (*a == *b)
|
||||
- return 0;
|
||||
- return *a < *b ? -1 : 1;
|
||||
-}
|
||||
-
|
||||
-static int get_vmlinux_addrs(struct btf_elf *btfe, struct funcs_layout *fl,
|
||||
- __u64 **paddrs, __u64 *pcount)
|
||||
-{
|
||||
- __u64 *addrs, count, offset;
|
||||
- unsigned int addr_size, i;
|
||||
- Elf_Data *data;
|
||||
- GElf_Shdr shdr;
|
||||
- Elf_Scn *sec;
|
||||
-
|
||||
- /* Initialize for the sake of all error paths below. */
|
||||
- *paddrs = NULL;
|
||||
- *pcount = 0;
|
||||
-
|
||||
- if (!fl->mcount_start || !fl->mcount_stop)
|
||||
- return 0;
|
||||
-
|
||||
- /*
|
||||
- * Find mcount addressed marked by __start_mcount_loc
|
||||
- * and __stop_mcount_loc symbols and load them into
|
||||
- * sorted array.
|
||||
- */
|
||||
- sec = elf_getscn(btfe->elf, fl->mcount_sec_idx);
|
||||
- if (!sec || !gelf_getshdr(sec, &shdr)) {
|
||||
- fprintf(stderr, "Failed to get section(%lu) header.\n",
|
||||
- fl->mcount_sec_idx);
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- /* Get address size from processed file's ELF class. */
|
||||
- addr_size = gelf_getclass(btfe->elf) == ELFCLASS32 ? 4 : 8;
|
||||
-
|
||||
- offset = fl->mcount_start - shdr.sh_addr;
|
||||
- count = (fl->mcount_stop - fl->mcount_start) / addr_size;
|
||||
-
|
||||
- data = elf_getdata(sec, 0);
|
||||
- if (!data) {
|
||||
- fprintf(stderr, "Failed to get section(%lu) data.\n",
|
||||
- fl->mcount_sec_idx);
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- addrs = malloc(count * sizeof(addrs[0]));
|
||||
- if (!addrs) {
|
||||
- fprintf(stderr, "Failed to allocate memory for ftrace addresses.\n");
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- if (addr_size == sizeof(__u64)) {
|
||||
- memcpy(addrs, data->d_buf + offset, count * addr_size);
|
||||
- } else {
|
||||
- for (i = 0; i < count; i++)
|
||||
- addrs[i] = (__u64) *((__u32 *) (data->d_buf + offset + i * addr_size));
|
||||
- }
|
||||
-
|
||||
- *paddrs = addrs;
|
||||
- *pcount = count;
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int
|
||||
-get_kmod_addrs(struct btf_elf *btfe, __u64 **paddrs, __u64 *pcount)
|
||||
-{
|
||||
- __u64 *addrs, count;
|
||||
- unsigned int addr_size, i;
|
||||
- GElf_Shdr shdr_mcount;
|
||||
- Elf_Data *data;
|
||||
- Elf_Scn *sec;
|
||||
-
|
||||
- /* Initialize for the sake of all error paths below. */
|
||||
- *paddrs = NULL;
|
||||
- *pcount = 0;
|
||||
-
|
||||
- /* get __mcount_loc */
|
||||
- sec = elf_section_by_name(btfe->elf, &btfe->ehdr, &shdr_mcount,
|
||||
- "__mcount_loc", NULL);
|
||||
- if (!sec) {
|
||||
- if (btf_elf__verbose) {
|
||||
- printf("%s: '%s' doesn't have __mcount_loc section\n", __func__,
|
||||
- btfe->filename);
|
||||
- }
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- data = elf_getdata(sec, NULL);
|
||||
- if (!data) {
|
||||
- fprintf(stderr, "Failed to data for __mcount_loc section.\n");
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- /* Get address size from processed file's ELF class. */
|
||||
- addr_size = gelf_getclass(btfe->elf) == ELFCLASS32 ? 4 : 8;
|
||||
-
|
||||
- count = data->d_size / addr_size;
|
||||
-
|
||||
- addrs = malloc(count * sizeof(addrs[0]));
|
||||
- if (!addrs) {
|
||||
- fprintf(stderr, "Failed to allocate memory for ftrace addresses.\n");
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- if (addr_size == sizeof(__u64)) {
|
||||
- memcpy(addrs, data->d_buf, count * addr_size);
|
||||
- } else {
|
||||
- for (i = 0; i < count; i++)
|
||||
- addrs[i] = (__u64) *((__u32 *) (data->d_buf + i * addr_size));
|
||||
- }
|
||||
-
|
||||
- /*
|
||||
- * We get Elf object from dwfl_module_getelf function,
|
||||
- * which performs all possible relocations, including
|
||||
- * __mcount_loc section.
|
||||
- *
|
||||
- * So addrs array now contains relocated values, which
|
||||
- * we need take into account when we compare them to
|
||||
- * functions values, see comment in setup_functions
|
||||
- * function.
|
||||
- */
|
||||
- *paddrs = addrs;
|
||||
- *pcount = count;
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int is_ftrace_func(struct elf_function *func, __u64 *addrs, __u64 count)
|
||||
-{
|
||||
- __u64 start = func->addr;
|
||||
- __u64 addr, end = func->addr + func->size;
|
||||
-
|
||||
- /*
|
||||
- * The invariant here is addr[r] that is the smallest address
|
||||
- * that is >= than function start addr. Except the corner case
|
||||
- * where there is no such r, but for that we have a final check
|
||||
- * in the return.
|
||||
- */
|
||||
- size_t l = 0, r = count - 1, m;
|
||||
-
|
||||
- /* make sure we don't use invalid r */
|
||||
- if (count == 0)
|
||||
- return false;
|
||||
-
|
||||
- while (l < r) {
|
||||
- m = l + (r - l) / 2;
|
||||
- addr = addrs[m];
|
||||
-
|
||||
- if (addr >= start) {
|
||||
- /* we satisfy invariant, so tighten r */
|
||||
- r = m;
|
||||
- } else {
|
||||
- /* m is not good enough as l, maybe m + 1 will be */
|
||||
- l = m + 1;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return start <= addrs[r] && addrs[r] < end;
|
||||
-}
|
||||
-
|
||||
-static int setup_functions(struct btf_elf *btfe, struct funcs_layout *fl)
|
||||
-{
|
||||
- __u64 *addrs, count, i;
|
||||
- int functions_valid = 0;
|
||||
- bool kmod = false;
|
||||
-
|
||||
- /*
|
||||
- * Check if we are processing vmlinux image and
|
||||
- * get mcount data if it's detected.
|
||||
- */
|
||||
- if (get_vmlinux_addrs(btfe, fl, &addrs, &count))
|
||||
- return -1;
|
||||
-
|
||||
- /*
|
||||
- * Check if we are processing kernel module and
|
||||
- * get mcount data if it's detected.
|
||||
- */
|
||||
- if (!addrs) {
|
||||
- if (get_kmod_addrs(btfe, &addrs, &count))
|
||||
- return -1;
|
||||
- kmod = true;
|
||||
- }
|
||||
-
|
||||
- if (!addrs) {
|
||||
- if (btf_elf__verbose)
|
||||
- printf("ftrace symbols not detected, falling back to DWARF data\n");
|
||||
- delete_functions();
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- qsort(addrs, count, sizeof(addrs[0]), addrs_cmp);
|
||||
- qsort(functions, functions_cnt, sizeof(functions[0]), functions_cmp);
|
||||
-
|
||||
- /*
|
||||
- * Let's got through all collected functions and filter
|
||||
- * out those that are not in ftrace.
|
||||
- */
|
||||
- for (i = 0; i < functions_cnt; i++) {
|
||||
- struct elf_function *func = &functions[i];
|
||||
- /*
|
||||
- * For vmlinux image both addrs[x] and functions[x]::addr
|
||||
- * values are final address and are comparable.
|
||||
- *
|
||||
- * For kernel module addrs[x] is final address, but
|
||||
- * functions[x]::addr is relative address within section
|
||||
- * and needs to be relocated by adding sh_addr.
|
||||
- */
|
||||
- if (kmod)
|
||||
- func->addr += func->sh_addr;
|
||||
-
|
||||
- /* Make sure function is within ftrace addresses. */
|
||||
- if (is_ftrace_func(func, addrs, count)) {
|
||||
- /*
|
||||
- * We iterate over sorted array, so we can easily skip
|
||||
- * not valid item and move following valid field into
|
||||
- * its place, and still keep the 'new' array sorted.
|
||||
- */
|
||||
- if (i != functions_valid)
|
||||
- functions[functions_valid] = functions[i];
|
||||
- functions_valid++;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- functions_cnt = functions_valid;
|
||||
- free(addrs);
|
||||
-
|
||||
- if (btf_elf__verbose)
|
||||
- printf("Found %d functions!\n", functions_cnt);
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
static struct elf_function *find_function(const struct btf_elf *btfe,
|
||||
const char *name)
|
||||
{
|
||||
@@ -620,23 +363,8 @@ static int collect_percpu_var(struct btf_elf *btfe, GElf_Sym *sym,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static void collect_symbol(GElf_Sym *sym, struct funcs_layout *fl,
|
||||
- size_t sym_sec_idx)
|
||||
-{
|
||||
- if (!fl->mcount_start &&
|
||||
- !strcmp("__start_mcount_loc", elf_sym__name(sym, btfe->symtab))) {
|
||||
- fl->mcount_start = sym->st_value;
|
||||
- fl->mcount_sec_idx = sym_sec_idx;
|
||||
- }
|
||||
-
|
||||
- if (!fl->mcount_stop &&
|
||||
- !strcmp("__stop_mcount_loc", elf_sym__name(sym, btfe->symtab)))
|
||||
- fl->mcount_stop = sym->st_value;
|
||||
-}
|
||||
-
|
||||
static int collect_symbols(struct btf_elf *btfe, bool collect_percpu_vars)
|
||||
{
|
||||
- struct funcs_layout fl = { };
|
||||
Elf32_Word sym_sec_idx;
|
||||
uint32_t core_id;
|
||||
GElf_Sym sym;
|
||||
@@ -648,9 +376,8 @@ static int collect_symbols(struct btf_elf *btfe, bool collect_percpu_vars)
|
||||
elf_symtab__for_each_symbol_index(btfe->symtab, core_id, sym, sym_sec_idx) {
|
||||
if (collect_percpu_vars && collect_percpu_var(btfe, &sym, sym_sec_idx))
|
||||
return -1;
|
||||
- if (collect_function(btfe, &sym, sym_sec_idx))
|
||||
+ if (collect_function(btfe, &sym))
|
||||
return -1;
|
||||
- collect_symbol(&sym, &fl, sym_sec_idx);
|
||||
}
|
||||
|
||||
if (collect_percpu_vars) {
|
||||
@@ -661,9 +388,11 @@ static int collect_symbols(struct btf_elf *btfe, bool collect_percpu_vars)
|
||||
printf("Found %d per-CPU variables!\n", percpu_var_cnt);
|
||||
}
|
||||
|
||||
- if (functions_cnt && setup_functions(btfe, &fl)) {
|
||||
- fprintf(stderr, "Failed to filter DWARF functions\n");
|
||||
- return -1;
|
||||
+ if (functions_cnt) {
|
||||
+ qsort(functions, functions_cnt, sizeof(functions[0]),
|
||||
+ functions_cmp);
|
||||
+ if (btf_elf__verbose)
|
||||
+ printf("Found %d functions!\n", functions_cnt);
|
||||
}
|
||||
|
||||
return 0;
|
||||
--
|
||||
2.31.1
|
||||
|
504
SPECS/dwarves.spec
Normal file
504
SPECS/dwarves.spec
Normal file
@ -0,0 +1,504 @@
|
||||
%define libname libdwarves
|
||||
%define libver 1
|
||||
|
||||
Name: dwarves
|
||||
Version: 1.21
|
||||
Release: 2%{?dist}
|
||||
License: GPLv2
|
||||
Summary: Debugging Information Manipulation Tools (pahole & friends)
|
||||
URL: http://acmel.wordpress.com
|
||||
Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz
|
||||
Requires: %{libname}%{libver} = %{version}-%{release}
|
||||
Patch1: 0001-btf-Remove-ftrace-filter.patch
|
||||
BuildRequires: gcc
|
||||
BuildRequires: cmake >= 2.8.12
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: elfutils-devel >= 0.130
|
||||
|
||||
%description
|
||||
dwarves is a set of tools that use the debugging information inserted in
|
||||
ELF binaries by compilers such as GCC, used by well known debuggers such as
|
||||
GDB, and more recent ones such as systemtap.
|
||||
|
||||
Utilities in the dwarves suite include pahole, that can be used to find
|
||||
alignment holes in structs and classes in languages such as C, C++, but not
|
||||
limited to these.
|
||||
|
||||
It also extracts other information such as CPU cacheline alignment, helping
|
||||
pack those structures to achieve more cache hits.
|
||||
|
||||
These tools can also be used to encode and read the BTF type information format
|
||||
used with the Linux kernel bpf syscall, using 'pahole -J' and 'pahole -F btf'.
|
||||
|
||||
A diff like tool, codiff can be used to compare the effects changes in source
|
||||
code generate on the resulting binaries.
|
||||
|
||||
Another tool is pfunct, that can be used to find all sorts of information about
|
||||
functions, inlines, decisions made by the compiler about inlining, etc.
|
||||
|
||||
One example of pfunct usage is in the fullcircle tool, a shell that drivers
|
||||
pfunct to generate compileable code out of a .o file and then build it using
|
||||
gcc, with the same compiler flags, and then use codiff to make sure the
|
||||
original .o file and the new one generated from debug info produces the same
|
||||
debug info.
|
||||
|
||||
Pahole also can be used to use all this type information to pretty print raw data
|
||||
according to command line directions.
|
||||
|
||||
Headers can have its data format described from debugging info and offsets from
|
||||
it can be used to further format a number of records.
|
||||
|
||||
The btfdiff utility compares the output of pahole from BTF and DWARF to make
|
||||
sure they produce the same results.
|
||||
|
||||
%package -n %{libname}%{libver}
|
||||
Summary: Debugging information processing library
|
||||
|
||||
%description -n %{libname}%{libver}
|
||||
Debugging information processing library.
|
||||
|
||||
%package -n %{libname}%{libver}-devel
|
||||
Summary: Debugging information library development files
|
||||
Requires: %{libname}%{libver} = %{version}-%{release}
|
||||
|
||||
%description -n %{libname}%{libver}-devel
|
||||
Debugging information processing library development files.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1
|
||||
|
||||
%build
|
||||
%cmake -DCMAKE_BUILD_TYPE=Release .
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
rm -Rf %{buildroot}
|
||||
%cmake_install
|
||||
|
||||
%ldconfig_scriptlets -n %{libname}%{libver}
|
||||
|
||||
%files
|
||||
%doc README.ctracer
|
||||
%doc README.btf
|
||||
%doc changes-v1.21
|
||||
%doc NEWS
|
||||
%{_bindir}/btfdiff
|
||||
%{_bindir}/codiff
|
||||
%{_bindir}/ctracer
|
||||
%{_bindir}/dtagnames
|
||||
%{_bindir}/fullcircle
|
||||
%{_bindir}/pahole
|
||||
%{_bindir}/pdwtags
|
||||
%{_bindir}/pfunct
|
||||
%{_bindir}/pglobal
|
||||
%{_bindir}/prefcnt
|
||||
%{_bindir}/scncopy
|
||||
%{_bindir}/syscse
|
||||
%{_bindir}/ostra-cg
|
||||
%dir %{_datadir}/dwarves/
|
||||
%dir %{_datadir}/dwarves/runtime/
|
||||
%dir %{_datadir}/dwarves/runtime/python/
|
||||
%defattr(0644,root,root,0755)
|
||||
%{_mandir}/man1/pahole.1*
|
||||
%{_datadir}/dwarves/runtime/Makefile
|
||||
%{_datadir}/dwarves/runtime/linux.blacklist.cu
|
||||
%{_datadir}/dwarves/runtime/ctracer_relay.c
|
||||
%{_datadir}/dwarves/runtime/ctracer_relay.h
|
||||
%attr(0755,root,root) %{_datadir}/dwarves/runtime/python/ostra.py*
|
||||
|
||||
%files -n %{libname}%{libver}
|
||||
%{_libdir}/%{libname}.so.*
|
||||
%{_libdir}/%{libname}_emit.so.*
|
||||
%{_libdir}/%{libname}_reorganize.so.*
|
||||
|
||||
%files -n %{libname}%{libver}-devel
|
||||
%doc MANIFEST README
|
||||
%{_includedir}/dwarves/btf_encoder.h
|
||||
%{_includedir}/dwarves/config.h
|
||||
%{_includedir}/dwarves/ctf_encoder.h
|
||||
%{_includedir}/dwarves/ctf.h
|
||||
%{_includedir}/dwarves/dutil.h
|
||||
%{_includedir}/dwarves/dwarves.h
|
||||
%{_includedir}/dwarves/dwarves_emit.h
|
||||
%{_includedir}/dwarves/dwarves_reorganize.h
|
||||
%{_includedir}/dwarves/elfcreator.h
|
||||
%{_includedir}/dwarves/elf_symtab.h
|
||||
%{_includedir}/dwarves/gobuffer.h
|
||||
%{_includedir}/dwarves/hash.h
|
||||
%{_includedir}/dwarves/libbtf.h
|
||||
%{_includedir}/dwarves/libctf.h
|
||||
%{_includedir}/dwarves/list.h
|
||||
%{_includedir}/dwarves/rbtree.h
|
||||
%{_includedir}/dwarves/pahole_strings.h
|
||||
%{_libdir}/%{libname}.so
|
||||
%{_libdir}/%{libname}_emit.so
|
||||
%{_libdir}/%{libname}_reorganize.so
|
||||
|
||||
%changelog
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.21-2
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
||||
* Fri May 14 2021 Jiri Olsa <jolsa@redhat.com> - 1.21-1
|
||||
- remove ftrace filter
|
||||
- New release: v1.21
|
||||
- DWARF loader:
|
||||
- Handle DWARF5 DW_OP_addrx properly
|
||||
- Handle subprogram ret type with abstract_origin properly
|
||||
- Check .notes section for LTO build info
|
||||
- Check .debug_abbrev for cross-CU references
|
||||
- Permit merging all DWARF CU's for clang LTO built binary
|
||||
- Factor out common code to initialize a cu
|
||||
- Permit a flexible HASHTAGS__BITS
|
||||
- Use a better hashing function, from libbpf
|
||||
- btf_encoder:
|
||||
- Add --btf_gen_all flag
|
||||
- Match ftrace addresses within ELF functions
|
||||
- Funnel ELF error reporting through a macro
|
||||
- Sanitize non-regular int base type
|
||||
- Add support for the floating-point types
|
||||
- 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
|
||||
- New release: v1.20
|
||||
- btf_encoder:
|
||||
- Improve ELF error reporting using elf_errmsg(elf_errno())
|
||||
- Improve objcopy error handling.
|
||||
- Fix handling of 'restrict' qualifier, that was being treated as a 'const'.
|
||||
- Support SHN_XINDEX in st_shndx symbol indexes
|
||||
- Cope with functions without a name
|
||||
- Fix BTF variable generation for kernel modules
|
||||
- Fix address size to match what is in the ELF file being processed.
|
||||
- Use kernel module ftrace addresses when finding which functions to encode.
|
||||
- libbpf:
|
||||
- Allow use of packaged version.
|
||||
- dwarf_loader:
|
||||
- Support DW_AT_data_bit_offset
|
||||
- DW_FORM_implicit_const in attr_numeric() and attr_offset()
|
||||
- Support DW_TAG_GNU_call_site, standardized rename of DW_TAG_GNU_call_site.
|
||||
- build:
|
||||
- Fix compilation on 32-bit architectures.
|
||||
|
||||
* Fri Nov 20 2020 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.19-1
|
||||
- New release: 1.19
|
||||
- Split BTF
|
||||
- DWARF workarounds for DW_AT_declaration
|
||||
- Support cross-compiled ELF binaries with different endianness
|
||||
- Support showing typedefs for anonymous types
|
||||
- Speedups using libbpf algorithms
|
||||
- See changes-v1.19 for a complete and more detailed list of changes
|
||||
|
||||
* Fri Oct 02 2020 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.18-1
|
||||
- New release: 1.18
|
||||
- Use debugging info to pretty print raw data
|
||||
- Store percpu variables in vmlinux BTF.
|
||||
- Fixes to address segfaults on the gdb testsuite binaries
|
||||
- Bail out on partial units for now, avoiding segfaults and providing warning to user.
|
||||
|
||||
* Mon Aug 31 2020 - Zamir SUN <sztsian@gmail.com> - 1.17-4
|
||||
- Fix FTBFS
|
||||
- Resolves: bug 1863459
|
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.17-3
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.17-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri Mar 13 2020 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.17-1
|
||||
- New release: 1.17
|
||||
- Support raw BTF as available in /sys/kernel/btf/vmlinux.
|
||||
- When the sole argument passed isn't a file, take it as a class name:
|
||||
- Do not require a class name to operate without a file name.
|
||||
- Make --find_pointers_to consider unions:
|
||||
- Make --contains and --find_pointers_to honour --unions
|
||||
- Add support for finding pointers to void:
|
||||
- Make --contains and --find_pointers_to to work with base types:
|
||||
- Make --contains look for more than just unions, structs:
|
||||
- Consider unions when looking for classes containing some class:
|
||||
- Introduce --unions to consider just unions:
|
||||
- Fix -m/--nr_methods - Number of functions operating on a type pointer
|
||||
|
||||
* Wed Feb 12 2020 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.16-1
|
||||
- New release: 1.16
|
||||
- BTF encoder: Preserve and encode exported functions as BTF_KIND_FUNC.
|
||||
- BTF loader: Add support for BTF_KIND_FUNC
|
||||
- Pretty printer: Account inline type __aligned__ member types for spacing
|
||||
- Pretty printer: Fix alignment of class members that are structs/enums/unions
|
||||
- Pretty printer: Avoid infinite loop trying to determine type with static data member of its own type.
|
||||
- RPM spec file: Add dwarves dependency on libdwarves1.
|
||||
- pfunct: type->type == 0 is void, fix --compile for that
|
||||
- pdwtags: Print DW_TAG_subroutine_type as well
|
||||
- core: Fix ptr_table__add_with_id() handling of pt->nr_entries
|
||||
- pglobal: Allow passing the format path specifier, to use with BTF
|
||||
- Tree wide: Fixup issues pointed out by various coverity reports.
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.15-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.15-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Mon Jul 1 2019 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.15-2
|
||||
- Fix bug when processing classes without members
|
||||
|
||||
* Thu Jun 27 2019 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.15-1
|
||||
- New release: 1.15
|
||||
- Fix --expand_types/-E segfault
|
||||
- Fixup endless printing named structs inside structs in --expand_types
|
||||
- Avoid NULL deref with num config in __class__fprintf()
|
||||
|
||||
* Tue Apr 23 2019 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.13-1
|
||||
- New release: 1.13
|
||||
- Infer __packed__ attributes, i.e. __attribute__((__packed__))
|
||||
- Support DW_AT_alignment, i.e. __attribute__((__aligned__(N)))
|
||||
- Decode BTF type format and pretty print it
|
||||
- BTF encoding fixes
|
||||
- Use libbpf's BTF deduplication
|
||||
- Support unions as arguments to -C/--class
|
||||
- New 'pfunct --compile' generates compilable output with type definitions
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.12-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Fri Aug 31 2018 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.12-1
|
||||
- New release: 1.12
|
||||
- union member cacheline boundaries for all inner structs
|
||||
- print union member offsets
|
||||
- Document 'pahole --hex'
|
||||
- Encode BTF type format for use with eBPF
|
||||
|
||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-15
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-13
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Aug 03 2016 Cole Robinson <crobinso@redhat.com> - 1.10-9%{?dist}
|
||||
- pdwtags: don't fail on unhandled tags (bz 1348200)
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Fri Sep 05 2014 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 1.10-7
|
||||
- backport removal of DW_TAG_mutable_type
|
||||
|
||||
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Wed May 30 2012 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.10-1
|
||||
- New release
|
||||
|
||||
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* 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
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Fri Dec 4 2009 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.8-1
|
||||
- New release
|
||||
|
||||
* Fri Feb 13 2009 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.7-2
|
||||
- Own /usr/share/dwarves, fixes #473645
|
||||
|
||||
* Fri Feb 13 2009 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.7-1
|
||||
- A CTF decoder based on work done by David S. Miller
|
||||
- Handle DW_TAG_class_type,
|
||||
- Add support for showing classes with a prefix
|
||||
- Add support to DW_TAG_ptr_to_member_type
|
||||
- Handle typedef definitions in functions
|
||||
- Print the number of members in a struct/class
|
||||
- Handle the empty base optimization trick (Zero sized C++ class)
|
||||
- codiff detect changes in the prototype even when function size doesn't change
|
||||
- pfunct: Implement --expand_types
|
||||
- Reduce memory consumption by using a strings table
|
||||
- Speed up struct search by name
|
||||
- Several minor bug fixes and infrastructure improvements.
|
||||
- Initial man page for pahole
|
||||
|
||||
* Mon Feb 11 2008 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.6-1
|
||||
- c83d935a4fd561a3807f520c126c2a61ae1f4d83
|
||||
- [DWARVES]: Use a hash table for the tags in a CU
|
||||
|
||||
* Thu Feb 7 2008 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.5-1
|
||||
- c4e49add9e48ff08a8ba4187ea43d795af995136
|
||||
- PAHOLE: Introduce --defined_in
|
||||
- DWARVES: Another fix for DW_TAG_base_type entries without DW_AT_name
|
||||
- PAHOLE: Cope with DW_TAG_basic_type entries without DW_AT_name
|
||||
- CODIFF: Allow passing /dev/null as one of the files to compare
|
||||
- DWARVES: Allow passing NULL as self to cu__find_
|
||||
- DWARVES: Fixup usage messages
|
||||
- DWARVES: Find holes in inner, nameless structs
|
||||
- DWARVES: Adopt tag__follow_typedef from pahole
|
||||
- DWARVES: Add some destructors: tag, cu, namespace
|
||||
- CODIFF: Check if the objects are the same when we have build-id
|
||||
- DWARVES: Introduce cu__same_build_id
|
||||
- DWARVES_REORGANIZE: Proper tail padding fixup
|
||||
- DWARVES: Don't search in empty structs
|
||||
- DWARVES: Follow const and volatile tags to its ultimate types
|
||||
- PAHOLE: Add a newline after the --class_dwarf_offset output
|
||||
- PAHOLE: Expose type__find_first_biggest_size_base_type_member
|
||||
- DWARVES: Introduce type__find_first_biggest_size_base_type_member
|
||||
- PAHOLE: Account arrays properly when changing word-size
|
||||
- PAHOLE: Follow typedefs too when resizing unions
|
||||
- PAHOLE: Follow typedefs to find if they are resized structs/unions
|
||||
- PAHOLE: Check if types of struct and union members were already resized
|
||||
- DWARVES_REORGANIZE: Fixup class__fixup_alingment
|
||||
- PAHOLE: Allow changing the architecture word-size
|
||||
- DWARVES_REORGANIZE: Adopt class__add_offsets_from and class__fixup_alignment from ctracer
|
||||
- DWARVES: build id support requires a recent elfutils package
|
||||
|
||||
* Sat Jan 5 2008 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.4-1
|
||||
- 8e099cf5d1f204e9ea1a9c8c0f1a09a43458d9d3
|
||||
- codiff fixes
|
||||
|
||||
* Sun Dec 9 2007 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.3-2
|
||||
- c6c71398cd2481e219ea3ef63f32c6479ba4f08f
|
||||
- SPEC file adjustments to follow http://fedoraproject.org/wiki/Packaging/cmake
|
||||
|
||||
* Sat Dec 8 2007 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.3-1
|
||||
- c4ee21aa122f51f2601893b2118b7f7902d2f410
|
||||
- Fixed bitfield byte offset handling, now there are no
|
||||
more BRAIN FART alerts on a x86_64 linux kernel and on
|
||||
an old openbsd kernel image.
|
||||
|
||||
* Thu Dec 6 2007 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.2-1
|
||||
- 07e0974f2c3798acb8e9a2d06f6b2ece7a01c508
|
||||
- Fix a patological bitfield case
|
||||
|
||||
* Thu Dec 6 2007 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.1-1
|
||||
- 2c01420b51e889196b42a204910b46811ab22f1a
|
||||
- ctracer now generates systemtap scripts
|
||||
- Lots of other fixes, see git changelog.
|
||||
|
||||
* Tue May 8 2007 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.0-1
|
||||
- 161c6712f4ae1b7e2ea50df3a0d5c28310905cec
|
||||
- handle --help, -? --usage on with_executable_option()
|
||||
|
||||
* Tue May 8 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- b8eb5eb214f3897ea6faa3272879baa8bf2573c0
|
||||
- Fix cus__loadfl detection of --executable
|
||||
|
||||
* Sun May 6 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 05351ece16e5203717dd21a6fc1ad2e6ff87c203
|
||||
- libdwarves_emit
|
||||
|
||||
* Tue Apr 3 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- f3c4f527f70053e39b402005107ead6cb10e0b4a
|
||||
- Fix some --reorganize bugs
|
||||
|
||||
* Mon Apr 2 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 1ec66565a12ce7f197cd40e3901ed6be84935781
|
||||
- --reorganize improvements
|
||||
- --packable uses --reorganize code to show structs that can be packed by
|
||||
reorganization done with --reorganize.
|
||||
|
||||
* Fri Mar 30 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- fd3542317508d04e8178c5d391385d2aa50d6fb7
|
||||
- Use libdwfl in all tools that handle just one file, codiff and ctracer
|
||||
still need work and are still using plain libdw.
|
||||
|
||||
* Sun Feb 25 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 3c148cd84b74b89663febdefab23356952906502
|
||||
- _snprintf routines changed to _fprintf
|
||||
- codiff shows diffs in number and total size of inline expansions
|
||||
- codiff shows diffs in the number of lexblocks
|
||||
- better alignment in the --expand_types case
|
||||
- CMake improvements
|
||||
|
||||
* Fri Feb 2 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- d37f41df58c375412badf827e24dfc346cea2ff2
|
||||
- ostra-cg
|
||||
- relay/debugfs
|
||||
- mini-structs
|
||||
- ctracer2ostra
|
||||
- All this in the Makefile
|
||||
|
||||
* Fri Feb 2 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- b7cad1782d683571ffb2601b429ab151bddad5d7
|
||||
- pglobal, by Davi Arnaut
|
||||
- pahole --show_reorg_steps
|
||||
- Reorganize bitfields in pahole --reorganize
|
||||
|
||||
* Tue Jan 30 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 8e236f4ca37b8a3d2057f4ede5a14ab1fa99f73c
|
||||
- x86-64 lib install fixes
|
||||
|
||||
* Tue Jan 30 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 4a4b75e75a6d7f34215d320cc4a9f669b6ba4075
|
||||
- pahole --reorganize
|
||||
|
||||
* Mon Jan 29 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 2de67fcaf401ac1e20feca5fa88dfc63fbc4203e
|
||||
- Type expansion!
|
||||
|
||||
* Sat Jan 27 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- 6bf2d2d7707b65e7ca21a13706d8d07824cd6f2f
|
||||
- ctracer improvements, /usr/lib/ctracer/, etc
|
||||
|
||||
* Fri Jan 26 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
- c49f2c963425d5c09c429370e10d9af3d7d7fe32
|
||||
- Emit typedefs of typedef arrays
|
||||
- Detect typedef loops
|
||||
- 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>
|
||||
- fab0db03ea9046893ca110bb2b7d71b764f61033
|
||||
- pdwtags added
|
||||
|
||||
* Wed Jan 17 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
- e3786105c007a39ff3dbfb36a3037e786021e0c6
|
||||
- First Fedora native build
|
||||
- struct, enum, enum, void typedefs
|
||||
|
||||
* Sat Jan 13 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
- 9a413e60a3875980d99817722bf019cba3a24573
|
||||
- pahole --nr_methods, improvements in tag__print, better support for unions
|
||||
|
||||
* Fri Jan 12 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
- a1f5422656a91568a8b4edbcebaae9c1837b5cbd
|
||||
- Support a DW_TAG_reference_type
|
||||
|
||||
* Fri Jan 12 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
- 0ad467a32187e1929c14054a0fc7326bc4d235c8
|
||||
- Added a description
|
||||
|
||||
* Thu Jan 11 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
- new release with type not found asserts replaced by error messages
|
||||
|
||||
* Thu Jan 11 2007 Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
- package created
|
Loading…
Reference in New Issue
Block a user