From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 8B2F53858D3C for ; Sun, 4 Feb 2024 06:18:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8B2F53858D3C 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 8B2F53858D3C 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=1707027531; cv=none; b=UH0G+zhelA1kNjZ4VTF0wVF3A88YE5rIKxM4nPMZhGT09JB0hhpxG8F7/CU1OZz17TEfGyI+Jqfks2lE3lzMfUwAPI812WNU9JHJPv5Yjva7ex5mC+d+K374Rko3ikqkwDaYfD7ge1rN69xehZtMCO2PEBXktKa38tamKoHEc6E= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707027531; c=relaxed/simple; bh=Xu80RzzCHQXCMx0YdguedRvcujT/smgoIj4jPRwuGV8=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=fTAbQ9xVXQVcebgWkiARabWCzRLD3FXvgzpGa29FRBw1Su8DlesbEget7k8KLAZT1+Qt1lQ7MKUiCujBZop6UJThNVPp/EaT4CpUHj9n0XybBy3XF2FIt4di+91SSWEMoOlOoIxnqHAwymqipuXMiYGs0kn6iMwYQz7Q38rJWjs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.20.4.171]) by gateway (Coremail) with SMTP id _____8CxF+hELL9l+YYKAA--.10396S3; Sun, 04 Feb 2024 14:18:45 +0800 (CST) Received: from [10.20.4.171] (unknown [10.20.4.171]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Dxfs1CLL9lODUvAA--.45493S3; Sun, 04 Feb 2024 14:18:42 +0800 (CST) Subject: Re: [PATCH] LoongArch: gas: Fix the types of symbols referred with %le_*_r in the symtab To: Xi Ruoyao , binutils@sourceware.org Cc: changjiachen@stu.xupt.edu.cn, Nick Clifton References: <20240202130057.84624-2-xry111@xry111.site> From: mengqinggang Message-ID: <547a5245-0d38-0e52-d13e-b1659f451d70@loongson.cn> Date: Sun, 4 Feb 2024 14:18:42 +0800 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20240202130057.84624-2-xry111@xry111.site> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf8Dxfs1CLL9lODUvAA--.45493S3 X-CM-SenderInfo: 5phqw15lqjwttqj6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoWxZFy5uFy7uw1xuw15Jry7urX_yoW5Aw45p3 4DuFyqkr4kC3W7tr9rK345ZF18Zws7GrWj9rySqryS9rs3Xry0yw1ktr9FqF42qa48Gw10 vFyruayUW3WUt3XCm3ZEXasCq-sJn29KB7ZKAUJUUUUr529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUBFb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2kKe7AKxVWUXVWUAwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07 AIYIkI8VC2zVCFFI0UMc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWU XVWUAwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI4 8JMxk0xIA0c2IEe2xFo4CEbIxvr21l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_ Jr0_Gr1l4IxYO2xFxVAFwI0_Jrv_JF1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8Gjc xK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2Ix0 cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8V AvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E 14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07jjwZcUUUUU= X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,MIME_CHARSET_FARAWAY,NICE_REPLY_A,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: Thank you very much, it has been applied to master and binutils 2.42 branch. ÔÚ 2024/2/2 ÏÂÎç9:00, Xi Ruoyao дµÀ: > When a symbol is referred with %le_{hi20,lo12,add}_r, it's definitely a > TLS symbol and we should set its type to TLS in the symtab. Otherwise > when building Perl with gcc-14 -flto, we get: > > /usr/bin/ld: PL_current_context: TLS definition in > ./miniperl.ltrans0.ltrans.o section .tbss mismatches non-TLS reference > in ./miniperl.ltrans1.ltrans.o > > A minimal reproducer: > > $ cat t1.s > .section .tbss > .globl x > x: .word 0 > $ cat t2.s > f: > lu12i.w $a0, %le_hi20_r(x) > add.d $a0, $a0, $tp, %le_add_r(x) > li.w $a1, 1 > st.w $a1, $a0, %le_lo12_r(x) > $ gas/as-new t1.s -o t1.o > $ gas/as-new t2.s -o t2.o > $ ld/ld-new t1.o t2.o > ld/ld-new: x: TLS definition in t1.o section .tbss mismatches > non-TLS reference in t2.o > > Unfortunately this was undetected before Binutils-2.42 release because > GCC < 14 does not use %le_*_r, and without LTO it's very rare to have a > TLS LE definition and its reference in two different translation units. > So this fix should be backported to Binutils-2.42 branch too. > > Signed-off-by: Xi Ruoyao > --- > gas/config/tc-loongarch.c | 3 +++ > gas/testsuite/gas/loongarch/tls_le_r_sym_type.d | 3 +++ > gas/testsuite/gas/loongarch/tls_le_r_sym_type.s | 6 ++++++ > 3 files changed, 12 insertions(+) > create mode 100644 gas/testsuite/gas/loongarch/tls_le_r_sym_type.d > create mode 100644 gas/testsuite/gas/loongarch/tls_le_r_sym_type.s > > diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c > index e0aff36bbbb..91f5f1d0681 100644 > --- a/gas/config/tc-loongarch.c > +++ b/gas/config/tc-loongarch.c > @@ -1340,6 +1340,9 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) > case BFD_RELOC_LARCH_TLS_DESC_LO12: > case BFD_RELOC_LARCH_TLS_DESC64_LO20: > case BFD_RELOC_LARCH_TLS_DESC64_HI12: > + case BFD_RELOC_LARCH_TLS_LE_ADD_R: > + case BFD_RELOC_LARCH_TLS_LE_HI20_R: > + case BFD_RELOC_LARCH_TLS_LE_LO12_R: > /* Add tls lo (got_lo reloc type). */ > if (fixP->fx_addsy == NULL) > as_bad_where (fixP->fx_file, fixP->fx_line, > diff --git a/gas/testsuite/gas/loongarch/tls_le_r_sym_type.d b/gas/testsuite/gas/loongarch/tls_le_r_sym_type.d > new file mode 100644 > index 00000000000..43bcd789769 > --- /dev/null > +++ b/gas/testsuite/gas/loongarch/tls_le_r_sym_type.d > @@ -0,0 +1,3 @@ > +#readelf: -s > +#... > +.*TLS[ \t]+GLOBAL[ \t]+DEFAULT[ \t]+UND[ \t]+x > diff --git a/gas/testsuite/gas/loongarch/tls_le_r_sym_type.s b/gas/testsuite/gas/loongarch/tls_le_r_sym_type.s > new file mode 100644 > index 00000000000..3ccedae921f > --- /dev/null > +++ b/gas/testsuite/gas/loongarch/tls_le_r_sym_type.s > @@ -0,0 +1,6 @@ > +f: > + lu12i.w $a0, %le_hi20_r(x) > + add.d $a0, $a0, $tp, %le_add_r(x) > + li.w $a1, 1 > + st.w $a1, $a0, %le_lo12_r(x) > + ret