From: Yonghong Song <yonghong.song@linux.dev>
To: Alan Maguire <alan.maguire@oracle.com>,
Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
dwarves@vger.kernel.org
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
bpf@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH bpf-next v2] bpf_encoder: Fix a verbose output issue
Date: Thu, 15 Jan 2026 18:36:16 -0800 [thread overview]
Message-ID: <7b6d3095-7a41-4cae-83dc-affdebf67e76@linux.dev> (raw)
In-Reply-To: <20260116020206.2154622-1-yonghong.song@linux.dev>
On 1/15/26 6:02 PM, Yonghong Song wrote:
> For the following test.c:
> $ cat test.c
> unsigned tar(int a);
> __attribute__((noinline)) static int foo(int a, int b)
> {
> return tar(a) + tar(a + 1);
> }
> __attribute__((noinline)) int bar(int a)
> {
> foo(a, 1);
> return 0;
> }
> The llvm compilation:
> $ clang -O2 -g -c test.c
> And then
> $ pahole -JV test.o
> btf_encoder__new: 'test.o' doesn't have '.data..percpu' sectio n
> File test.o:
> [1] INT unsigned int size=4 nr_bits=32 encoding=(none)
> [2] INT int size=4 nr_bits=32 encoding=SIGNED
> search cu 'test.c' for percpu global variables.
> [3] FUNC_PROTO (anon) return=2 args=(2 a, [4] FUNC bar type_id=3
> [5] FUNC_PROTO (anon) return=2 args=(2 a, 2 b, [6] FUNC foo type_id=5
>
> The above confused format is due to btf_encoder__add_func_proto_for_state().
> The "is_last = param_idx == nr_params" is always false since param_idx
> starts from 0. The below change fixed the issue:
> is_last = param_idx == (nr_params - 1)
>
> With the fix, 'pahole -JV test.o' will produce the following:
> ...
> [3] FUNC_PROTO (anon) return=2 args=(2 a)
> [4] FUNC bar type_id=3
> [5] FUNC_PROTO (anon) return=2 args=(2 a, 2 b)
> [6] FUNC foo type_id=5
> ...
>
> In addition, in btf_encoder__add_func_proto_for_ftype(), we have
> ++param_idx;
> if (ftype->unspec_parms) { ... }
> This is correct but it is misleading since '++param_idx' is only needed
> inside the above 'if' condition. So put '++param_idx' inside the
> 'if' condition to make code cleaner.
>
> Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
> ---
> btf_encoder.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/btf_encoder.c b/btf_encoder.c
> index b37ee7f..ec6933e 100644
> --- a/btf_encoder.c
> +++ b/btf_encoder.c
> @@ -865,10 +865,11 @@ static int32_t btf_encoder__add_func_proto_for_ftype(struct btf_encoder *encoder
> return -1;
> }
>
> - ++param_idx;
> - if (ftype->unspec_parms)
> + if (ftype->unspec_parms) {
> + ++param_idx;
> if (btf_encoder__add_func_param(encoder, NULL, 0, param_idx == nr_params))
> return -1;
> + }
>
> return id;
> }
> @@ -895,7 +896,7 @@ static int32_t btf_encoder__add_func_proto_for_state(struct btf_encoder *encoder
> for (param_idx = 0; param_idx < nr_params; param_idx++) {
> p = &state->parms[param_idx];
> name = btf__name_by_offset(btf, p->name_off);
> - is_last = param_idx == nr_params;
> + is_last = param_idx == (nr_params - 1);
>
> /* adding BTF data may result in a move of the
> * name string memory, so make a temporary copy.
Sorry. The tag should be '[PATCH dwarves v2]' instead of '[PATCH bpf-next v2]'.
next prev parent reply other threads:[~2026-01-16 2:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-16 2:02 [PATCH bpf-next v2] bpf_encoder: Fix a verbose output issue Yonghong Song
2026-01-16 2:36 ` Yonghong Song [this message]
2026-01-16 12:24 ` Alan Maguire
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=7b6d3095-7a41-4cae-83dc-affdebf67e76@linux.dev \
--to=yonghong.song@linux.dev \
--cc=alan.maguire@oracle.com \
--cc=andrii@kernel.org \
--cc=arnaldo.melo@gmail.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=kernel-team@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