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 dwarves] bpf_encoder: Fix a verbose output issue
Date: Thu, 15 Jan 2026 09:09:10 -0800 [thread overview]
Message-ID: <c19cd4b2-1fa0-4626-9c1a-00ab2a278587@linux.dev> (raw)
In-Reply-To: <4e8df34f-50be-4c91-a43a-26c84fc5008b@oracle.com>
On 1/15/26 1:41 AM, Alan Maguire wrote:
> On 15/01/2026 05:00, 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
>> ...
>>
>> Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
> This fix looks good but I _think_ we have another instance of this; see
> btf_encoder__add_func_proto_for_ftype()
>
> ftype__for_each_parameter(ftype, param) {
> name = parameter__name(param);
> type_id = param->tag.type == 0 ? 0 : encoder->type_id_off + param->tag.type;
> ++param_idx;
> if (btf_encoder__add_func_param(encoder, name, type_id, param_idx == nr_params))
> return -1;
> }
>
> ++param_idx;
> if (ftype->unspec_parms)
> if (btf_encoder__add_func_param(encoder, NULL, 0, param_idx == nr_params))
> return -1;
>
> Maybe I'm misreading but that last ++param_idx outside the loop is unneeded
> I think? If I'm right would you mind fixing that one too? Thanks!
Sure. Will take a look.
>
>> ---
>> btf_encoder.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/btf_encoder.c b/btf_encoder.c
>> index b37ee7f..09a5cda 100644
>> --- a/btf_encoder.c
>> +++ b/btf_encoder.c
>> @@ -895,7 +895,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.
prev parent reply other threads:[~2026-01-15 17:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-15 5:00 [PATCH dwarves] bpf_encoder: Fix a verbose output issue Yonghong Song
2026-01-15 9:41 ` Alan Maguire
2026-01-15 17:09 ` Yonghong Song [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=c19cd4b2-1fa0-4626-9c1a-00ab2a278587@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 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.