diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2023-04-08 14:24:34 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2023-04-08 14:41:53 -0300 |
commit | 81558a5a996005df0d607dd33f74ec5b7bdb619d (patch) | |
tree | 68bf75c6d7997ab7bc2a6d72ddedd6d813d3edb0 | |
parent | eab23ebd2ce22b3aec319e76d605bfb5b4a57f91 (diff) | |
download | pahole-81558a5a996005df0d607dd33f74ec5b7bdb619d.tar.gz |
pahole: Prep 1.25v1.25
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | NEWS | 65 | ||||
-rw-r--r-- | changes-v1.25 | 58 | ||||
-rw-r--r-- | rpm/SPECS/dwarves.spec | 16 |
4 files changed, 138 insertions, 2 deletions
@@ -53,6 +53,7 @@ changes-v1.21 changes-v1.22 changes-v1.23 changes-v1.24 +changes-v1.25 buildcmd.sh COPYING NEWS @@ -1,5 +1,70 @@ v1.24 +Sat Apr 8 2023 + +eab23ebd2ce22b3a fprintf: Fix `*` not being printed for pointers with btf_type_tag +c969e4969ccd2e7c btf_loader: A hack for BTF import of btf_type_tag attributes +40ebd8b9e3312d0a fprintf: Correct names for types with btf_type_tag attribute +4d17096076b2351f btf_encoder: Compare functions via prototypes not parameter names +82730394195276ac fprintf: Support skipping modifier +d184aaa125ea40ff fprintf: Generalize function prototype print to support passing conf +a9498899109d3be1 dwarf_loader: Fix for BTF id drift caused by adding unspecified types +eeeab1c9e8b85fc7 fprintf: Support DW_TAG_LLVM_annotation in dwarf_tag_name() +4ec4b64bd501986b CMakeLists.txt: Call cmake_minimum_required() before project() +111dfd2cee118892 dwarf_loader: Only mark parameter as using an unexpected register when it does +5851040e2468ba04 dwarf_loader: Fix parameter location retrieval for location lists +721ca66d5be462b2 dwarf_loader: Fix detection of struct parameters +ef68019c357845b4 pahole: Update man page for options also +d58c61498ea78064 pahole: Update descriptions for btf_gen_optimized, skip_encoding_btf_inconsistent_proto +9b2abc1c7a16c39d btf_encoder: Exclude functions with unexpected param register use not optimizations +a53c58158b761f8f dwarf_loader: Mark functions that do not use expected registers for params +431df45378ef00f3 btfdiff: Exclude Rust CUs since those are not yet being converted to BTF on the Linux kernel +1231b6b9b4d88e00 dwarf_loader: Fix sorting of Rust structs +c4eb1897d1f3841d core: Check that we're adding DW_TAG_member sorted by byte offset +b53d430aeab416e7 btf_encoder: Ensure ELF function representation is fully initialized +a3b47e41656d21e7 CMakeList.txt: Bump version to the upcoming 1.25 release, not out of the door yet +f104790698ae93f9 btf_encoder: Support delaying function addition to check for function prototype inconsistencies +6d95d162c6c804c4 btf_encoder: Represent "."-suffixed functions (".isra.0") in BTF +c8e8dbcd71507618 btf_encoder: Rework btf_encoders__*() API to allow traversal of encoders +d381cc7458c53fdf btf_encoder: Refactor function addition into dedicated btf_encoder__add_func +52b25808e44a8e7f btf_encoder: Store type_id_off, unspecified type in encoder +75939e655a797896 dwarf_loader: Help spotting functions with optimized-out parameters +2b5cb9bc0e905811 pahole: Sync with libbpf-1.1 +45c044860c2abce7 dwarf_loader: Sync with LINUX_ELFNOTE_LTO_INFO macro from kernel +74f21ed08e4313f0 pahole: Set libbpf debug printer in -V mode +bc1538dcb14bc4d9 pahole: Use type__fprintf() directly for --compile +51643cb290f91425 core: Introduce base_type__language_defined() +ba4bdc73806101dc dwarf_loader: DW_TAG_inlined_subroutine needs recoding by DW_AT_abstract_origin +02d67c51765dfbd5 pfunct: Use zalloc() to make the code more robust +cd4d2d251e9a7f98 pahole: Use zalloc() to make the code more robust +e5e24ada4f5578ae core: Use zalloc() to make the code more robust +b72f5188856df0ab dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types +d85b86ecc1df4076 emit: Support DW_TAG_atomic_type when emitting definitions for a typedef +7d0bc9334d2f1143 fprintf: Support _Atomic typedefs +8894c04f00e4c702 fprintf: Move the "typedef " invariant printf to the start of typedef__fprintf() +3836623af1b5ff1f pahole: Allow skipping the emission of atomic typedefs +6bb5a1fa990f5bd6 emit: Allow skip emitting the atomic typedefs +8d2e166dd3d168d9 emit: Optionally pass a conf_fprintf struct to type_emissions__init +8c2b37ec71423067 emit: Emit typedefs for atomic_ prefixed base types +a4f3a79da8d4ed8b emit: cu__type() == NULL means "void" +bcc648a10cbcd0b9 btf_encoder: Encode DW_TAG_unspecified_type returning routines as void +cffe5e1f75e1612e core: Record if a CU has a DW_TAG_unspecified_type +75e0fe28bb02036d core: Add DW_TAG_unspecified_type to tag__is_tag_type() set +121a46a026afac19 btf_encoder: Store the CU being processed to avoid changing many functions +56bcfa9135312ffe fprintf: Emit "_Atomic" modifiers for DW_TAG_atomic_type +cf27a2b805f21356 core: Print more info on tag__assert_search_result() +d5012f7be79f1b81 btf_encoder: Add extra debug info for unsupported DWARF tags +79d9a783ea74797a pahole: Support '--lang/--lang_exclude=asm' +e819d737de88dc1f pahole: Add "btf" to the format-path option man page +f01e5f3a849558b8 dwarf_loader: Support DW_TAG_label outside DW_TAG_lexblock +b84120772df33f93 pahole: Allow --compile to work with DWARF in addition to with BTF +6fdb0140692acff0 dwarves: support DW_TAG_atomic_type +d7507140eab4bf9f emit: Don't mark a enum with nr_members == 0 as printed, its just a fwd decl +843fe9bfab4859b4 emit: Check if disambiguated struct/enum/union name was already emitted in a previous CU +f5857bd34b220a64 pahole: Honour --compile when -C is used +2bb968b567011f8a btf: Fix building with system libbpf +ea30d58a2329764b core: Conditionally define language encodings + Wed Aug 17 2022 d6c952893b1bbea9 dwarf_loader: Encode char type as signed diff --git a/changes-v1.25 b/changes-v1.25 new file mode 100644 index 00000000..9534996c --- /dev/null +++ b/changes-v1.25 @@ -0,0 +1,58 @@ +DWARF loader: + +- Support for DW_TAG_unspecified_type more generally, that in binutils 2.40 is used + for assembly functions, resulting in BTF encoding problems when building the Linux + kernel. + +- Make sure struct member offsets are in ascending order. This is part of the set of + changes to support encoding BTF for Rust for use with the Linux kernel, where the + BTF verifier considers invalid offset unordered struct members. + +- Support C atomic types (DW_TAG_atomic_type), that are not used in the Linux kernel but + is present in user space components such as Open VSwitch. + +BTF loader: + +- Initial support for DW_TAG_LLVM_annotation, used for BTF type tags, to encode things + like __rcu, __user annotations in the Linux kernel. This is still in flux with changes + in how these are encoded that resulted from the discussion to support this in gcc in + addition to in clang, where it was first designed. + +BTF encoder: + +- 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* + suffix (inter procedural scalar replacement of aggregates) or .constprop* + (constant propagation). + +Pretty printer: + +- For now the DW_TAG_LLVM_annotation tags are being suppressed, so the output from + BTF and DWARF matches, further work is planned to support it so that the output + matches the original source code and can be recompilable, resulting in the same + DWARF info. + +- Support C atomic types, allowing the generation of source code that can be + compiled with resulting DWARF info matching the original source code. + +pahole: + +- Support --lang=/--lang_exclude=asm, the DW_LANG_ define for assembly is out + of order, special case it to support asking for CUs written in assembly to be + selected or excluded. + +- Support suppressing the atomic type modifiers/attributes. + +- Allow filtering out functions optimized by the compiler, where the calling convention isn't + the one expected by BPF or arguments are optimized out. + +- Support --compile from DWARF in addition to from BTF, this allows user space components + such as Open VSwitch to use pahole to generate compilable code for its data structures. + +btfdiff: + +- Exclude RUST CUs, as those are not yet being BTF encoded. + +Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> diff --git a/rpm/SPECS/dwarves.spec b/rpm/SPECS/dwarves.spec index c1a3182a..f585eb83 100644 --- a/rpm/SPECS/dwarves.spec +++ b/rpm/SPECS/dwarves.spec @@ -2,7 +2,7 @@ %define libver 1 Name: dwarves -Version: 1.24 +Version: 1.25 Release: 1%{?dist} License: GPLv2 Summary: Debugging Information Manipulation Tools (pahole & friends) @@ -79,7 +79,7 @@ rm -Rf %{buildroot} %files %doc README.ctracer %doc README.btf -%doc changes-v1.24 +%doc changes-v1.25 %doc NEWS %{_bindir}/btfdiff %{_bindir}/codiff @@ -131,6 +131,18 @@ rm -Rf %{buildroot} %{_libdir}/%{libname}_reorganize.so %changelog +* 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. +- 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 Aug 17 2022 Arnaldo Carvalho de Melo <acme@redhat.com> - 1.24-1 - New release: v1.24 - Add support to BTF_KIND_ENUM64. |