Skip to contentSkip to conversation

ANNOUNCE: pahole v1.14 (Bug fixes)

DISCUSSION Arnaldo Carvalho de Melo 1 participant 3 messages Jun 26, 2019 – Dec 16, 2019 1 message not in the archive BPF

lore
Share & tools
lore
#0 lore raw

Hi,

The v1.14 release of pahole and its friends is out, available at
the usual places:

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.14.tar.xz
https://fedorapeople.org/~acme/dwarves/dwarves-1.14.tar.bz2
https://fedorapeople.org/~acme/dwarves/dwarves-1.14.tar.sign

Just some bugfixes, notably:

3ed9a67967cf fprintf: Avoid null dereference with NULL configs 568dae4bd498 printf: Fixup printing "const" early with "const void" 68f261d8dfff fprintf: Fix recursively printing named structs in --expand_types

Best Regards,

- Arnaldo

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw

Em Wed, Jun 26, 2019 at 09:49:06PM -0400, Theodore Ts'o escreveu:

Quoted 5 lines · Arnaldo Carvalho de Melo
Quoted 2 lines

The v1.14 release of pahole and its friends is out, available at
the usual places

Looks like you forgot to update the version number.

Sigh, I tested 'pahole --version' locally, but forgot to commit it, stupid mistake, thanks for pointing it out.

I bumped the version to v1.15 and pushed it out, should be ok now:

[acme@quaco pahole]$ git remote update origin
Fetching origin
From git://git.kernel.org/pub/scm/devel/pahole/pahole
7005757fd573..529903571037 master -> origin/master
[acme@quaco pahole]$ git log --oneline -5
529903571037 (HEAD -> master, tag: v1.15, origin/master, origin/HEAD, github/master, acme.korg/master) v1.15: New release 3ed9a67967cf (tag: v1.14) fprintf: Avoid null dereference with NULL configs
568dae4bd498 printf: Fixup printing "const" early with "const void"
68f261d8dfff fprintf: Fix recursively printing named structs in --expand_types
139a3b337381 ostra: Initial python3 conversion
[acme@quaco pahole]$
[acme@quaco pahole]$ rpm -q dwarves
dwarves-1.15-1.fc29.x86_64
[acme@quaco pahole]$ rpm -qf /usr/bin/pahole
dwarves-1.15-1.fc29.x86_64
[acme@quaco pahole]$ /usr/bin/pahole --version
v1.15
[acme@quaco pahole]$

- Arnaldo

#3 lore raw

ANNOUNCE: pahole v1.16 (Fixes + BTF_KIND_FUNC)

In reply to Arnaldo Carvalho de Melo

Hi,

The v1.16 release of pahole and its friends is out, available at
the usual places:

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.16.tar.xz
https://fedorapeople.org/~acme/dwarves/dwarves-1.16.tar.bz2
https://fedorapeople.org/~acme/dwarves/dwarves-1.16.tar.sign

Best Regards,

- Arnaldo

v1.16 changes:

BTF encoder:

Andrii Nakryiko <[email protected]>:

- Preserve and encode exported functions as BTF_KIND_FUNC.

Add encoding of DWARF's DW_TAG_subprogram_type into BTF's BTF_KIND_FUNC (plus corresponding BTF_KIND_FUNC_PROTO). Only exported functions are converted for now. This allows to capture all the exported kernel functions, same subset that's exposed through /proc/kallsyms.

BTF loader:

Arnaldo Carvalho de Melo <[email protected]>

- Add support for BTF_KIND_FUNC

Some changes to the fprintf routines were needed, as BTF has as the function type just a BTF_KIND_FUNC_PROTO, while DWARF has as the type for a function its return value type. With a function->btf flag this was overcome and all the other goodies in pfunct are present.

Pretty printer:

Arnaldo Carvalho de Melo:

- Account inline type __aligned__ member types for spacing:

union {
refcount_t rcu_users; /* 2568 4 */
struct callback_head rcu __attribute__((__aligned__(8))); /* 2568 16 */
- } __attribute__((__aligned__(8))); /* 2568 16 */
+ } __attribute__((__aligned__(8))); /* 2568 16 */
struct pipe_inode_info * splice_pipe; /* 2584 8 */

- Fix alignment of class members that are structs/enums/unions

E.g. look at that 'completion' member in this struct:

struct cpu_stop_done {
atomic_t nr_todo; /* 0 4 */
int ret; /* 4 4 */
- struct completion completion; /* 8 32 */
+ struct completion completion; /* 8 32 */

/* size: 40, cachelines: 1, members: 3 */ /* last cacheline: 40 bytes */

- Fixup handling classes with no members, solving a NULL deref.

Gareth Lloyd <[email protected]>:

- Avoid infinite loop trying to determine type with static data member of its own type.

RPM spec file.

Jiri Olsa <[email protected]>

Add dwarves dependency on libdwarves1.

pfunct:

Arnaldo Carvalho de Melo <[email protected]>

- type->type == 0 is void, fix --compile for that

We were using the fall back for that, i.e. 'return 0;' was being emitted for a function returning void, noticed with using BTF as the format.

pdwtags:

- Print DW_TAG_subroutine_type as well

So that we can see at least via pdwtags those tags, be it from DWARF of BTF.

core:

Arnaldo Carvalho de Melo <[email protected]>

Fix ptr_table__add_with_id() handling of pt->nr_entries, covering how BTF variables IDs are encoded.

pglobal:

Arnaldo Carvalho de Melo <[email protected]>:

- Allow passing the format path specifier, to use with BTF

I.e. now we can, just like with pahole, use:

pglobal -F btf --variable foo.o

To get the global variables.

Tree wide:

Arnaldo Carvalho de Melo <[email protected]>:

- Fixup issues pointed out by various coverity reports.