From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-173.mta1.migadu.com (out-173.mta1.migadu.com [95.215.58.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74435186A for ; Thu, 7 Aug 2025 18:01:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754589689; cv=none; b=DR39liCwdHqSONyMBzD446iMwGZAa+ooELPbLB6IZnuEt6fQUSuwfER0eZZ30uzNdNROIGSvo34c74P5LV2L7cL2mHSM2hFCxOml1gyDezDt2EJRjGCfeyg1XwFS8X3bQoanqiCrNjkNBh3n3TDuR2GMgcbLt/jDrY3fJFRrVpI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754589689; c=relaxed/simple; bh=kGnBaGbneL6boqRfQk66ANHbaY1qqZYqDC0sQhY7Efc=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=VlPMulu5mh8NNBGGaM0fzhM/IWqVgdL+6Idmn1FphiGY0ZamRFEGbqSa86mUJw7tkhYf10ii4jhDRMO2mSy7zv/SZICT4/0+9Soh0uLEn0d4uwRY+O8eAFuJb/uVz3LII9WRYSNq7xq02Xe4H1fTCrngsMRPhhlR0G2W4SnI5h4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=mcXrtgYc; arc=none smtp.client-ip=95.215.58.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="mcXrtgYc" Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1754589675; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5+RLJIdnO4nFug6NwqhYgUcSF9+14CZNJQVj+XVkE2w=; b=mcXrtgYcZu/Y7IeL0P5mqUechkqW9lWd2H6QNmfqoHQ7uLaILf3fNjR2TgP48mefi1THg2 5HbVB9YYgMvp3o85n18zt2zLulpgux0maR751TwrIfMrEtBBp17AcVBYne7DcEQLi+zW5H OnuCDUHTlr6ErqSbFwuoRfB0xLez+aE= Date: Thu, 7 Aug 2025 11:01:08 -0700 Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Subject: Re: [PATCH v7 2/2] selftests/bpf: Force -O2 for USDT selftests to cover SIB handling logic Content-Language: en-GB To: =?UTF-8?B?6LW15L2z54Kc?= Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org References: <20250806092458.111972-1-phoenix500526@163.com> <20250806092458.111972-3-phoenix500526@163.com> <30d8fcac.2669.19882763de2.Coremail.phoenix500526@163.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Yonghong Song In-Reply-To: <30d8fcac.2669.19882763de2.Coremail.phoenix500526@163.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT 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" 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 >>> --- >>> 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. >> [...]