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 C1E00385B524 for ; Thu, 14 Dec 2023 02:58:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C1E00385B524 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 C1E00385B524 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=1702522743; cv=none; b=Fwp9mvWyWzy9GdMPdidicgVrX+aFXjdlJuvPDJdR3k1IA9SmKeVTtN/Z63kTfMbyBn9m9OSfc774mVyxXFzncEOESfLmrGcu1J6FDflGmKHMYkMdQBWcp+cT/5QRY+SCxLWYR2O1ph8SktbTTN10jGeSxP0WrVqK21d9sQbenxo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702522743; c=relaxed/simple; bh=C+mJBGoqhCr9mHHi3G7/O9yZt8rED7S1YamDnztR7cg=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=NLt5+Zem1wz4Yd96V2M3NFao1/hijqkCfdP1xx/RPJAHR5ZXwAOgG9rBzvobSV9MtSs4BkKr/pmiy3DTeTcZiytOcLlO+zaYxxxyweq0zImC5Nj6tiuqWIkNKava+RGkxspPbBvEgqy595qrSDZsBT5mWcSF78zCN8AnxS6WcvI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.2.6.5]) by gateway (Coremail) with SMTP id _____8CxRPBvb3plAecAAA--.5205S3; Thu, 14 Dec 2023 10:58:55 +0800 (CST) Received: from 5.5.5 (unknown [10.2.6.5]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cx3+Fub3plUocDAA--.20789S4; Thu, 14 Dec 2023 10:58:54 +0800 (CST) From: Lulu Cai To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, mengqinggang@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn, Lulu Cai Subject: [PATCH v3 5/5] LoongArch: Add testsuit for DESC and tls transition and tls relaxation. Date: Thu, 14 Dec 2023 10:58:52 +0800 Message-Id: <20231214025852.1657496-1-cailulu@loongson.cn> X-Mailer: git-send-email 2.39.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:AQAAf8Cx3+Fub3plUocDAA--.20789S4 X-CM-SenderInfo: xfdlz3tox6z05rqj20fqof0/1tbiAQAFB2V6Zi0BKgAAs8 X-Coremail-Antispam: 1Uk129KBj9fXoW3Zry5XrW7AF45XryfGF1ktFc_yoW8XF48Wo Z5AFyagan7CFW2yr13trWrXr9FgrWxCF4fJr9xuw17Aa1jg345GasFkw1rZws3Xrykt3Z8 ua4DG34DZa4xJr1kl-sFpf9Il3svdjkaLaAFLSUrUUUU8b8apTn2vfkv8UJUUUU8wcxFpf 9Il3svdxBIdaVrn0xqx4xG64xvF2IEw4CE5I8CrVC2j2Jv73VFW2AGmfu7bjvjm3AaLaJ3 UjIYCTnIWjp_UUUY97kC6x804xWl14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI 8IcIk0rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xG Y2AK021l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14 v26F4j6r4UJwA2z4x0Y4vEx4A2jsIE14v26r4UJVWxJr1l84ACjcxK6I8E87Iv6xkF7I0E 14v26r4UJVWxJr1ln4kS14v26r1Y6r17M2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6x kI12xvs2x26I8E6xACxx1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v2 6rWY6Fy7McIj6I8E87Iv67AKxVWxJVW8Jr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48Icx kI7VAKI48JMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMxCIbckI1I0E 14v26r1Y6r17MI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4 CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26ryj6F1U MIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF 4lIxAIcVC2z280aVAFwI0_Cr0_Gr1UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBI daVFxhVjvjDU0xZFpf9x07jF_M-UUUUU= X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,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: --- gas/testsuite/gas/loongarch/tlsdesc_32.d | 28 ++++++++ gas/testsuite/gas/loongarch/tlsdesc_32.s | 12 ++++ gas/testsuite/gas/loongarch/tlsdesc_64.d | 28 ++++++++ gas/testsuite/gas/loongarch/tlsdesc_64.s | 12 ++++ .../gas/loongarch/tlsdesc_large_abs.d | 21 ++++++ .../gas/loongarch/tlsdesc_large_abs.s | 9 +++ .../gas/loongarch/tlsdesc_large_pc.d | 22 +++++++ .../gas/loongarch/tlsdesc_large_pc.s | 13 ++++ ld/testsuite/ld-loongarch-elf/desc-ie.d | 17 +++++ ld/testsuite/ld-loongarch-elf/desc-ie.s | 18 +++++ ld/testsuite/ld-loongarch-elf/desc-le.d | 15 +++++ ld/testsuite/ld-loongarch-elf/desc-le.s | 14 ++++ ld/testsuite/ld-loongarch-elf/ie-le.d | 13 ++++ ld/testsuite/ld-loongarch-elf/ie-le.s | 11 ++++ .../ld-loongarch-elf/ld-loongarch-elf.exp | 7 ++ ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d | 57 ++++++++++++++++ ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s | 66 +++++++++++++++++++ 17 files changed, 363 insertions(+) create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_32.d create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_32.s create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_64.d create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_64.s create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_abs.d create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_abs.s create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_pc.d create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_pc.s create mode 100644 ld/testsuite/ld-loongarch-elf/desc-ie.d create mode 100644 ld/testsuite/ld-loongarch-elf/desc-ie.s create mode 100644 ld/testsuite/ld-loongarch-elf/desc-le.d create mode 100644 ld/testsuite/ld-loongarch-elf/desc-le.s create mode 100644 ld/testsuite/ld-loongarch-elf/ie-le.d create mode 100644 ld/testsuite/ld-loongarch-elf/ie-le.s create mode 100644 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d create mode 100644 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s diff --git a/gas/testsuite/gas/loongarch/tlsdesc_32.d b/gas/testsuite/gas/loongarch/tlsdesc_32.d new file mode 100644 index 00000000000..d621fcd41ab --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_32.d @@ -0,0 +1,28 @@ +#as: +#objdump: -dr +#skip: loongarch64-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+ <.*>: + 0: 1a000004 pcalau12i \$a0, 0 + 0: R_LARCH_TLS_DESC_PC_HI20 var + 4: 02c00084 addi.w \$a0, \$a0, 0 + 4: R_LARCH_TLS_DESC_ADD_PC_LO12 var + 8: 28c00081 ld.w \$ra, \$a0, 0 + 8: R_LARCH_TLS_DESC_LD var + c: 4c000021 jirl \$ra, \$ra, 0 + c: R_LARCH_TLS_DESC_CALL var + 10: 1a000004 pcalau12i \$a0, 0 + 10: R_LARCH_TLS_DESC_PC_HI20 var + 10: R_LARCH_RELAX \*ABS\* + 14: 02c00084 addi.w \$a0, \$a0, 0 + 14: R_LARCH_TLS_DESC_ADD_PC_LO12 var + 14: R_LARCH_RELAX \*ABS\* + 18: 28c00081 ld.w \$ra, \$a0, 0 + 18: R_LARCH_TLS_DESC_LD var + 1c: 4c000021 jirl \$ra, \$ra, 0 + 1c: R_LARCH_TLS_DESC_CALL var diff --git a/gas/testsuite/gas/loongarch/tlsdesc_32.s b/gas/testsuite/gas/loongarch/tlsdesc_32.s new file mode 100644 index 00000000000..e0b51330a77 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_32.s @@ -0,0 +1,12 @@ +.L1: + # R_LARCH_TLSDESC_HI20 var + pcalau12i $a0,%desc_pc_hi20(var) + # R_LARCH_TLSDESC_ADD_PC_LO12 var + addi.w $a0,$a0,%desc_add_pc_lo12(var) + # R_LARCH_TLSDESC_LD var + ld.w $ra,$a0,%desc_ld(var) + # R_LARCH_TLSDESC_CALL var + jirl $ra,$ra,%desc_call(var) + + # test macro, pcalau12i + addi.w => pcaddi + la.tls.desc $a0,var diff --git a/gas/testsuite/gas/loongarch/tlsdesc_64.d b/gas/testsuite/gas/loongarch/tlsdesc_64.d new file mode 100644 index 00000000000..f907605c0a1 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_64.d @@ -0,0 +1,28 @@ +#as: +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+ <.*>: + 0: 1a000004 pcalau12i \$a0, 0 + 0: R_LARCH_TLS_DESC_PC_HI20 var + 4: 02c00084 addi.d \$a0, \$a0, 0 + 4: R_LARCH_TLS_DESC_ADD_PC_LO12 var + 8: 28c00081 ld.d \$ra, \$a0, 0 + 8: R_LARCH_TLS_DESC_LD var + c: 4c000021 jirl \$ra, \$ra, 0 + c: R_LARCH_TLS_DESC_CALL var + 10: 1a000004 pcalau12i \$a0, 0 + 10: R_LARCH_TLS_DESC_PC_HI20 var + 10: R_LARCH_RELAX \*ABS\* + 14: 02c00084 addi.d \$a0, \$a0, 0 + 14: R_LARCH_TLS_DESC_ADD_PC_LO12 var + 14: R_LARCH_RELAX \*ABS\* + 18: 28c00081 ld.d \$ra, \$a0, 0 + 18: R_LARCH_TLS_DESC_LD var + 1c: 4c000021 jirl \$ra, \$ra, 0 + 1c: R_LARCH_TLS_DESC_CALL var diff --git a/gas/testsuite/gas/loongarch/tlsdesc_64.s b/gas/testsuite/gas/loongarch/tlsdesc_64.s new file mode 100644 index 00000000000..6d16c52eb96 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_64.s @@ -0,0 +1,12 @@ +.L1: + # R_LARCH_TLSDESC_HI20 var + pcalau12i $a0,%desc_pc_hi20(var) + # R_LARCH_TLSDESC_ADD_PC_LO12 var + addi.d $a0,$a0,%desc_add_pc_lo12(var) + # R_LARCH_TLSDESC_LD var + ld.d $ra,$a0,%desc_ld(var) + # R_LARCH_TLSDESC_CALL var + jirl $ra,$ra,%desc_call(var) + + # test macro, pcalau12i + addi.d => pcaddi + la.tls.desc $a0,var diff --git a/gas/testsuite/gas/loongarch/tlsdesc_large_abs.d b/gas/testsuite/gas/loongarch/tlsdesc_large_abs.d new file mode 100644 index 00000000000..41bb1833e0e --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_large_abs.d @@ -0,0 +1,21 @@ +#as: +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+ <.*>: + 0: 14000004 lu12i.w \$a0, 0 + 0: R_LARCH_TLS_DESC_HI20 var + 4: 03800084 ori \$a0, \$a0, 0x0 + 4: R_LARCH_TLS_DESC_LO12 var + 8: 16000004 lu32i.d \$a0, 0 + 8: R_LARCH_TLS_DESC64_LO20 var + c: 03000084 lu52i.d \$a0, \$a0, 0 + c: R_LARCH_TLS_DESC64_HI12 var + 10: 28c00081 ld.d \$ra, \$a0, 0 + 14: 4c000021 jirl \$ra, \$ra, 0 + 14: R_LARCH_TLS_DESC_CALL var diff --git a/gas/testsuite/gas/loongarch/tlsdesc_large_abs.s b/gas/testsuite/gas/loongarch/tlsdesc_large_abs.s new file mode 100644 index 00000000000..01a374cf983 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_large_abs.s @@ -0,0 +1,9 @@ +.L1: + .global var + #TLSDESC large abs + lu12i.w $a0,%desc_hi20(var) + ori $a0,$a0,%desc_lo12(var) + lu32i.d $a0,%desc64_lo20(var) + lu52i.d $a0,$a0,%desc64_hi12(var) + ld.d $ra,$a0,0 + jirl $ra,$ra,%desc_call(var) diff --git a/gas/testsuite/gas/loongarch/tlsdesc_large_pc.d b/gas/testsuite/gas/loongarch/tlsdesc_large_pc.d new file mode 100644 index 00000000000..751847647f3 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_large_pc.d @@ -0,0 +1,22 @@ +#as: +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+ <.*>: + 0: 1a000004 pcalau12i \$a0, 0 + 0: R_LARCH_TLS_DESC_PC_HI20 var + 4: 02c00005 li.d \$a1, 0 + 4: R_LARCH_TLS_DESC_ADD_PC_LO12 var + 8: 16000005 lu32i.d \$a1, 0 + 8: R_LARCH_TLS_DESC64_PC_LO20 var + c: 030000a5 lu52i.d \$a1, \$a1, 0 + c: R_LARCH_TLS_DESC64_PC_HI12 var + 10: 00109484 add.d \$a0, \$a0, \$a1 + 14: 28c00081 ld.d \$ra, \$a0, 0 + 18: 4c000021 jirl \$ra, \$ra, 0 + 18: R_LARCH_TLS_DESC_CALL var diff --git a/gas/testsuite/gas/loongarch/tlsdesc_large_pc.s b/gas/testsuite/gas/loongarch/tlsdesc_large_pc.s new file mode 100644 index 00000000000..bf7e92864a0 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_large_pc.s @@ -0,0 +1,13 @@ +.L1: + # R_LARCH_TLS_DESC_PC_HI20 var + pcalau12i $a0,%desc_pc_hi20(var) + # R_LARCH_TLS_DESC_ADD_PC_LO12 + addi.d $a1,$zero,%desc_add_pc_lo12(var) + # R_LARCH_TLS_DESC64_PC_LO20 + lu32i.d $a1,%desc64_pc_lo20(var) + # R_LARCH_TLS_DESC64_PC_HI12 + lu52i.d $a1,$a1,%desc64_pc_hi12(var) + add.d $a0,$a0,$a1 + ld.d $ra,$a0,0 + # R_LARCH_TLS_DESC + jirl $ra,$ra,%desc_call(var) diff --git a/ld/testsuite/ld-loongarch-elf/desc-ie.d b/ld/testsuite/ld-loongarch-elf/desc-ie.d new file mode 100644 index 00000000000..66026e843a2 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/desc-ie.d @@ -0,0 +1,17 @@ +#as: +#ld: -shared -z norelro -e 0x0 +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+230 : + 230: 1a000084 pcalau12i \$a0, 4 + 234: 28cd6084 ld.d \$a0, \$a0, 856 + 238: 03400000 nop + 23c: 03400000 nop + 240: 1a000084 pcalau12i \$a0, 4 + 244: 28cd6081 ld.d \$ra, \$a0, 856 diff --git a/ld/testsuite/ld-loongarch-elf/desc-ie.s b/ld/testsuite/ld-loongarch-elf/desc-ie.s new file mode 100644 index 00000000000..39b23f29550 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/desc-ie.s @@ -0,0 +1,18 @@ + .global v1 + .section .tdata,"awT",@progbits +v1: + .word 1 + .text + .global fn1 + .type fn1,@function +fn1: + + # Use DESC and IE to access the same symbol, + # DESC will relax to IE. + pcalau12i $a0,%desc_pc_hi20(var) + addi.d $a0,$a0,%desc_add_pc_lo12(var) + ld.d $ra,$a0,%desc_ld(var) + jirl $ra,$ra,%desc_call(var) + + pcalau12i $a0,%ie_pc_hi20(var) + ld.d $ra,$a0,%ie_pc_lo12(var) diff --git a/ld/testsuite/ld-loongarch-elf/desc-le.d b/ld/testsuite/ld-loongarch-elf/desc-le.d new file mode 100644 index 00000000000..6a9c5eac296 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/desc-le.d @@ -0,0 +1,15 @@ +#as: +#ld: -z norelro -e 0x0 +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+1200000e8 : + 1200000e8: 14000004 lu12i.w \$a0, 0 + 1200000ec: 03800084 ori \$a0, \$a0, 0x0 + 1200000f0: 03400000 nop + 1200000f4: 03400000 nop diff --git a/ld/testsuite/ld-loongarch-elf/desc-le.s b/ld/testsuite/ld-loongarch-elf/desc-le.s new file mode 100644 index 00000000000..9c88c0311f6 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/desc-le.s @@ -0,0 +1,14 @@ + .global var + .section .tdata,"awT",@progbits +var: + .word 1 + .text + .global fn1 + .type fn1,@function +fn1: + + # DESC will relax to LE. + pcalau12i $a0,%desc_pc_hi20(var) + addi.d $a0,$a0,%desc_add_pc_lo12(var) + ld.d $ra,$a0,%desc_ld(var) + jirl $ra,$ra,%desc_call(var) diff --git a/ld/testsuite/ld-loongarch-elf/ie-le.d b/ld/testsuite/ld-loongarch-elf/ie-le.d new file mode 100644 index 00000000000..42694d7f9f0 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/ie-le.d @@ -0,0 +1,13 @@ +#as: +#ld: -z norelro -e 0x0 +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+1200000e8 : + 1200000e8: 14000004 lu12i.w \$a0, 0 + 1200000ec: 03800084 ori \$a0, \$a0, 0x0 diff --git a/ld/testsuite/ld-loongarch-elf/ie-le.s b/ld/testsuite/ld-loongarch-elf/ie-le.s new file mode 100644 index 00000000000..795c7ce49cf --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/ie-le.s @@ -0,0 +1,11 @@ + .data + .section .tdata,"awT",@progbits +var: + .word 1 + .text + .global fn1 + .type gn1,@function +fn1: + # expect IE to relax LE. + pcalau12i $a0,%ie_pc_hi20(var) + ld.d $a0,$a0,%ie_pc_lo12(var) diff --git a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp index b95cc53e597..98913ea1184 100644 --- a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp +++ b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp @@ -56,3 +56,10 @@ if [istarget "loongarch64-*-*"] { ] \ ] } + +if [istarget "loongarch64-*-*"] { + run_dump_test "desc-ie" + run_dump_test "desc-le" + run_dump_test "ie-le" + run_dump_test "tlsdesc-dso" +} diff --git a/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d new file mode 100644 index 00000000000..7fd9d7a6285 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d @@ -0,0 +1,57 @@ +#as: +#ld: -shared -z norelro +#objdump: -dr +#skip: loongarch32-*-* + +.*: file format .* + + +Disassembly of section .text: + +0+418 : + 418: 180214c4 pcaddi \$a0, 4262 + 41c: 1a000084 pcalau12i \$a0, 4 + 420: 28db0084 ld.d \$a0, \$a0, 1728 + 424: 180212a4 pcaddi \$a0, 4245 + 428: 18021304 pcaddi \$a0, 4248 + 42c: 28c00081 ld.d \$ra, \$a0, 0 + 430: 4c000021 jirl \$ra, \$ra, 0 + 434: 1a000084 pcalau12i \$a0, 4 + 438: 28d9c084 ld.d \$a0, \$a0, 1648 + 43c: 03400000 nop + 440: 03400000 nop + 444: 1a000084 pcalau12i \$a0, 4 + 448: 28d9c084 ld.d \$a0, \$a0, 1648 + 44c: 18021264 pcaddi \$a0, 4243 + 450: 18021244 pcaddi \$a0, 4242 + 454: 28c00081 ld.d \$ra, \$a0, 0 + 458: 4c000021 jirl \$ra, \$ra, 0 + 45c: 1a000084 pcalau12i \$a0, 4 + 460: 28daa084 ld.d \$a0, \$a0, 1704 + +0+464 : + 464: 1a000084 pcalau12i \$a0, 4 + 468: 28d86084 ld.d \$a0, \$a0, 1560 + 46c: 18020ce4 pcaddi \$a0, 4199 + 470: 18020e04 pcaddi \$a0, 4208 + 474: 28c00081 ld.d \$ra, \$a0, 0 + 478: 4c000021 jirl \$ra, \$ra, 0 + 47c: 18020d24 pcaddi \$a0, 4201 + 480: 1a000084 pcalau12i \$a0, 4 + 484: 28d90084 ld.d \$a0, \$a0, 1600 + 488: 03400000 nop + 48c: 03400000 nop + 490: 1a000084 pcalau12i \$a0, 4 + 494: 28d90084 ld.d \$a0, \$a0, 1600 + 498: 18020d84 pcaddi \$a0, 4204 + 49c: 28c00081 ld.d \$ra, \$a0, 0 + 4a0: 4c000021 jirl \$ra, \$ra, 0 + 4a4: 18020d24 pcaddi \$a0, 4201 + 4a8: 1a000084 pcalau12i \$a0, 4 + 4ac: 28d96084 ld.d \$a0, \$a0, 1624 + +0+4b0 : + 4b0: 1a000084 pcalau12i \$a0, 4 + 4b4: 02d98084 addi.d \$a0, \$a0, 1632 + 4b8: 28c00081 ld.d \$ra, \$a0, 0 + 4bc: 4c000021 jirl \$ra, \$ra, 0 diff --git a/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s new file mode 100644 index 00000000000..41bbe5cf8b4 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s @@ -0,0 +1,66 @@ + .data + .section .tdata,"awT",@progbits + .global gl1, gl2, gl3, gl4 +gl1: .dword 1 +gl2: .dword 2 +gl3: .dword 3 +gl4: .dword 4 +lo1: .dword 10 +lo2: .dword 20 +lo3: .dword 30 +lo4: .dword 40 + .text +# Access global symbol +fun_gl1: + # GD + IE + # GD: pcaddi + addi.d => pcaddi + la.tls.gd $a0, gl1 + la.tls.ie $a0, gl1 + + # GD + DESC + # GD: pcaddi + addi.d => pcaddi + la.tls.gd $a0, gl2 + # DESC: pcaddi + addi.d => pcaddi + la.tls.desc $a0, gl2 + + # DESC + IE + # DESC -> IE + la.tls.desc $a0, gl3 + la.tls.ie $a0, gl3 + + # GD + DESC + IE + # GD: pcaddi + addi.d => pcaddi + la.tls.gd $a0, gl4 + # DESC: pcaddi + addi.d => pcaddi + la.tls.desc $a0, gl4 + la.tls.ie $a0, gl4 + +# Access local symbol +fun_lo: + # IE + GD + la.tls.ie $a0, lo1 + # GD: pcaddi + addi.d => pcaddi + la.tls.gd $a0, lo1 + + # DESC + GD + # DESC: pcaddi + addi.d => pcaddi + la.tls.desc $a0, lo2 + # GD: pcaddi + addi.d => pcaddi + la.tls.gd $a0, lo2 + + # DESC + IE + # DESC: DESC -> IE + la.tls.desc $a0, lo3 + la.tls.ie $a0, lo3 + + # DESC + GD + IE + # DESC: pcaddi + addi.d => pcaddi + la.tls.desc $a0, lo4 + # GD: pcaddi + addi.d => pcaddi + la.tls.gd $a0, lo4 + la.tls.ie $a0, lo4 + +# Access external undef symbol +fun_external: + # UND symbol do not relax. + la.tls.desc $a0, sH1 -- 2.36.0