From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id 35F29385842F for ; Fri, 26 Jan 2024 08:20:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 35F29385842F Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 35F29385842F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706257213; cv=none; b=uKAjwrlM7Y7bL4uKWWLYvfyIKfO5ZuXbLTOyp5SNwBzgdZKkiBknU9yV5nOMUJL0lmXuaAkefQKVEzbbv/yX5pICMKhu1eYN4LlyhpHLH8qMF0smZ9kflznlGSBkZkYcCf/jEbiS+IRNFm0d50fv52KHrpe0TuIj3VXPwttIuRw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706257213; c=relaxed/simple; bh=/KYDIyaVsB8LRqrjYZUrD38K//QBNyEpz6AP88PRXUs=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=Oz2+8JW0B1cr5eAgocMLt1TkP/RTQQtAziS0m7k5b6dHVybWliuPS4Jf1yPYjHWVGY9eq9oMuri9bvwa8SCN+e8+RdZHv6DeL8UAOinhgJC+0FNP6SIfenLaBpvmD3W37PokphDEILkDm5DcOfqjy8shaY3orqVBoUHAcY+x0yY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1706257209; bh=/KYDIyaVsB8LRqrjYZUrD38K//QBNyEpz6AP88PRXUs=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=bFIqh+d9V7+Ulznbga3CtvolpX0GZDbT4iF/EIqGHgp62xxIGW+ojaWTT002e47wr H/kSEPkaujKOt9Ger643YNmRK2Q9D/MXO2p23T+nyIJ6Y1mdOwwC8QIqPJT2P8mump NjtcDZKRVzm8cmcDBCvSEIdjHxVyTpE+A+w5Pz5c= Received: from [IPv6:2408:8471:1001:36b4:2388:85aa:5ecd:df12] (unknown [IPv6:2408:8471:1001:36b4:2388:85aa:5ecd:df12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 41DFA66BD6; Fri, 26 Jan 2024 03:20:05 -0500 (EST) Message-ID: Subject: Re: [PATCH] LoongArch: Disallow TLS transition when a section contains TLS_IE64 or TLS_DESC64 reloc From: Xi Ruoyao To: mengqinggang , binutils@sourceware.org Cc: Nick Clifton Date: Fri, 26 Jan 2024 16:19:58 +0800 In-Reply-To: References: <20240125134238.174841-1-xry111@xry111.site> <8ffdf1ab-7727-10d9-7299-698f364479b9@loongson.cn> Autocrypt: addr=xry111@xry111.site; prefer-encrypt=mutual; keydata=mDMEYnkdPhYJKwYBBAHaRw8BAQdAsY+HvJs3EVKpwIu2gN89cQT/pnrbQtlvd6Yfq7egugi0HlhpIFJ1b3lhbyA8eHJ5MTExQHhyeTExMS5zaXRlPoiTBBMWCgA7FiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQrKrSDhnnEOPHFgD8D9vUToTd1MF5bng9uPJq5y3DfpcxDp+LD3joA3U2TmwA/jZtN9xLH7CGDHeClKZK/ZYELotWfJsqRcthOIGjsdAPuDgEYnkdPhIKKwYBBAGXVQEFAQEHQG+HnNiPZseiBkzYBHwq/nN638o0NPwgYwH70wlKMZhRAwEIB4h4BBgWCgAgFiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwwACgkQrKrSDhnnEOPjXgD/euD64cxwqDIqckUaisT3VCst11RcnO5iRHm6meNIwj0BALLmWplyi7beKrOlqKfuZtCLbiAPywGfCNg8LOTt4iMD Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.3 MIME-Version: 1.0 X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,LIKELY_SPAM_FROM,SPF_HELO_PASS,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: On Fri, 2024-01-26 at 16:12 +0800, Xi Ruoyao wrote: > On Fri, 2024-01-26 at 09:43 +0800, mengqinggang wrote: > > Hi, > >=20 > > 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 =3D 0; int only_need_pcrel =3D 0; =20 - r_type =3D loongarch_tls_transition (info, r_type, h, abfd, r_symndx= ); + if (rel + 1 !=3D relocs + sec->reloc_count + && ELFNN_R_TYPE (rel[1].r_info) =3D=3D R_LARCH_RELAX) + r_type =3D 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, str= uct bfd_link_info *info, =20 BFD_ASSERT (!resolved_local || defined_local); =20 - relaxed_r_type =3D loongarch_tls_transition (info, r_type, h, input_= bfd, r_symndx); + relaxed_r_type =3D r_type; + if (rel + 1 !=3D relend + && ELFNN_R_TYPE (rel[1].r_info) =3D=3D R_LARCH_RELAX) + relaxed_r_type =3D loongarch_tls_transition (info, r_type, h, + input_bfd, r_symndx); + if (relaxed_r_type !=3D r_type) { howto =3D 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. >=20 > But with master branch at e14f7abaf81d5d0aa7898570024286de8c188817: >=20 > $ cat t.s > .globl _start > _start: > =C2=A0 la.tls.ie $a0, $a1, foo >=20 > .section .tdata > foo: .word 114514 > $ gas/as-new t.s -o t.o > $ ld/ld-new t.o > [1]=C2=A0=C2=A0=C2=A0 7202 segmentation fault (core dumped)=C2=A0 ld/ld-n= ew t.o >=20 >=20 --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University