ANNOUNCE: pahole v1.25 (Unspecified type, Atomic types, BTF for optimized functions)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
  
	The v1.25 release of pahole and its friends is out, fixing the
handling of DW_TAG_unspecified type in assembly functions that came with
binutils 2.40, allowing the BTF encoding of optimized functions (ending in
.constprop, .isra), excluding from BTF optimized functions not following
the calling convention, support for DW_TAG_atomic_type, support the
DW_TAG_LLVM_annotation BTF equivalent (BTF_KIND_TYPE_TAG) on the BTF
loader and for now suppressing it when pretty printing, etc.

Main git repo:

   git://git.kernel.org/pub/scm/devel/pahole/pahole.git

Mirror git repo:

   https://github.com/acmel/dwarves.git

tarball + gpg signature:

   https://fedorapeople.org/~acme/dwarves/dwarves-1.25.tar.xz
   https://fedorapeople.org/~acme/dwarves/dwarves-1.25.tar.bz2
   https://fedorapeople.org/~acme/dwarves/dwarves-1.25.tar.sign

	For 1.26 the immediate plan is to fixup the merge conflicts with
the branch that adds support for dwz compressed DWARF files that is
available at:

  https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?h=alt_dwarf

	Thanks a lot to all the contributors and distro packagers, you're on the
CC list, I appreciate a lot the work you put into these tools,

Best Regards,

- Arnaldo

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@xxxxxxxxxx>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux