From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NelsondeMBP.localdomain (36-230-188-51.dynamic-ip.hinet.net [36.230.188.51]) by sourceware.org (Postfix) with ESMTP id 8C5CD3858CDA for ; Mon, 29 Jan 2024 13:17:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8C5CD3858CDA Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=NelsondeMBP.localdomain ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8C5CD3858CDA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=36.230.188.51 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706534269; cv=none; b=ROJgiRYBvwy40PQHeTKP3xaeVGMYiDCvhGUfprxh5JM5CxHzcj+rx1gkO9Wv2zBFZcacHH+ohbaD0aoScTzHjzu2BvWd2lxdAFk9GJJe5oifF3VWTdaiWwtoc/yzdcGVtTAcRLCLYRaCk/by6uZ18hHA9POI0lAW6c7mWYSMNHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706534269; c=relaxed/simple; bh=+l9Lwfs4754vDVSasHw9EdtBXYFOLRLke6+zRzu3UEw=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=dzH6/inMzQFjY580H6hECNoWAYmuCpUrRWIQJE6DkFpS+TWYDyZ0hnuF9uCwXw8H1sHTGTZDhPMHX1/paNYV1RJW0H8A3yQcOI2HH13yd7jlPlcJi86/ir9EDCK26+ZoQVjnR3Rdtvh9MDrSdqpLAVKMlzeCO22KuJskpH7Wrtk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by NelsondeMBP.localdomain (Postfix, from userid 501) id 80E4E16695C1; Mon, 29 Jan 2024 21:17:42 +0800 (CST) From: Nelson Chu To: binutils@sourceware.org, kito.cheng@sifive.com, jim.wilson.gcc@gmail.com, palmer@rivosinc.com, andrew@sifive.com Cc: nelson.rivosinc.com@NelsondeMBP.localdomain, Nelson Chu Subject: [PATCH] RISC-V: Don't generate branch/jump relocation if symbol is local when no-relax. Date: Mon, 29 Jan 2024 21:17:41 +0800 Message-Id: <20240129131741.48824-1-nelson@rivosinc.com> X-Mailer: git-send-email 2.39.3 (Apple Git-145) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KHOP_HELO_FCRDNS,NO_DNS_FOR_FROM,RCVD_IN_PBL,RCVD_IN_SORBS_DUL,RDNS_DYNAMIC,SPF_HELO_NONE,SPF_NONE,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: Refer to commit, dff565fcca8137954d6ad571ef39f6aec5c0429c. Theoretically, assembler don't need to generate the pc-relative relocation and the refered local .L symbol when relaxation is disabled. The above commit improved the pcrel_hi/pcrel_lo relocations, and this commit improves branch and jump relocations. Passed the gcc/binutils regressions of riscv-gnu-toolchain. gas/ * config/tc-riscv.c (md_apply_fix): Raise fixP->fx_done for all branch and jump relocations when -mno-relax. --- gas/config/tc-riscv.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index a4161420128..cbead954f09 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -4390,6 +4390,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) bfd_vma target = S_GET_VALUE (fixP->fx_addsy) + *valP; bfd_vma delta = target - md_pcrel_from (fixP); bfd_putl32 (bfd_getl32 (buf) | ENCODE_JTYPE_IMM (delta), buf); + if (!riscv_opts.relax && S_IS_LOCAL (fixP->fx_addsy)) + fixP->fx_done = 1; } break; @@ -4400,6 +4402,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) bfd_vma target = S_GET_VALUE (fixP->fx_addsy) + *valP; bfd_vma delta = target - md_pcrel_from (fixP); bfd_putl32 (bfd_getl32 (buf) | ENCODE_BTYPE_IMM (delta), buf); + if (!riscv_opts.relax && S_IS_LOCAL (fixP->fx_addsy)) + fixP->fx_done = 1; } break; @@ -4410,6 +4414,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) bfd_vma target = S_GET_VALUE (fixP->fx_addsy) + *valP; bfd_vma delta = target - md_pcrel_from (fixP); bfd_putl16 (bfd_getl16 (buf) | ENCODE_CBTYPE_IMM (delta), buf); + if (!riscv_opts.relax && S_IS_LOCAL (fixP->fx_addsy)) + fixP->fx_done = 1; } break; @@ -4420,6 +4426,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) bfd_vma target = S_GET_VALUE (fixP->fx_addsy) + *valP; bfd_vma delta = target - md_pcrel_from (fixP); bfd_putl16 (bfd_getl16 (buf) | ENCODE_CJTYPE_IMM (delta), buf); + if (!riscv_opts.relax && S_IS_LOCAL (fixP->fx_addsy)) + fixP->fx_done = 1; } break; -- 2.39.3 (Apple Git-145)