From: Andrii Nakryiko <andriin@fb.com>
To: <dwarves@vger.kernel.org>
Cc: <bpf@vger.kernel.org>, Andrii Nakryiko <andriin@fb.com>
Subject: [PATCH dwarves 00/11] Switch BTF loading and encoding to libbpf APIs
Date: Tue, 29 Sep 2020 21:27:31 -0700 [thread overview]
Message-ID: <20200930042742.2525310-1-andriin@fb.com> (raw)
This patch set switches pahole to use libbpf-provided BTF loading and encoding
APIs. This reduces pahole's own BTF encoding code, speeds up the process,
reduces amount of RAM needed for DWARF-to-BTF conversion. Also, pahole finally
gets support to generating BTF for cross-compiled ELF binaries with different
endianness (patch #11).
Additionally, patch #6 fixes previously missed problem with invalid array
index type generation.
Patches #7-10 are speeding up DWARF-to-BTF convertion/dedup pretty
significantly, saving overall about 9 seconds out of current 27 or so.
Patch #8 revamps how per-CPU BTF variables are emitted, eliminating repeated
and expensive looping over ELF symbols table.
Patch #10 admittedly has some hacky parts to satisfy CTF use case, but its
speed ups are greatest. So I'll understand if it gets dropped, but it would be
a pity.
More details could be found in respective patches.
Andrii Nakryiko (11):
libbpf: update to latest libbpf version
btf_encoder: detect BTF encoding errors and exit
dwarves: expose and maintain active debug info loader operations
btf_loader: use libbpf to load BTF
btf_encoder: use libbpf APIs to encode BTF type info
btf_encoder: fix emitting __ARRAY_SIZE_TYPE__ as index range type
btf_encoder: discard CUs after BTF encoding
btf_encoder: revamp how per-CPU variables are encoded
dwarf_loader: increase the size of lookup hash map
strings: use BTF's string APIs for strings management
btf_encoder: support cross-compiled ELF binaries with different
endianness
btf_encoder.c | 361 +++++++++++++++------------
btf_loader.c | 244 +++++++-----------
ctf_encoder.c | 2 +-
dwarf_loader.c | 2 +-
dwarves.c | 8 +
lib/bpf | 2 +-
libbtf.c | 661 +++++++++++++++++++++----------------------------
libbtf.h | 41 ++-
libctf.c | 14 +-
libctf.h | 4 +-
pahole.c | 9 +-
strings.c | 91 +++----
strings.h | 32 +--
13 files changed, 653 insertions(+), 818 deletions(-)
--
2.24.1
next reply other threads:[~2020-09-30 4:28 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-30 4:27 Andrii Nakryiko [this message]
2020-09-30 4:27 ` [PATCH dwarves 01/11] libbpf: update to latest libbpf version Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 02/11] btf_encoder: detect BTF encoding errors and exit Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 03/11] dwarves: expose and maintain active debug info loader operations Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 04/11] btf_loader: use libbpf to load BTF Andrii Nakryiko
2020-10-08 18:06 ` Arnaldo Carvalho de Melo
2020-10-08 19:32 ` Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 05/11] btf_encoder: use libbpf APIs to encode BTF type info Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 06/11] btf_encoder: fix emitting __ARRAY_SIZE_TYPE__ as index range type Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 07/11] btf_encoder: discard CUs after BTF encoding Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 08/11] btf_encoder: revamp how per-CPU variables are encoded Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 09/11] dwarf_loader: increase the size of lookup hash map Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 10/11] strings: use BTF's string APIs for strings management Andrii Nakryiko
2020-09-30 4:27 ` [PATCH dwarves 11/11] btf_encoder: support cross-compiled ELF binaries with different endianness Andrii Nakryiko
2020-10-05 3:48 [PATCH dwarves 00/11] Switch BTF loading and encoding to libbpf APIs Tony Ambardar
2020-10-05 19:30 ` Andrii Nakryiko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200930042742.2525310-1-andriin@fb.com \
--to=andriin@fb.com \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.