From patchwork Thu Jul 27 16:48:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Faulls X-Patchwork-Id: 127060 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a985:0:b0:3e4:2afc:c1 with SMTP id t5csp1229234vqo; Thu, 27 Jul 2023 09:48:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlH1SpbdITcORNSZDSMLsJMAEwE/t3sYMB/QzMlNhpDzvj+4sIe95BEUikyGJyQbThNbT0tr X-Received: by 2002:a17:906:846b:b0:992:a9c3:244f with SMTP id hx11-20020a170906846b00b00992a9c3244fmr2363627ejc.4.1690476524746; Thu, 27 Jul 2023 09:48:44 -0700 (PDT) Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id se9-20020a170906ce4900b00993860a6d39si1316181ejb.355.2023.07.27.09.48.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Jul 2023 09:48:44 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@imgtec.com header.s=dk201812 header.b=ch2K1K67; dkim=neutral (body hash did not verify) header.i=@IMGTecCRM.onmicrosoft.com header.s=selector2-IMGTecCRM-onmicrosoft-com header.b=flJVwDMA; arc=fail (body hash mismatch); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A71F438560B6 for ; Thu, 27 Jul 2023 16:48:40 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx08-00376f01.pphosted.com (mx08-00376f01.pphosted.com [91.207.212.86]) by sourceware.org (Postfix) with ESMTPS id 311E03858D39 for ; Thu, 27 Jul 2023 16:48:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 311E03858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=imgtec.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=imgtec.com Received: from pps.filterd (m0168888.ppops.net [127.0.0.1]) by mx08-00376f01.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 36RFsFjh012000; Thu, 27 Jul 2023 17:48:26 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h= from:to:cc:subject:date:message-id:content-type:mime-version; s= dk201812; bh=dXFGqPBR+UykxTlEJlZZOK4kXsaP9qW1W/w5A+Dnh9o=; b=ch2 K1K67AfFmbO1lav85Z0o5JQuYPz9qrLbym+74U9WDJ/i1FFTpzWXt+KvG4Wq8ha6 LYnJvrDc7rO5NdDwRNA3R+Bptg+ojUm6Pp8vIg1E+qhr/+9S+wfKciyqdnNV9y7b uZqil/dqGb3iwLs/T2LvmUE9A1bP/6TwURLE24RI7K7zh7SAMct7+zodgAD2C45O E5cN/fXi/8/eZTvNh67sQRcBmazfLEx7HuVSiKLy/uUsXXIcXUjbzAOxDMvW2Kzg AD48SsgJQc/iVdxcWZlxWt2qefTBFJoH4RojafjJifJtfn1325nyctbHaVT4Nmyf Gf1XXffCRuwyO3wEHxw== Received: from hhmail04.hh.imgtec.org ([217.156.249.195]) by mx08-00376f01.pphosted.com (PPS) with ESMTPS id 3s05crv23y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 27 Jul 2023 17:48:26 +0100 (BST) Received: from HHMAIL05.hh.imgtec.org (10.100.10.120) by HHMAIL04.hh.imgtec.org (10.100.10.119) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Thu, 27 Jul 2023 17:48:25 +0100 Received: from GBR01-LO2-obe.outbound.protection.outlook.com (104.47.21.58) by email.imgtec.com (10.100.10.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Thu, 27 Jul 2023 17:48:25 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jHjnGjLzXawmwm5X02GU18Rhxte8i1AecBxh+vH7r2Wp6YnfYGJH5oTZx7gqzX1IPTAAGnOVIoQPl0LWlO3SVqsRUvOtgWIzREmCeDm7h+M1rw61hM1rwbn56PX5Qq0Khm9anMkYKhSTzXGuSRBesvLL05xrq0Ghxu1jBao3ReVFuFRMmVQ9AWI2KUWnVu7xl6Ozii5QTGNPGbroVtXt54HBkZ9VcbaJYsP3kFxZ1bB80to4txsmY2ZsvtMs5ChOKYvx12+wGfzbBni6s0sPvdbicBgDgLkgznzhiAAvn3vx5Bhc2bJ6DTzN4W8vbP7FoQvK3/pGmY4E38/qETtTHg== 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=dXFGqPBR+UykxTlEJlZZOK4kXsaP9qW1W/w5A+Dnh9o=; b=GWXqMScpcDnk+HErg8kJL00WoVuK7V502OjvHWYsnPFHbV2O7u4Zx6OmZ1CsQ3Cl/FZUX0l5+eO3pwIT3ovaPxs1TUzu4hwXvbQJtBcTHVthb67CsrQwdRmlY9uhBJ+rGlzW4Qd3Hz1ZSkcRHjUx8uWnadrPNL7/eBQLgmw821BzbNjZ+mfAI9oYOwmBbyYvhKZy4W3gHNhbkMLN54ZpWvR8mI5bv0Wx9sBQAbjXQA0kB1S0Pnct16ThbvGsiEIJ7R91dIcMGjwWVMvqeE24u2cpcrUq+dKS/t14OgLDIZCvbQ7bAheCjFqc6bbHQwGnVPSIbcdhzwnSvmFzZsZ2Mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=imgtec.com; dmarc=pass action=none header.from=imgtec.com; dkim=pass header.d=imgtec.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=IMGTecCRM.onmicrosoft.com; s=selector2-IMGTecCRM-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dXFGqPBR+UykxTlEJlZZOK4kXsaP9qW1W/w5A+Dnh9o=; b=flJVwDMAWmpiOhJ9Gr1DvJW2B1TqgBQTbXHLvPSb4v/xf8PvBbNRhsrEc5fs5zM5Sl0xuXJgrcjH5zamConhIVHzgdOXIxOnThoWGzjR4R7slEw9+y5Vg41jvetQdbihBqls9QwS+x/PIG3IO5NQCAEMZEWdjoQVeCR/lO1+Mqw= Received: from LO4P265MB5914.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:29f::11) by LO6P265MB6751.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:302::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.29; Thu, 27 Jul 2023 16:48:24 +0000 Received: from LO4P265MB5914.GBRP265.PROD.OUTLOOK.COM ([fe80::6a10:98e3:d725:eb05]) by LO4P265MB5914.GBRP265.PROD.OUTLOOK.COM ([fe80::6a10:98e3:d725:eb05%5]) with mapi id 15.20.6631.026; Thu, 27 Jul 2023 16:48:24 +0000 From: Joseph Faulls To: "binutils@sourceware.org" CC: "palmer@rivosinc.com" , "nelson@rivosinc.com" Subject: [PATCH] RISC-V: Do not gp relax against an ABS symbol if it is far away. Thread-Topic: [PATCH] RISC-V: Do not gp relax against an ABS symbol if it is far away. Thread-Index: AdnAqacuH0egEXRaRuundI929eMiZw== Date: Thu, 27 Jul 2023 16:48:24 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LO4P265MB5914:EE_|LO6P265MB6751:EE_ x-ms-office365-filtering-correlation-id: adfadfe1-5f68-462e-f449-08db8ec14b2c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: sewPJyNZQnYkV4+xY1E5M+npJm6WSMqbTZz7LJd0FjKOODMGR2lSI2OuJoWsgFDFuf8YKYVEwKA+emhiAqlqBiQ0jMtK40CPuE+CexFWrhKjitg1+g/BGYa+b0w+nxoRvwfOjcHRgw04V7SLY+r/jS+/FoNiBdbrXKq3OHFI7/aWCi4WrL8XWTqFxh+ls/+cMDBR9mSWwf4yW62zcCntL6mWPpkNODrpjWlIgVXBwBWJ2ifZCC3BQ8TjkfMbwHNFwMW8INqW4aFLFT2rqdy3koPqahbtRurf+BMSEL15x2J31UY/yUFimMEvdl9xS4uCRoYV4OMHqUii4xKJ4JJaW4N1pepe92XLZlwRNqxQfGUoVxSEM2ygZGBDm/QJ6ZKxxbWvIi0VErxVyNtP67YDzt5mIMyQVVkqzlsV1H5FvNxaEeJBoJVQKeQqHs2i0MVc6FYQYvTRtc0xSOSFg+y+4Vi/jaAeA+PLCLb12kQFS856+357h2L6vdcbHEidon6VLJMfHK3Xy/8yDok1FY1cBJsU7wstCNptkYk9ZPR6C7GbXGsc0Q6EoQz3659pJrjibGh5byOCv/JLR1hEooUmJbXHTqb4ZMVE7s6kgTOFI4avsom3QB9QTpzHbXLpjTWI x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LO4P265MB5914.GBRP265.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(366004)(136003)(39850400004)(346002)(396003)(376002)(451199021)(2906002)(86362001)(316002)(41300700001)(52536014)(5660300002)(8676002)(8936002)(33656002)(55016003)(9686003)(6506007)(26005)(478600001)(71200400001)(38070700005)(7696005)(83380400001)(186003)(38100700002)(6916009)(4326008)(64756008)(66476007)(66556008)(66446008)(76116006)(122000001)(66946007)(54906003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: h8CRmCd627tRGlzpReUso1xwZ4sQY0ERhQzwusv+LGjiJZiowTm91FCC92ty5GmPGQdss3ZyVLjewB7WQV125SWl1s3FbB4h3yBwCB0EVHhwcaKK9SZHUQiT1vcSCdMZ0SID5ShA+kXx8jQqheludFIrF3YoQ/9/qrvZEjliWzlwhioEcvonvaBCSjmJhQRnPQm2lyBfiJaQbMx9TVAYSzJmnXbDKKVnMNXje3wkFqTg+b5WFf0R4VhCux16naOMQGcwbLCTj+Sdko/04Dwct7HW6VOVZWfr439C9aICU9lB92QM9LbgfFDhCorwMAm//VXljzuMMdRfzzVvKME3f5PYS2x3GuCbzG0osnHba/ir546oX0jj8PKOr47iRv2iEd31umJFTsZKedRCjdlJfz/+V/cuM0YJvsFsbwTB53LWzlbcYbPrMREoVkw3K3gAEF/us/scbYKzNlKb5zNbFICNkXyI/JSw4pQ9bKE7Ti6OaMBDdhQzLyfq8zMjItZONPI3x7W4hiZnPNEmT7Z7DAK+4w/lJOsDXl1zVE+vDXsMsNv2u2mtd1n4bryy93gwb+emNaPlEoqAmjxijfZTr/hRf7dcfb66t1CZLqynve+3mmSubFAj28zufTJTj3knrH+1873H9fdC4wiVR8Vqr6DsiTYyoPZWsEEn176pkz4AxVmtSRGkjGHT1DEl9zXK7+4naKRkshWAFmfznCNAnsKl6i0BzE74oVVzjlkSN4ZI891Id1+Zml3iemQ4NUykTK44/bO7AvNRs/MezTcieG2gKzMwoRH1he//HGBYsLxbhh8Z7AFChytmccWko7D3Pu0EUZSgqLlWs6AuRzjg/NMPDDKpPe82al/gKPYChYcp87Xn/96GurpM0kFo4VNH6ebz7kewdIdew0qgt/67BO4Q9QNqa0b7z3GwrOZhmZPTCREha3TZmDnS0+MHJz3VbMKj9e3B5dU3CzODPEh+HtZ+Ek34mSf5YkZQtKHfvp/5PP/U5LvRoC6jdqcYwXN8AqCmCyjFjzJHtdWCRS+w0eURIy+9woC5U7SfuSr+82veVxy2agGOqyoD+rVQJaU1GgwO+UBp5FHvrRZXiVjOKumOSCrFiyvXBT4yQNgbSP2I568cqRWMRMlA2VX+BcIT2TLGDJ59HWZmqAKQI1ho5ERotl+TuOFbPhTMqnQ2VsL0EWUOrgdubid6T1CKoZpDA2eKretyAfBx0WP3fkh+jvVXLJicEwo+1menWiP4AAkJ7Xa5p1jtZXrW+E0B0EXBvuh408dc3aovx3QX9ONThgBnCbNkQNRPVcmG75MfoWBW6iZ5emODLLiaC7hW0WoUxZtGGq9MrjnaOl/iE3CU8FeeGWTTv/xXxNlAqk8ISEc2K6jKycuemAIEU86qlFkRubhgIQFyJT2szjDaMHtsTIKbR2UjCBzMzlb99u+c2gykr/C5SO8sl/5fre8AVAwDKzvqTzvDJGLN09WLIuozXGhYhJ2O92cu+Kt3a++XPwg43OEMUh2PfjlIQbR7A/zbuT3GoZs/jLRSo3iUdjKZ5Nj1iIFYqeC1YYxq69jDrXrvdJykRVwcXCCQ7UE2/DRg MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LO4P265MB5914.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: adfadfe1-5f68-462e-f449-08db8ec14b2c X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jul 2023 16:48:24.3678 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d5fd8bb-e8c2-4e0a-8dd5-2c264f7140fe X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: j8klusbMN/5hRHUm4E/RY73xZdDanftKt6Dp6VSqzrI1TSIJ/sLwdrBph4Pm9ZUe7+AJhVgpjvDpYtHLKkOMlBbUG59R7OKbE88zHBJCwpc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO6P265MB6751 X-OriginatorOrg: imgtec.com X-EXCLAIMER-MD-CONFIG: 15a78312-3e47-46eb-9010-2e54d84a9631 X-Proofpoint-GUID: PQ-VTRp4ZNogJnAMGRpjSdOzj6EBptkX X-Proofpoint-ORIG-GUID: PQ-VTRp4ZNogJnAMGRpjSdOzj6EBptkX X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, 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 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772593112215656703 X-GMAIL-MSGID: 1772593112215656703 Relaxations can cause the gp to move after it has been decided to gp relax. Against an absolute symbol, the distance may change such that the offset can no longer fit in the 12-bit immediate field. bfd/ * elfnn-riscv.c (_bfd_riscv_relax_pc) Do not gp relax against and ABS symbol if it is far away. ld/ * ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated. * ld/testsuite/ld-riscv-elf/gp-relax-abs*: New testcases. --- bfd/elfnn-riscv.c | 12 ++++++++++++ ld/testsuite/ld-riscv-elf/gp-relax-abs-sym.s | 3 +++ ld/testsuite/ld-riscv-elf/gp-relax-abs.d | 14 ++++++++++++++ ld/testsuite/ld-riscv-elf/gp-relax-abs.s | 5 +++++ ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 1 + 5 files changed, 35 insertions(+) create mode 100644 ld/testsuite/ld-riscv-elf/gp-relax-abs-sym.s create mode 100644 ld/testsuite/ld-riscv-elf/gp-relax-abs.d create mode 100644 ld/testsuite/ld-riscv-elf/gp-relax-abs.s -- 2.34.1 diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index 09aa7be225e..79e29e8b272 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -4885,6 +4885,18 @@ _bfd_riscv_relax_pc (bfd *abfd ATTRIBUTE_UNUSED, max_alignment = _bfd_riscv_get_max_alignment (sec, gp); htab->max_alignment_for_gp = max_alignment; } + /* If the symbol is in the abs section, relaxation could cause the gp + * to move such that the gp relocation is no longer possible. + * Conservatively half the allowed distance, as it cannot be that + * gp moves more than this, i.e. more than half the instructions be + * deleted due to relaxation. Do this by adjusting reserve_size. */ + if (sym_sec->output_section == bfd_abs_section_ptr) + { + if (symval >= gp) + reserve_size += (symval - gp) / 2; + else + reserve_size += (gp - symval) / 2; + } } } diff --git a/ld/testsuite/ld-riscv-elf/gp-relax-abs-sym.s b/ld/testsuite/ld-riscv-elf/gp-relax-abs-sym.s new file mode 100644 index 00000000000..a018bb3a50a --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/gp-relax-abs-sym.s @@ -0,0 +1,3 @@ +.section .data +.globl sym +.set sym,0x10804 diff --git a/ld/testsuite/ld-riscv-elf/gp-relax-abs.d b/ld/testsuite/ld-riscv-elf/gp-relax-abs.d new file mode 100644 index 00000000000..2c7ab3a2579 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/gp-relax-abs.d @@ -0,0 +1,14 @@ +#source: gp-relax-abs.s +#source: gp-relax-abs-sym.s +#as: -march=rv64ic -mabi=lp64 +#ld: -Tcode-model-01.ld -melf64lriscv +#objdump: -d + +.*:[ ]+file format .* + +Disassembly of section \.text: + +[0-9a-f]+ <_start>: +.*auipc.* +.*lw.*# [0-9a-f]* +#pass diff --git a/ld/testsuite/ld-riscv-elf/gp-relax-abs.s b/ld/testsuite/ld-riscv-elf/gp-relax-abs.s new file mode 100644 index 00000000000..db2103bafd1 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/gp-relax-abs.s @@ -0,0 +1,5 @@ +.text +.global _start +_start: + auipc t0, %pcrel_hi(sym) + lw t0, %pcrel_lo(_start)(t0) diff --git a/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp b/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp index 947a266ba72..a53a2758991 100644 --- a/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp +++ b/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp @@ -172,6 +172,7 @@ if [istarget "riscv*-*-*"] { run_dump_test "attr-merge-priv-spec-failed-06" run_dump_test "attr-phdr" run_dump_test "relax-max-align-gp" + run_dump_test "gp-relax-abs" run_dump_test "uleb128" run_ld_link_tests [list \ [list "Weak reference 32" "-T weakref.ld -m[riscv_choose_ilp32_emul]" "" \