From patchwork Fri Dec 5 06:47:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: mengqinggang X-Patchwork-Id: 125951 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DA1AD48EFFAE for ; Fri, 5 Dec 2025 06:54:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DA1AD48EFFAE X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 4FA004D8D1EB for ; Fri, 5 Dec 2025 06:52:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4FA004D8D1EB Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4FA004D8D1EB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1764917545; cv=none; b=XgM6eqw6epqmY0TdyVBKK+ZWJ35rbCupB6nLVxMHmPDd5V7Bjgo7ILtc9Tbj45de+86O7vTNlGlfu/sOUMm7rnI+9MCoS7uy+BqSxAHrgBTvJ4l1nXB7wMuHRNB9k8Egzi9UEC7cZjk7+dtCYonLw/34SXoxhOCMA6RGNk+cKd0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1764917545; c=relaxed/simple; bh=X8N7Ce8oXtAagY+t98NDf6MFfOdwsqnBCy03uHwPD5Y=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=V++n7kMQlQVpB9+WTRdTckgRgppz/LWYB1t/adhtfzsXwpE2VTK8DvNmaP82aEeZ35i8MqLb9sfRkoI6OBwnr0T2fykoGjCu78ezY3xRq8semZTf9xDSMMCeDXqRfpRuxgk12gOoQ/3gp49t+CSJH0KBn/PHb/t/z3kWIKQOd5c= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4FA004D8D1EB Received: from loongson.cn (unknown [10.2.6.7]) by gateway (Coremail) with SMTP id _____8Dx9tAkgTJpI04rAA--.22724S3; Fri, 05 Dec 2025 14:52:20 +0800 (CST) Received: from amd9754.. (unknown [10.2.6.7]) by front1 (Coremail) with SMTP id qMiowJBxysAbgTJpscRFAQ--.32222S2; Fri, 05 Dec 2025 14:52:16 +0800 (CST) From: mengqinggang To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, cailulu@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, luweining@loongson.cn, hejinyang@loongson.cn, c@jia.je, mengqinggang@loongson.cn Subject: [PATCH v3 09/12] LoongArch: Add linker relaxation support for R_LARCH_CALL30 Date: Fri, 5 Dec 2025 14:47:56 +0800 Message-Id: <20251205064759.2102819-10-mengqinggang@loongson.cn> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251205064759.2102819-1-mengqinggang@loongson.cn> References: <20251205064759.2102819-1-mengqinggang@loongson.cn> MIME-Version: 1.0 X-CM-TRANSID: qMiowJBxysAbgTJpscRFAQ--.32222S2 X-CM-SenderInfo: 5phqw15lqjwttqj6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org Relax call30 to bl, relax tail30 to b. --- bfd/elfnn-loongarch.c | 7 ++++--- gas/config/tc-loongarch.c | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 5e5eb237abd..62696b83397 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -6100,6 +6100,7 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, relax_func = loongarch_relax_pcala_ld; break; case R_LARCH_CALL36: + case R_LARCH_CALL30: relax_func = loongarch_relax_call36; break; case R_LARCH_TLS_LE_HI20_R: @@ -6158,7 +6159,7 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, + r_symndx; if ((ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC - && r_type != R_LARCH_CALL36) + && (r_type != R_LARCH_CALL36 || r_type != R_LARCH_CALL30)) || sym->st_shndx == SHN_ABS) continue; @@ -6195,7 +6196,7 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, is not set yet. */ if (h != NULL && ((h->type == STT_GNU_IFUNC - && r_type != R_LARCH_CALL36) + && (r_type != R_LARCH_CALL36 || r_type != R_LARCH_CALL30)) || bfd_is_abs_section (h->root.u.def.section) || h->start_stop)) continue; @@ -6223,7 +6224,7 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, Undefweak for other relocations handing in the future. */ else if (h->root.type == bfd_link_hash_undefweak && !h->root.linker_def - && r_type == R_LARCH_CALL36) + && (r_type == R_LARCH_CALL36 || r_type == R_LARCH_CALL30)) { sym_sec = sec; symval = rel->r_offset; diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c index fe6fccec05f..fd03272de6f 100644 --- a/gas/config/tc-loongarch.c +++ b/gas/config/tc-loongarch.c @@ -880,7 +880,8 @@ loongarch_args_parser_can_match_arg_helper (char esc_ch1, char esc_ch2, || BFD_RELOC_LARCH_TLS_LE_LO12 == reloc_type || BFD_RELOC_LARCH_TLS_LE64_LO20 == reloc_type || BFD_RELOC_LARCH_TLS_LE64_HI12 == reloc_type - || BFD_RELOC_LARCH_CALL36 == reloc_type)) + || BFD_RELOC_LARCH_CALL36 == reloc_type + || BFD_RELOC_LARCH_CALL30 == reloc_type)) { ip->reloc_info[ip->reloc_num].type = BFD_RELOC_LARCH_RELAX; ip->reloc_info[ip->reloc_num].value = const_0;