All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yonghong.song@linux.dev>
To: 赵佳炜 <phoenix500526@163.com>
Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
	bpf@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v7 2/2] selftests/bpf: Force -O2 for USDT selftests to cover SIB handling logic
Date: Thu, 7 Aug 2025 11:01:08 -0700	[thread overview]
Message-ID: <e7ba3f7f-38b8-4c06-8aff-ef1fb8d04d86@linux.dev> (raw)
In-Reply-To: <30d8fcac.2669.19882763de2.Coremail.phoenix500526@163.com>



On 8/6/25 7:57 PM, 赵佳炜 wrote:
>
>
>
> Hi Yonghong,
>
> I noticed that the USDT argument specification generated by GCC 14 is '8@array(,%rax,8)'.
> This pattern is currently not handled correctly. I'm exploring whether I can use DWARF information
> to calculate the address of this variable. This approach seems to work. However, since I can't

I think 'array' should be in symbol table, so there is no need to check dwarf in my opinion.

> reproduce the same issue on my machine, I plan to implement this approach for the PC-relative
> issue in a separate patch. Would that affect the merging of this patch?

Let us handle this since '8@array(,%rax,8)' may appear in CI environment.

>
>
> At 2025-08-07 02:17:34, "Yonghong Song" <yonghong.song@linux.dev> wrote:
>>
>> On 8/6/25 2:24 AM, Jiawei Zhao wrote:
>>> When using GCC on x86-64 to compile an usdt prog with -O1 or higher
>>> optimization, the compiler will generate SIB addressing mode for global
>>> array and PC-relative addressing mode for global variable,
>>> e.g. "1@-96(%rbp,%rax,8)" and "-1@4+t1(%rip)".
>>>
>>> In this patch:
>>> - add usdt_o2 test case to cover SIB addressing usdt argument spec
>>>     handling logic
>>>
>>> Signed-off-by: Jiawei Zhao <phoenix500526@163.com>
>>> ---
>>>    tools/testing/selftests/bpf/Makefile          |  8 +++
>>>    .../selftests/bpf/prog_tests/usdt_o2.c        | 71 +++++++++++++++++++
>>>    .../selftests/bpf/progs/test_usdt_o2.c        | 37 ++++++++++
>>>    3 files changed, 116 insertions(+)
>>>    create mode 100644 tools/testing/selftests/bpf/prog_tests/usdt_o2.c
>>>    create mode 100644 tools/testing/selftests/bpf/progs/test_usdt_o2.c
>>>
>>> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
>>> index 910d8d6402ef..68cf6a9cf05f 100644
>>> --- a/tools/testing/selftests/bpf/Makefile
>>> +++ b/tools/testing/selftests/bpf/Makefile
>>> @@ -759,6 +759,14 @@ TRUNNER_BPF_BUILD_RULE := $$(error no BPF objects should be built)
>>>    TRUNNER_BPF_CFLAGS :=
>>>    $(eval $(call DEFINE_TEST_RUNNER,test_maps))
>>>    
>>> +# Use -O2 optimization to generate SIB addressing usdt argument spec
>>> +# Only apply on x86 architecture where SIB addressing is relevant
>>> +ifeq ($(ARCH), x86)
>>> +$(OUTPUT)/usdt_o2.test.o: CFLAGS:=$(subst O0,O2,$(CFLAGS))
>>> +$(OUTPUT)/cpuv4/usdt_o2.test.o: CFLAGS:=$(subst O0,O2,$(CFLAGS))
>>> +$(OUTPUT)/no_alu32/usdt_o2.test.o: CFLAGS:=$(subst O0,O2,$(CFLAGS))
>>> +endif
>> I tried your selftest with gcc14 and llvm20 in my environment. See below:
>>
>> llvm20:
>> Displaying notes found in: .note.stapsdt
>>    Owner                Data size        Description
>>    stapsdt              0x0000002f       NT_STAPSDT (SystemTap probe descriptors)
>>      Provider: test
>>      Name: usdt1
>>      Location: 0x00000000000003ac, Base: 0x0000000000000000, Semaphore: 0x0000000000000000
>>      Arguments: 8@-64(%rbp)
>>
>> gcc14:
>> Displaying notes found in: .note.stapsdt
>>    Owner                Data size        Description
>>    stapsdt              0x00000034       NT_STAPSDT (SystemTap probe descriptors)
>>      Provider: test
>>      Name: usdt1
>>      Location: 0x0000000000000334, Base: 0x0000000000000000, Semaphore: 0x0000000000000000
>>      Arguments: 8@array(,%rax,8)
>>
>> llvm20 and gcc14 generate different usdt patterns. '8@-64(%rbp)' already supports so
>> with SIB support, the test should pass CI, I think.
>>
[...]


  reply	other threads:[~2025-08-07 18:01 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-06  9:24 [PATCH v7 0/2] libbpf: fix USDT SIB argument handling causing unrecognized register error Jiawei Zhao
2025-08-06  9:24 ` [PATCH v7 1/2] " Jiawei Zhao
2025-08-06  9:24 ` [PATCH v7 2/2] selftests/bpf: Force -O2 for USDT selftests to cover SIB handling logic Jiawei Zhao
2025-08-06 18:17   ` Yonghong Song
2025-08-07  2:57     ` 赵佳炜
2025-08-07 18:01       ` Yonghong Song [this message]
2025-08-10  8:55         ` 赵佳炜
2025-08-10  9:39           ` 赵佳炜
2025-08-12  5:06           ` Yonghong Song
2025-08-12  7:02             ` 赵佳炜
2025-08-12 16:11               ` Yonghong Song
2025-08-13  2:27                 ` 赵佳炜
2025-08-13  5:24                   ` Yonghong Song
2025-08-13  6:23                     ` 赵佳炜
2025-08-17 13:43                     ` 赵佳炜
2025-08-18 17:35                       ` Yonghong Song
2025-08-19  9:50                         ` 赵佳炜
2025-08-20 20:57                           ` Yonghong Song
2025-08-20 23:00                         ` Andrii Nakryiko
2025-08-21 15:38                           ` 赵佳炜
2025-08-21 18:28                             ` Andrii Nakryiko
2025-08-22 15:39                               ` 赵佳炜
2025-08-07  9:28     ` Jiri Olsa
2025-08-06 18:07 ` [PATCH v7 0/2] libbpf: fix USDT SIB argument handling causing unrecognized register error Yonghong Song

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=e7ba3f7f-38b8-4c06-8aff-ef1fb8d04d86@linux.dev \
    --to=yonghong.song@linux.dev \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=phoenix500526@163.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.