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 8C20C3858D1E for ; Tue, 16 Jan 2024 06:48:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8C20C3858D1E 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 8C20C3858D1E 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=1705387731; cv=none; b=Ic9K8TARASxUPB+u47WkopIDwtogjFpt38BHvgiE1Ly9aX2G7XvEQfl8cxZLGD+ZsRqadoBZVF7lPgLnkcG3a0wpFKcmv5S1KOPPq2W4CbTjnD+U0BAoYok2v141/dVz4e+uJbHbg4YYVkH/Rrk2heqZOUl0laY5QXJSPcJrEBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705387731; c=relaxed/simple; bh=KQ9YkstAgyYAcl9xHvL3wdljeCrldTDHCLkOicwTZYQ=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=BGpYoPnuFrEoyh47TNL/aFUi1JgC6f5BPw6UA0nNb6Qx65y74lpx7PBeSHM6YbjwZcjK/TnEgQ6OwNN6k3B1deLzLROUPDof+THGMkFFXiahYZAqneKo1X2VCNhA4bNIEjf3IJAWLrUKSVk5fibG+jHVycXTQkh5inD0iFM79c8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1705387727; bh=KQ9YkstAgyYAcl9xHvL3wdljeCrldTDHCLkOicwTZYQ=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=c23x74XnpzpGme/mrQ3y9iQkUKNTdQTJleHxCbrNqoQpGh6vnzOtqWp3LGyWmaWnr 70WvhwChuFuISlhYgeU5oos/cEljlogw3r5+BgHqJEr0oDnggeNyQUOQwIol//Bzdn +d8LR77y7vWGKzbedIbazN0wGmS3pPWw0upYGypk= Received: from [127.0.0.1] (unknown [IPv6:2001:470:683e::1]) (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 E271C6706E; Tue, 16 Jan 2024 01:48:44 -0500 (EST) Message-ID: Subject: Re: [PATCH] LoongArch: Adapt R_LARCH_{PCALA,GOT,TLS_IE,TLS_DESC}64_* handling per psABI v2.30 From: Xi Ruoyao To: mengqinggang , binutils@sourceware.org Cc: liuzhensong@loongson.cn, i.swmail@xen0n.name, maskray@google.com, hejinyang@loongson.cn, cailulu@loongson.cn, chenglulu@loongson.cn, xuchenghua@loongson.cn, luweining@loongson.cn Date: Tue, 16 Jan 2024 14:48:43 +0800 In-Reply-To: <66b241f8-df13-ef9a-aa8d-ae2acdc1f8f0@loongson.cn> References: <20240115124417.102655-2-xry111@xry111.site> <66b241f8-df13-ef9a-aa8d-ae2acdc1f8f0@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=-6.0 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_NUMSUBJECT,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 Tue, 2024-01-16 at 14:38 +0800, mengqinggang wrote: >=20 > =E5=9C=A8 2024/1/15 =E4=B8=8B=E5=8D=888:44, Xi Ruoyao =E5=86=99=E9=81=93: > > In LoongArch psABI v2.30, an offset (-8 for LO20 and -12 for HI12) > > should be applied on PC for these reloc types to avoid wrong relocation > > when the instruction sequence crosses a page boundary. > >=20 > > The lld linker has already adapted the change.=C2=A0 Make it for the bf= d > > linker too. > >=20 > > Link: https://github.com/loongson/la-abi-specs/releases/v2.30 > > Link: https://github.com/loongson-community/discussions/issues/17 > > Link: https://github.com/llvm/llvm-project/pull/73387 > > Signed-off-by: Xi Ruoyao > > --- > > =C2=A0 bfd/elfnn-loongarch.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 | 29 +++++++++++-------- > > =C2=A0 .../ld-loongarch-elf/ld-loongarch-elf.exp=C2=A0=C2=A0=C2=A0=C2= =A0 |=C2=A0 1 + > > =C2=A0 ld/testsuite/ld-loongarch-elf/pcala64.d=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 | 15 ++++++++++ > > =C2=A0 ld/testsuite/ld-loongarch-elf/pcala64.s=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 |=C2=A0 8 +++++ > > =C2=A0 4 files changed, 41 insertions(+), 12 deletions(-) > > =C2=A0 create mode 100644 ld/testsuite/ld-loongarch-elf/pcala64.d > > =C2=A0 create mode 100644 ld/testsuite/ld-loongarch-elf/pcala64.s > >=20 > > diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c > > index 3858a3179fd..e4f4da7a0dc 100644 > > --- a/bfd/elfnn-loongarch.c > > +++ b/bfd/elfnn-loongarch.c > > @@ -3544,14 +3544,16 @@ loongarch_elf_relocate_section (bfd *output_bfd= , struct bfd_link_info *info, > > =C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } > > =C2=A0=C2=A0 =C2=A0 break; > > =C2=A0=20 > > - case R_LARCH_PCALA64_LO20: > > =C2=A0=C2=A0 case R_LARCH_PCALA64_HI12: > > + =C2=A0 pc -=3D 4; > > + =C2=A0 /* Fall through.=C2=A0 */ > > + case R_LARCH_PCALA64_LO20: > > =C2=A0=C2=A0 =C2=A0 if (h && h->plt.offset !=3D MINUS_ONE) > > =C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 relocation =3D sec_addr (plt) + h->plt.= offset; > > =C2=A0=C2=A0 =C2=A0 else > > =C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 relocation +=3D rel->r_addend; > > =C2=A0=20 > > - =C2=A0 RELOCATE_CALC_PC64_HI32 (relocation, pc); > > + =C2=A0 RELOCATE_CALC_PC64_HI32 (relocation, pc - 8); >=20 >=20 > The 'pc - 8' triggered an error because the pc parameter is not enclosed= =20 > in parentheses in macro definition. >=20 > /home/mengqinggang/toolchains/src/binutils-gdb/bfd/elfnn-loongarch.c:3546= :51:=20 > error: suggest parentheses around '-' in operand of '&'=20 > [-Werror=3Dparentheses] > =C2=A0=C2=A03546 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 RELOCATE_CALC_PC64_HI32 (relocation, pc - 8); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 ~~~^~~ > /home/mengqinggang/toolchains/src/binutils-gdb/bfd/elfnn-loongarch.c:2532= :22:=20 > note: in definition of macro 'RELOCATE_CALC_PC64_HI32' > =C2=A0=C2=A02532 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - (pc & ~(bfd_vma)0x= fff);=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 \ > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ^~ Interesting, why didn't I see this error... And in this case it happens to work because - has a higher precedence. But I'll add parentheses in V2 anyway. /* snip */ > > diff --git a/ld/testsuite/ld-loongarch-elf/pcala64.d b/ld/testsuite/ld-= loongarch-elf/pcala64.d > > new file mode 100644 > > index 00000000000..6b1411577db > > --- /dev/null > > +++ b/ld/testsuite/ld-loongarch-elf/pcala64.d > > @@ -0,0 +1,15 @@ > > +#ld: -Ttext=3D0x180000ff8 -Tdata=3D0x1000000000 -shared >=20 >=20 > The test need to be disabled on loongarch*-elf target because -shared=20 > option is not supported on loongarch*-elf target. >=20 > It can be disabled by=C2=A0 adding a line "#skip: loongarch*-elf" after= =20 > "#objdump -d". I'll just remove the -shared option. I changed the function name to "_start" so it should work without -shared, but I forgot to actually remove -shared. --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University