From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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: =?us-ascii?Q?h8CRmCd627tRGlzpReUso1xwZ4sQY0ERhQzwusv+LGjiJZiowTm91FCC92ty?= =?us-ascii?Q?5GmPGQdss3ZyVLjewB7WQV125SWl1s3FbB4h3yBwCB0EVHhwcaKK9SZHUQiT?= =?us-ascii?Q?1vcSCdMZ0SID5ShA+kXx8jQqheludFIrF3YoQ/9/qrvZEjliWzlwhioEcvon?= =?us-ascii?Q?vaBCSjmJhQRnPQm2lyBfiJaQbMx9TVAYSzJmnXbDKKVnMNXje3wkFqTg+b5W?= =?us-ascii?Q?Ff0R4VhCux16naOMQGcwbLCTj+Sdko/04Dwct7HW6VOVZWfr439C9aICU9lB?= =?us-ascii?Q?92QM9LbgfFDhCorwMAm//VXljzuMMdRfzzVvKME3f5PYS2x3GuCbzG0osnHb?= =?us-ascii?Q?a/ir546oX0jj8PKOr47iRv2iEd31umJFTsZKedRCjdlJfz/+V/cuM0YJvsFs?= =?us-ascii?Q?bwTB53LWzlbcYbPrMREoVkw3K3gAEF/us/scbYKzNlKb5zNbFICNkXyI/JSw?= =?us-ascii?Q?4pQ9bKE7Ti6OaMBDdhQzLyfq8zMjItZONPI3x7W4hiZnPNEmT7Z7DAK+4w/l?= =?us-ascii?Q?JOsDXl1zVE+vDXsMsNv2u2mtd1n4bryy93gwb+emNaPlEoqAmjxijfZTr/hR?= =?us-ascii?Q?f7dcfb66t1CZLqynve+3mmSubFAj28zufTJTj3knrH+1873H9fdC4wiVR8Vq?= =?us-ascii?Q?r6DsiTYyoPZWsEEn176pkz4AxVmtSRGkjGHT1DEl9zXK7+4naKRkshWAFmfz?= =?us-ascii?Q?nCNAnsKl6i0BzE74oVVzjlkSN4ZI891Id1+Zml3iemQ4NUykTK44/bO7AvNR?= =?us-ascii?Q?s/MezTcieG2gKzMwoRH1he//HGBYsLxbhh8Z7AFChytmccWko7D3Pu0EUZSg?= =?us-ascii?Q?qLlWs6AuRzjg/NMPDDKpPe82al/gKPYChYcp87Xn/96GurpM0kFo4VNH6ebz?= =?us-ascii?Q?7kewdIdew0qgt/67BO4Q9QNqa0b7z3GwrOZhmZPTCREha3TZmDnS0+MHJz3V?= =?us-ascii?Q?bMKj9e3B5dU3CzODPEh+HtZ+Ek34mSf5YkZQtKHfvp/5PP/U5LvRoC6jdqcY?= =?us-ascii?Q?wXN8AqCmCyjFjzJHtdWCRS+w0eURIy+9woC5U7SfuSr+82veVxy2agGOqyoD?= =?us-ascii?Q?+rVQJaU1GgwO+UBp5FHvrRZXiVjOKumOSCrFiyvXBT4yQNgbSP2I568cqRWM?= =?us-ascii?Q?RMlA2VX+BcIT2TLGDJ59HWZmqAKQI1ho5ERotl+TuOFbPhTMqnQ2VsL0EWUO?= =?us-ascii?Q?rgdubid6T1CKoZpDA2eKretyAfBx0WP3fkh+jvVXLJicEwo+1menWiP4AAkJ?= =?us-ascii?Q?7Xa5p1jtZXrW+E0B0EXBvuh408dc3aovx3QX9ONThgBnCbNkQNRPVcmG75Mf?= =?us-ascii?Q?oWBW6iZ5emODLLiaC7hW0WoUxZtGGq9MrjnaOl/iE3CU8FeeGWTTv/xXxNlA?= =?us-ascii?Q?qk8ISEc2K6jKycuemAIEU86qlFkRubhgIQFyJT2szjDaMHtsTIKbR2UjCBzM?= =?us-ascii?Q?zlb99u+c2gykr/C5SO8sl/5fre8AVAwDKzvqTzvDJGLN09WLIuozXGhYhJ2O?= =?us-ascii?Q?92cu+Kt3a++XPwg43OEMUh2PfjlIQbR7A/zbuT3GoZs/jLRSo3iUdjKZ5Nj1?= =?us-ascii?Q?iIFYqeC1YYxq69jDrXrvdJykRVwcXCCQ7UE2/DRg?= Content-Type: multipart/alternative; boundary="_000_LO4P265MB59141A6F1238DFB73BC2A9818001ALO4P265MB5914GBRP_" 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 List-Id: --_000_LO4P265MB59141A6F1238DFB73BC2A9818001ALO4P265MB5914GBRP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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 A= BS 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 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 =3D _bfd_riscv_get_max_alignment (sec, gp); htab->max_alignment_for_gp =3D max_alignment; } + /* If the symbol is in the abs section, relaxation could cause th= e 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 =3D=3D bfd_abs_section_ptr) + { + if (symval >=3D gp) + reserve_size +=3D (symval - gp) / 2; + else + reserve_size +=3D (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-ris= cv-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=3Drv64ic -mabi=3Dlp64 +#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-ris= cv-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-r= iscv-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= ]" "" \ -- 2.34.1 --_000_LO4P265MB59141A6F1238DFB73BC2A9818001ALO4P265MB5914GBRP_--