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 7F9AC3858001 for ; Fri, 26 Jan 2024 08:40:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F9AC3858001 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 7F9AC3858001 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=1706258435; cv=none; b=nSKFZWZSzIYof///wcOmHa3AT2kJfGeLUgKutHBZpy/GlhltenaB/4JDzrDuP7zeVku1YGtZnyNlIvx1G2oTvmEFnCQE3//61XKWeNbrJIdNduTVUMkDtDj0FctDJQwbu4Z+hl7P0Zw6LuHVjd4KoWcvUszyf7NY8ZHOy/HGek0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706258435; c=relaxed/simple; bh=ykW7Rai2dFnWFhaK9eQXJ+P2JvjFTzlMML6F08a5xwo=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=ZYB8FKTUOVFDwgIvXJyJGvfzWO08a/bA4hbLtDzcQo5/FS04NIu4ErKvzQps9gxhdnyiUtd2jqHoeQ5qkSvZV36PuP7eQsP138crD2IeagWnMV4zJvqyifDH0ljhqLEtLGDMJv3vtEF95SJJOW9Z8yzbMZwnT6jTatCjlJFpYFw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.20.4.171]) by gateway (Coremail) with SMTP id _____8BxC+n1b7NlhCwGAA--.2182S3; Fri, 26 Jan 2024 16:40:22 +0800 (CST) Received: from [10.20.4.171] (unknown [10.20.4.171]) by localhost.localdomain (Coremail) with SMTP id AQAAf8AxHs_zb7NlGbgbAA--.53944S3; Fri, 26 Jan 2024 16:40:20 +0800 (CST) Subject: Re: [PATCH] LoongArch: Disallow TLS transition when a section contains TLS_IE64 or TLS_DESC64 reloc To: Xi Ruoyao , binutils@sourceware.org Cc: Nick Clifton References: <20240125134238.174841-1-xry111@xry111.site> <8ffdf1ab-7727-10d9-7299-698f364479b9@loongson.cn> From: mengqinggang Message-ID: Date: Fri, 26 Jan 2024 16:40:19 +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: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf8AxHs_zb7NlGbgbAA--.53944S3 X-CM-SenderInfo: 5phqw15lqjwttqj6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7CF43Jr18Kry8try8Xr4xuFX_yoW8uryrpr W3Zan8ta10yw4fuFyqva45Zrn0qa9rGrW2gF98tr1SkFsrXr92grsxArWYvF1qy3W8WrnF vrWFg34Uu3W8AFgCm3ZEXasCq-sJn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUU9Sb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1Y6r17McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07 AlzVAYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwCFI7km07C2 67AKxVWUXVWUAwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI 8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWU CwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r 1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBI daVFxhVjvjDU0xZFpf9x07UNvtZUUUUU= X-Spam-Status: No, score=-14.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,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: We will send a patch to fix this and some other questions today. 在 2024/1/26 下午4:19, Xi Ruoyao 写道: > On Fri, 2024-01-26 at 16:12 +0800, Xi Ruoyao wrote: >> On Fri, 2024-01-26 at 09:43 +0800, mengqinggang wrote: >>> Hi, >>> >>> For TLS transition, we want to change to that the instructions that can be >>> converted must have a R_LARCH_RELAX relocation. > So we need something like > > diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c > index b62bb424644..63aa7e254b5 100644 > --- a/bfd/elfnn-loongarch.c > +++ b/bfd/elfnn-loongarch.c > @@ -818,7 +818,10 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, > int need_dynreloc = 0; > int only_need_pcrel = 0; > > - r_type = loongarch_tls_transition (info, r_type, h, abfd, r_symndx); > + if (rel + 1 != relocs + sec->reloc_count > + && ELFNN_R_TYPE (rel[1].r_info) == R_LARCH_RELAX) > + r_type = loongarch_tls_transition (info, r_type, h, abfd, r_symndx); > + > switch (r_type) > { > case R_LARCH_GOT_PC_HI20: > @@ -2789,7 +2792,12 @@ loongarch_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, > > BFD_ASSERT (!resolved_local || defined_local); > > - relaxed_r_type = loongarch_tls_transition (info, r_type, h, input_bfd, r_symndx); > + relaxed_r_type = r_type; > + if (rel + 1 != relend > + && ELFNN_R_TYPE (rel[1].r_info) == R_LARCH_RELAX) > + relaxed_r_type = loongarch_tls_transition (info, r_type, h, > + input_bfd, r_symndx); > + > if (relaxed_r_type != r_type) > { > howto = loongarch_elf_rtype_to_howto (input_bfd, relaxed_r_type); > > and this is missing in the master branch? > >>> After 32ee2b4b71c78d3dc0c0b1f87f25fe5df8786b71 commit, the gas not >>> emit R_LARCH_RELAX for two register macros. >> But with master branch at e14f7abaf81d5d0aa7898570024286de8c188817: >> >> $ cat t.s >> .globl _start >> _start: >>   la.tls.ie $a0, $a1, foo >> >> .section .tdata >> foo: .word 114514 >> $ gas/as-new t.s -o t.o >> $ ld/ld-new t.o >> [1]    7202 segmentation fault (core dumped)  ld/ld-new t.o >> >>