From: Alan Maguire <alan.maguire@oracle.com>
To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, acme@kernel.org
Cc: martin.lau@linux.dev, song@kernel.org, yhs@fb.com,
john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com,
haoluo@google.com, jolsa@kernel.org, quentin@isovalent.com,
mykolal@fb.com, bpf@vger.kernel.org,
Alan Maguire <alan.maguire@oracle.com>
Subject: [RFC dwarves] dwarves: encode BTF metadata if --btf_gen_meta is set
Date: Wed, 31 May 2023 21:19:36 +0100 [thread overview]
Message-ID: <20230531201936.1992188-10-alan.maguire@oracle.com> (raw)
In-Reply-To: <20230531201936.1992188-1-alan.maguire@oracle.com>
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
---
btf_encoder.c | 13 +++++++++++--
btf_encoder.h | 2 +-
lib/bpf | 2 +-
pahole.c | 12 +++++++++++-
4 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/btf_encoder.c b/btf_encoder.c
index 65f6e71..d3d6c67 100644
--- a/btf_encoder.c
+++ b/btf_encoder.c
@@ -1625,17 +1625,26 @@ out:
return err;
}
-struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filename, struct btf *base_btf, bool skip_encoding_vars, bool force, bool gen_floats, bool verbose)
+struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filename, struct btf *base_btf, bool skip_encoding_vars, bool force, bool gen_floats, bool gen_meta, bool verbose)
{
struct btf_encoder *encoder = zalloc(sizeof(*encoder));
if (encoder) {
+ LIBBPF_OPTS(btf_new_opts, opts);
+ char description[128];
+
+ snprintf(description, sizeof(description), "generated by dwarves v%u.%u",
+ DWARVES_MAJOR_VERSION, DWARVES_MINOR_VERSION);
+ opts.base_btf = base_btf;
+ opts.add_meta = gen_meta;
+ opts.description = description;
+
encoder->raw_output = detached_filename != NULL;
encoder->filename = strdup(encoder->raw_output ? detached_filename : cu->filename);
if (encoder->filename == NULL)
goto out_delete;
- encoder->btf = btf__new_empty_split(base_btf);
+ encoder->btf = btf__new_empty_opts(&opts);
if (encoder->btf == NULL)
goto out_delete;
diff --git a/btf_encoder.h b/btf_encoder.h
index 34516bb..0c8ea1a 100644
--- a/btf_encoder.h
+++ b/btf_encoder.h
@@ -16,7 +16,7 @@ struct btf;
struct cu;
struct list_head;
-struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filename, struct btf *base_btf, bool skip_encoding_vars, bool force, bool gen_floats, bool verbose);
+struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filename, struct btf *base_btf, bool skip_encoding_vars, bool force, bool gen_floats, bool gen_meta, bool verbose);
void btf_encoder__delete(struct btf_encoder *encoder);
int btf_encoder__encode(struct btf_encoder *encoder);
diff --git a/lib/bpf b/lib/bpf
index 6597330..3f591a6 160000
--- a/lib/bpf
+++ b/lib/bpf
@@ -1 +1 @@
-Subproject commit 6597330c45d185381900037f0130712cd326ae59
+Subproject commit d40a48fbfa2a357a6245c59e7bb811f72b5fc94d
diff --git a/pahole.c b/pahole.c
index 6fc4ed6..78fa778 100644
--- a/pahole.c
+++ b/pahole.c
@@ -40,6 +40,7 @@ static bool first_obj_only;
static bool skip_encoding_btf_vars;
static bool btf_encode_force;
static const char *base_btf_file;
+static bool btf_gen_meta;
static const char *prettify_input_filename;
static FILE *prettify_input;
@@ -1232,6 +1233,7 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
#define ARGP_skip_emitting_atomic_typedefs 338
#define ARGP_btf_gen_optimized 339
#define ARGP_skip_encoding_btf_inconsistent_proto 340
+#define ARGP_btf_gen_meta 341
static const struct argp_option pahole__options[] = {
{
@@ -1654,6 +1656,11 @@ static const struct argp_option pahole__options[] = {
.key = ARGP_skip_encoding_btf_inconsistent_proto,
.doc = "Skip functions that have multiple inconsistent function prototypes sharing the same name, or that use unexpected registers for parameter values."
},
+ {
+ .name = "btf_gen_meta",
+ .key = ARGP_btf_gen_meta,
+ .doc = "Generate BTF metadata including kinds available."
+ },
{
.name = NULL,
}
@@ -1829,6 +1836,8 @@ static error_t pahole__options_parser(int key, char *arg,
conf_load.btf_gen_optimized = true; break;
case ARGP_skip_encoding_btf_inconsistent_proto:
conf_load.skip_encoding_btf_inconsistent_proto = true; break;
+ case ARGP_btf_gen_meta:
+ btf_gen_meta = true; break;
default:
return ARGP_ERR_UNKNOWN;
}
@@ -3064,7 +3073,7 @@ static enum load_steal_kind pahole_stealer(struct cu *cu,
* create it.
*/
btf_encoder = btf_encoder__new(cu, detached_btf_filename, conf_load->base_btf, skip_encoding_btf_vars,
- btf_encode_force, btf_gen_floats, global_verbose);
+ btf_encode_force, btf_gen_floats, btf_gen_meta, global_verbose);
if (btf_encoder && thr_data) {
struct thread_data *thread = thr_data;
@@ -3096,6 +3105,7 @@ static enum load_steal_kind pahole_stealer(struct cu *cu,
skip_encoding_btf_vars,
btf_encode_force,
btf_gen_floats,
+ btf_gen_meta,
global_verbose);
thread->btf = btf_encoder__btf(thread->encoder);
}
--
2.31.1
prev parent reply other threads:[~2023-05-31 20:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-31 20:19 [RFC bpf-next 0/8] bpf: support BTF kind metadata to separate Alan Maguire
2023-05-31 20:19 ` [RFC bpf-next 1/8] btf: add kind metadata encoding to UAPI Alan Maguire
2023-06-01 3:53 ` Alexei Starovoitov
2023-06-01 10:36 ` Alan Maguire
2023-06-01 16:53 ` Alexei Starovoitov
2023-06-02 16:32 ` Andrii Nakryiko
2023-06-02 16:34 ` Andrii Nakryiko
2023-06-02 18:11 ` Alexei Starovoitov
2023-06-02 20:33 ` Andrii Nakryiko
2023-06-05 16:14 ` Alexei Starovoitov
2023-06-05 22:38 ` Andrii Nakryiko
2023-06-06 2:46 ` Alexei Starovoitov
2023-06-06 11:30 ` Toke Høiland-Jørgensen
2023-06-07 11:55 ` Eduard Zingerman
2023-06-07 15:29 ` Yonghong Song
2023-06-07 16:14 ` Eduard Zingerman
2023-06-07 21:47 ` Andrii Nakryiko
2023-06-07 22:05 ` Eduard Zingerman
2023-06-07 22:34 ` Andrii Nakryiko
2023-06-06 16:50 ` Andrii Nakryiko
2023-06-07 1:16 ` Alexei Starovoitov
2023-06-07 21:43 ` Andrii Nakryiko
2023-05-31 20:19 ` [RFC bpf-next 2/8] libbpf: support handling of metadata section in BTF Alan Maguire
2023-06-05 11:01 ` Jiri Olsa
2023-06-05 21:40 ` Andrii Nakryiko
2023-05-31 20:19 ` [RFC bpf-next 3/8] libbpf: use metadata to compute an unknown kind size Alan Maguire
2023-05-31 20:19 ` [RFC bpf-next 4/8] btf: support kernel parsing of BTF with metadata, use it to parse BTF with unknown kinds Alan Maguire
2023-06-07 19:51 ` Eduard Zingerman
2023-05-31 20:19 ` [RFC bpf-next 5/8] libbpf: add metadata encoding support Alan Maguire
2023-05-31 20:19 ` [RFC bpf-next 6/8] btf: generate metadata for vmlinux/module BTF Alan Maguire
2023-05-31 20:19 ` [RFC bpf-next 7/8] bpftool: add BTF dump "format meta" to dump header/metadata Alan Maguire
2023-06-01 16:33 ` Quentin Monnet
2023-06-02 16:57 ` Andrii Nakryiko
2023-05-31 20:19 ` [RFC bpf-next 8/8] selftests/bpf: test kind encoding/decoding Alan Maguire
2023-05-31 20:19 ` Alan Maguire [this message]
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=20230531201936.1992188-10-alan.maguire@oracle.com \
--to=alan.maguire@oracle.com \
--cc=acme@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=martin.lau@linux.dev \
--cc=mykolal@fb.com \
--cc=quentin@isovalent.com \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=yhs@fb.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).