From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11olkn2044.outbound.protection.outlook.com [40.92.18.44]) by sourceware.org (Postfix) with ESMTPS id 496143858D20 for ; Thu, 16 Nov 2023 06:44:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 496143858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=maskray.me Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=maskray.me ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 496143858D20 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.92.18.44 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1700117092; cv=pass; b=u3VG1HH8+c07M7IAxZ1R/ApKnbtawIOhBrhyd5y0H4YgQ7VovPBohh3gM5Q5avo6YiyVwV2uMMPluCZ9ICzValbIiMyBY4BYeI5F6vdhnbl3RyjF1+9r/UcK1FZ/VRDra34Fk5a6n1d8NurPBndEzmIUpV1y52lygD0K0wfciLo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1700117092; c=relaxed/simple; bh=gnrHNNZBJYRMIlnuUm1ijy/KRbmIVpNGwaFJeC4K7vg=; h=From:Date:Message-ID:Subject:To:MIME-Version; b=Iz++XdwObULo8OKQrdb3R9P/gH7u+ZkbcsH6tAUoeglDi5D1XM9GxxrUneAg7UZfgk3uvF5S0QxTTPX1MMtu6sHrnDpfX+Dt7ZjbivFuJ6okkLOYr538UkZUiHEWloYXlCAJK2SjCyHW2Wi6FbLdRJR10uUliBeVtS0eYr9hwgI= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DJgU0+NvlKCiQ1FEE8TROQXC/yk392qtzcS/9s0titi33QuH4F5JiFC2X0HnZYJTnTvUZB5ArQXIh3qJ1ez32ABrUnsvbC7SrWw78Ac/qP3hcn8Rn9jf638VQK9bAbZqRqd7Onyc/UIHyQ1aMveQctFQzjfsuuSXRoSeoJGDFwjGCWDwqvLORmYou7dDVzWFg8oZsDeci/R16VrKXxFiDflUCkf/3Z9l0a2akySFodQsKbRFiM2w9zkoAB/EFp7VmhWQs3bTtIRgBvcOky2dYJga+4FPZJPSkQrxZ8b9UWmWzzzOH+wt2Glgym1lixeCUyXqkucBCjSQh0lQN4ct4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rdJUurcHHYkfHtuniccq2WpjywVRnJI4GWACj/gSxV0=; b=mWCWHmneMY9h304TGeKabSB6A5NYY8pAEHXEzE/UN5O8swBn5dNOdRwXdpFM8lgcJYViIenOICWVru4cb4tD5ncZlSKMkzpHekRjED8CZ7HBIRJfyXdXpsj66ikFg8BGF2Ck0555qMGAJrp62rcaYpZV4H/1iM73FgAsvMHsGp7ecMN7pTpF16fpQhybqXzUcVJ2Azijc8cJ4qgLsDU1mbPI9V+nFCpG5a/jrtVZ44qRx35YGnrGCxr8zJUc5MjmNLSrXqSleDgKLfcTdfRMNKia2usxMWq7Nv4M0FCyNhx8+L5rZ+ELuy2twSSpf1EWcyMXG71eJ5b4vQVdPJvetA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DS7PR12MB5765.namprd12.prod.outlook.com (2603:10b6:8:74::19) by CY8PR12MB7513.namprd12.prod.outlook.com (2603:10b6:930:91::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7002.20; Thu, 16 Nov 2023 06:44:48 +0000 Received: from DS7PR12MB5765.namprd12.prod.outlook.com ([fe80::2493:49ba:b06b:fa80]) by DS7PR12MB5765.namprd12.prod.outlook.com ([fe80::2493:49ba:b06b:fa80%6]) with mapi id 15.20.7002.019; Thu, 16 Nov 2023 06:44:48 +0000 X-Gm-Message-State: AOJu0YyDofId4kD0uZeAm8QGgHxhbMYYMyDSkkgTyD8lFb1eDwT1KGlZ x9IcIBfHT7hFyLUe4JQFLfk7xbjk0o3fut5i1CQ= X-Google-Smtp-Source: AGHT+IFFCLERMY/0bt7oUZK6W63x1uNtFjNgT/I5seP2SSRyT5sVhAryewtHKXy+KZSVLzf2lVV3tMm/eyjHfhBNfFg= X-Received: by 2002:ac5:c259:0:b0:496:3906:33e3 with SMTP id n25-20020ac5c259000000b00496390633e3mr13385410vkk.15.1700116778924; Wed, 15 Nov 2023 22:39:38 -0800 (PST) References: <20231116062307.3292483-1-mengqinggang@loongson.cn> <20231116062307.3292483-7-mengqinggang@loongson.cn> In-Reply-To: <20231116062307.3292483-7-mengqinggang@loongson.cn> From: Fangrui Song Date: Wed, 15 Nov 2023 22:39:27 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v1 6/6] LoongArch: Add more relaxation testcases To: mengqinggang Cc: binutils@sourceware.org, xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-TMN: [N00fdspYaP0SArApeVWQPFsnImuuldC/] X-ClientProxiedBy: MWH0EPF00056D03.namprd21.prod.outlook.com (2603:10b6:30f:fff2:0:1:0:d) To DS7PR12MB5765.namprd12.prod.outlook.com (2603:10b6:8:74::19) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5765:EE_|CY8PR12MB7513:EE_ X-MS-Office365-Filtering-Correlation-Id: f22757db-f21e-4423-2c4d-08dbe66f8688 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4Rceut2DlftbnmdoHSPNApIZLcGsXY7KcbgWiROxgMYDFf8cLzi2BCC09B78AjOPrnaAQi0kxzNjOy/gyQm26lX4TQP2w6zXB+zEyibM5Xz4nje2UfQTehLMjVQ0udyS8SiYiEk0c7PJ+M/MUu1wm8A7WaVVjDU91hKo6+Wv0wWnyV69IYpLVmgIxV8Z5Me9ilUnF10QaSkWcT0KebcH3WSb/DUgn7OUL3RyYPNp97WEEvdN57hQOs46hMSyNc2ggyMKpiXgF5+/IdM3vPFqbO5el+//YLeenA98UsPQK/xdUItTIOQgZWMq45iWz5wG3fsHNLAfZj7N15mfJH6OyQ8ckxCP5u8Z7fEXiIWNmEFbsWakUsO2SPOiRX8Pd9J1SNgVUtxZP0Ce64JyOLTx4Tf5dKS4WUv93UBl4lMX4pCbs5JlYMEs1xMgZBYycXNVdgqEwz3S+0UdHQpV0160hbVHMaZr9WqDrCtxtO1kgx7zqbou2CwHkDmEbW3KDjy+l6a8ODrSYHaMloaD0xkrWBcig64ViHLyRqJG23i+a1gyWI3dW0Ze/DJ2O5L/oxGW5lu0fNWM+t4zKbMFmq2xxaKbEOgvbHYsY7S/chxgByinN8W/NXBDSqNLte7SosDKBptW/H0xjmq1gzECdsQfMw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bXY3SXBoOUpzdGZLTm92cUpzWFhGN1FiOW84MzNsUVRHeDZ5SlI5cWZwRzd2?= =?utf-8?B?QmhINCtrWjROUlJ5enlWTjd2aklROURwR0xPdjkvVDU4TExrRytmeHFURTR3?= =?utf-8?B?TC9TZDduUEs5UWZWaHJyNVpFV2tzVjdUOEcrMy90NFI0NEcrcmRNdkE1bUVr?= =?utf-8?B?RGR1b2ZiejNqbzV6VDh4M3E3MS8yenhLY1VyM090NUcwTVdEd0gxSk5OZHJZ?= =?utf-8?B?cDkxQUxIakxEUllRTklnMjdJNVhvbnRPYjJLLzN6ODZwUDRuMVFWZjZlU1Za?= =?utf-8?B?TUNzUnluemRlekZmMnQvKzlRUWFKL05MTGRpK3NKN0JEWHFLMUZia3NkOWsz?= =?utf-8?B?eDM3bmpxd0hhWlNKYkFCTGNLZzBVV001eDZwbFkxSlRkcldkeHozOW5ZVFdk?= =?utf-8?B?SXpVVnppa25jY2JXYWhIUFQxL0ErNHhab09SdVNwTyswNU5JVGxCWllCOHJI?= =?utf-8?B?SENBcTl0cW1hei9pRGV3MW4zdzVrK3d4NkRQaHZXRGp2V1o4QUVjTktSVUxX?= =?utf-8?B?aXpwdThibnFGSWRBUEFZUlZIN1JRWmxxbCtRelFCL1MweXVVMFRpOVVsVHBU?= =?utf-8?B?SnAwd3diWFlKUU1nMnR6Z0E3bkY3eWFDQXBsZDY0VjZ0cmRld1hibTI3NHBD?= =?utf-8?B?eFAyclhXZFBNVm9FY2pLa1hlRy92NjRyR2NuQ1lQZ2xJMk03MFFrb2ozTjdS?= =?utf-8?B?NHBiK1kwSUpLTUZzdXEyVk92dkl3TVVNTFFveG9XN3lKdXkrMzkwMHAxSkxi?= =?utf-8?B?UFVUNVdHY3BHWU03M3ZZRHhqdk56NVk5cjBUS2RxRU11T0tuTkFSb0ppSnlz?= =?utf-8?B?dS9mdnpZYmRxbE1BeW1vSTNiMVZJNjhabERwWUtnQXRNRDZqMGZaQnk5K0Zz?= =?utf-8?B?bHdvQTNxbnBZUEJRYk5yRWI3Z2hRYXVmQWJ2VGF2L3NNNnR1R2VhemNnV1R3?= =?utf-8?B?dHMrQS9aMzdDMmpraEZwbmUrRlpOYkxEbHQ1U0F1WjVIQjRiRHM3eUdYUWNo?= =?utf-8?B?R0dmUU9vKzFuUXdmOVZiM21ua0FyUU95eVVWL3R2ZDZCbkl3ZGRRMmtOeWJZ?= =?utf-8?B?bFUwL0VWT1FqcXBPNStHTXBmbklHK0ovQ3U2RnNvaXZxZ3owaUN6bU9PUnFI?= =?utf-8?B?dGoyKzNieEx2VUhqeEs5UFBJSmJoQiticmg1Q2IrMFVnMTJLMmRMU250UlZE?= =?utf-8?B?ZmduL2hLOXcyU2hQVENPN3U4ZzlvR2hDRnZ6RG9uNmZ6RGhiKytrbmI3MWR0?= =?utf-8?B?TkJtU1B0ZGJFZzZYZWZydkZzQWsrMk9PZktwUlVaa0J1WTRSWS96TEZsY3lp?= =?utf-8?B?NjdWMDFZUGJHaGt3L1VZek9nV3pKT3RrZCt1WkJ4ODlVcC9nbmUvWmZZRGlk?= =?utf-8?B?MEdVT255Z1Z1U1BoRDd2SUdjWjFGM3VOSXRLS3p3eFYvQXkxaVpEaE5LREtX?= =?utf-8?B?Z1BzcnkxdWUzbllIeXhQQXd6STBjejFYcnY4dGhCZ2VKc0o3QWVBeVdWdUc0?= =?utf-8?B?OXlVM1VHam5DRTVxalducHhwR3Bmdk5zbnI1bkxneE1nYlg3NndYbXJ5NnNK?= =?utf-8?Q?aLzyE6nTAbFbOr1E6Wsk12qVv3eXQRreNAqJ5OXDwVS9AN?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-5183d.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: f22757db-f21e-4423-2c4d-08dbe66f8688 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5765.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2023 06:44:47.8993 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7513 X-Spam-Status: No, score=-8.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_INFOUSMEBIZ,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Wed, Nov 15, 2023 at 10:23=E2=80=AFPM mengqinggang wrote: > > 1. .so relaxation testcase > 2. ld --no-relax testcase > 3. segment alignment testcase > --- > .../ld-loongarch-elf/relax-segment-max.s | 13 +++ > .../ld-loongarch-elf/relax-segment-min.s | 13 +++ > ld/testsuite/ld-loongarch-elf/relax-so.s | 4 + > ld/testsuite/ld-loongarch-elf/relax.exp | 80 +++++++++++++++++-- > 4 files changed, 105 insertions(+), 5 deletions(-) > create mode 100644 ld/testsuite/ld-loongarch-elf/relax-segment-max.s > create mode 100644 ld/testsuite/ld-loongarch-elf/relax-segment-min.s > create mode 100644 ld/testsuite/ld-loongarch-elf/relax-so.s > > diff --git a/ld/testsuite/ld-loongarch-elf/relax-segment-max.s b/ld/tests= uite/ld-loongarch-elf/relax-segment-max.s > new file mode 100644 > index 00000000000..417260fb880 > --- /dev/null > +++ b/ld/testsuite/ld-loongarch-elf/relax-segment-max.s > @@ -0,0 +1,13 @@ > +# The .align may cause overflow because deleting nops. > + .text # 0x120000000 > + .fill 0x4000 > + .align 3 # 0x120004000 > + la.local $r12, .L1 > + > +# .fill 0x1f7ffc # max fill without overflow, .data address is 0x120200= 000 > +# .fill 0x1f8000 # min fill with overflow, .data address is 0x120204000 > + .fill 0x1fbff4 # max fill with overflow, .data address is 0x120204000 > + > + .data > +.L1: > + .byte 2 > diff --git a/ld/testsuite/ld-loongarch-elf/relax-segment-min.s b/ld/tests= uite/ld-loongarch-elf/relax-segment-min.s > new file mode 100644 > index 00000000000..14a541b97c8 > --- /dev/null > +++ b/ld/testsuite/ld-loongarch-elf/relax-segment-min.s > @@ -0,0 +1,13 @@ > +# The .align may cause overflow because deleting nops. > + .text # 0x120000000 > + .fill 0x4000 > + .align 3 # 0x120004000 > + la.local $r12, .L1 > + > +# .fill 0x1f7ffc # max fill without overflow, .data address is 0x120200= 000 > + .fill 0x1f8000 # min fill with overflow, .data address is 0x120204000 > +# .fill 0x1fbff4 # max fill with overflow, .data address is 0x120204000 > + > + .data > +.L1: > + .byte 2 You may want something more complex. When I implemented linker relaxation for lld, I put a lot of thoughts into organizing the tests. I have come up with https://github.com/llvm/llvm-project/blob/main/lld/test/ELF/riscv-relax-cal= l.s https://github.com/llvm/llvm-project/blob/main/lld/test/ELF/riscv-relax-cal= l2.s https://github.com/llvm/llvm-project/blob/main/lld/test/ELF/riscv-relax-ali= gn.s .fill 0x4000 creates a lot of zeroes. I prefer output section addresses. > diff --git a/ld/testsuite/ld-loongarch-elf/relax-so.s b/ld/testsuite/ld-l= oongarch-elf/relax-so.s > new file mode 100644 > index 00000000000..01a404a8b47 > --- /dev/null > +++ b/ld/testsuite/ld-loongarch-elf/relax-so.s > @@ -0,0 +1,4 @@ > +.text > +.align 2 > +.L1: > + la.local $r12, .L1 > diff --git a/ld/testsuite/ld-loongarch-elf/relax.exp b/ld/testsuite/ld-lo= ongarch-elf/relax.exp > index 7ff876d7914..426b72dac5d 100644 > --- a/ld/testsuite/ld-loongarch-elf/relax.exp > +++ b/ld/testsuite/ld-loongarch-elf/relax.exp > @@ -22,7 +22,7 @@ > if [istarget loongarch64-*-*] { > > if [isbuild loongarch64-*-*] { > - set testname "loongarch relax build" > + set testname "loongarch relax .exe build" > set pre_builds [list \ > [list \ > "$testname" \ > @@ -39,17 +39,87 @@ if [istarget loongarch64-*-*] { > if [file exist "tmpdir/relax"] { > set objdump_output [run_host_cmd "objdump" "-d tmpdir/relax"] > if { [ regexp ".*pcaddi.*pcaddi.*" $objdump_output] } { > - pass "loongarch relax" > + pass "loongarch relax .exe" > } { > - fail "loongarch relax" > + fail "loongarch relax .exe" > } > } > + > + set testname "loongarch ld --no-relax build" > + set pre_builds [list \ > + [list \ > + "$testname" \ > + "-Wl,--no-relax" \ > + "" \ > + {relax.s} \ > + {} \ > + "norelax" \ > + ] \ > + ] > + > + run_cc_link_tests $pre_builds > + > + if [file exist "tmpdir/norelax"] { > + set objdump_output [run_host_cmd "objdump" "-d tmpdir/norelax"] > + if { [ regexp ".*pcaddi.*" $objdump_output] } { > + fail "loongarch ld --no-relax" > + } { > + pass "loongarch ld --no-relax" > + } > + } > + > + run_ld_link_tests \ > + [list \ > + [list \ > + "loongarch relax .so build" \ > + "-shared -e 0x0" "" \ > + "" \ > + {relax-so.s} \ > + {} \ > + "relax-so" \ > + ] \ > + ] > + > + if [file exist "tmpdir/relax-so"] { > + set objdump_output [run_host_cmd "objdump" "-d tmpdir/relax-so"] > + if { [ regexp ".*pcaddi.*" $objdump_output] } { > + pass "loongarch relax .so" > + } { > + fail "loongarch relax .so" > + } > + } > + > + # If symbol in data segment, offset need to sub segment align to pre= vent > + # overflow. > + run_ld_link_tests \ > + [list \ > + [list \ > + "loongarch relax segment alignment min" \ > + "-e0 -Ttext 0x120000000 -pie" "" \ > + "" \ > + {relax-segment-min.s} \ > + {} \ > + "relax-segment-min" \ > + ] \ > + ] > + > + run_ld_link_tests \ > + [list \ > + [list \ > + "loongarch relax segment alignment max" \ > + "-e0 -Ttext 0x120000000 -pie" "" \ > + "" \ > + {relax-segment-max.s} \ > + {} \ > + "relax-segment-max" \ > + ] \ > + ] > } > > run_ld_link_tests \ > [list \ > [list \ > - "relax-align" \ > + "loongarch relax-align" \ > "-e 0x0 -z relro" "" \ > "" \ > {relax-align.s} \ > @@ -64,7 +134,7 @@ if [istarget loongarch64-*-*] { > run_ld_link_tests \ > [list \ > [list \ > - "uleb128" \ > + "loongarch uleb128" \ > "-e 0x0" "" \ > "" \ > {uleb128.s} \ > -- > 2.36.0 >