From patchwork Fri Dec 1 09:04:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lulu Cai X-Patchwork-Id: 172328 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp982325vqy; Fri, 1 Dec 2023 01:06:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IFNlKikGErZb1dwDp4lkn93vial5thZYsqlnePnDlthtD5M2TK60mqHbzYj3DqpCeGqEHmb X-Received: by 2002:a05:622a:1b13:b0:423:a0a0:9709 with SMTP id bb19-20020a05622a1b1300b00423a0a09709mr25019662qtb.20.1701421568406; Fri, 01 Dec 2023 01:06:08 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701421568; cv=pass; d=google.com; s=arc-20160816; b=O7yt42wM1DlgIXFV1Qu+YchumfA3DrYlX2gHyFNYIoN1pwZFFzC7RHIlaUAKzmLQZY EvBDPygJtwYNA+5iYMmt8r7t+Jxkef5Eb8vQDIHSeheI+L2L4IqqMFDK3kcwxUIjuSx6 5u9Hhrp7ZrNFaNYCzEDFOSt9agzOSX5WBnQCIyN6E2/Iuaz954LkHTxcIdvS61yt381m 2S88jAgYLfJut38tA78wGL5OcQNC3N5caib+XeE4fsKPPDE1IAbXUP8Xs1i/KsnwfLDO rbjP62PHXW6ki28o24EqDrbWK2+AcbMDsdPuLf+nRyJES0HGV3L1wED1oP5WLehI8cQc irtQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to; bh=W4QCjSVhUOt2g6isHH/FGXPUgBNDbwQ5liZdSU7BtaM=; fh=FvlVQEmCpm5H8oBXQswexzCupeeQXnbssobXN+3R2Wg=; b=C25lTGGO5hQLnskAeb6QdWNzXkMp7ih4snl7nHrDlKznM28eI3pJhjP7zshyHfTCrn 9fcM4dpsqejDxcpIJclDeGpmlZLTMr5WXacOI7E/omUEHBATBtXRpdUSNbpj4iRQaO3d QN2TWsVLuGjn1oJu/FIQrhoF5hm5hIxE7OsUmKBQxM8K78ggBz7mbN3yMmoHcsJY0yYt ooe6OPMCf6E3D+1U1n2Z80WyFe9B8dXrisJc2s20+UkgVMfWet4wKMOqyq56msxqjlyA yCQQbKZmeg99dW/DHErpy4HohmJzZVO5qaVrnmIE6/406kkdEyfHgJsGoi4EqC9ccLdF rWrg== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id bv6-20020a05622a0a0600b00423efef3132si3141501qtb.105.2023.12.01.01.06.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 01:06:08 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3B4BB384F02C for ; Fri, 1 Dec 2023 09:05:59 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 4958E38618BE for ; Fri, 1 Dec 2023 09:04:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4958E38618BE 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 4958E38618BE 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=1701421485; cv=none; b=lo/iAO2aZdjNuVCgzUFbBFP2l6Auu2AVgzGqe4miGSgF0vQ9nNC8OlaFmuAcCEDqO/Ix+ZicB/LRe/cgopLbxjIGoXIf/1GtITUDzcKhWtOaRkb2bDIjIhIMlJ2TnY/+Uv35Z27hpgAxsXmazz4xh8iTlIPqriEoRYgcOpLoXv8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701421485; c=relaxed/simple; bh=chSx6L/FgSys1do5sJTe3SG58tjzKWn95WIX2bySZrQ=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=QGDv5OYz43V6hATPAQBFt25CiQ3GBiPY+bMcrUq0AFtZ0llF/rc/tnEI7r8QB4jMRuShlISgwyWRf/Sgt+BGe13OcBa4H716lv2sTfOi2497QwH/+6BLt4uuhvdJzsY6tLiBD9YZ6TcU8D5IFLr16bmsIWYm9GvIjtg3ECFDeCM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.2.6.5]) by gateway (Coremail) with SMTP id _____8DxVuijoWll8ig+AA--.23219S3; Fri, 01 Dec 2023 17:04:35 +0800 (CST) Received: from 5.5.5 (unknown [10.2.6.5]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxS9yaoWll53hRAA--.48257S8; Fri, 01 Dec 2023 17:04:33 +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 v1 4/4] LoongArch: Add testsuits for TLSDESC in gas and ld. Date: Fri, 1 Dec 2023 17:04:24 +0800 Message-Id: <20231201090424.854662-5-cailulu@loongson.cn> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20231201090424.854662-1-cailulu@loongson.cn> References: <20231201090424.854662-1-cailulu@loongson.cn> MIME-Version: 1.0 X-CM-TRANSID: AQAAf8DxS9yaoWll53hRAA--.48257S8 X-CM-SenderInfo: xfdlz3tox6z05rqj20fqof0/1tbiAQAMB2VpQqsHigAAsi X-Coremail-Antispam: 1Uk129KBj9fXoWfAFy5Kr17Cw4rXrWUtFy3KFX_yoW8tr45Co W8CFW2qan3GFZayry3Kr4UXr9rK34kWF1fAFZxWw18Aa1UKw1rGFnIkw4Fvrs2gF15J3Z5 u34UJrZrA34fGrn8l-sFpf9Il3svdjkaLaAFLSUrUUUUbb8apTn2vfkv8UJUUUU8wcxFpf 9Il3svdxBIdaVrn0xqx4xG64xvF2IEw4CE5I8CrVC2j2Jv73VFW2AGmfu7bjvjm3AaLaJ3 UjIYCTnIWjp_UUUYs7kC6x804xWl14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI 8IcIk0rVWrJVCq3wAFIxvE14AKwVWUXVWUAwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xG Y2AK021l84ACjcxK6xIIjxv20xvE14v26ryj6F1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14 v26r4j6F4UM28EF7xvwVC2z280aVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAF wI0_Gr1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI 0UMc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUtVWrXwAv7VC2z280 aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxAIw28Icx kI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMxCIbckI1I0E14v26r1Y6r17MI8I3I0E 5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtV W8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26ryj6F1UMIIF0xvE2Ix0cI8IcVCY 1x0267AKxVW8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI 0_Gr0_Cr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7I U8l38UUUUUU== X-Spam-Status: No, score=-3.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784069822558165654 X-GMAIL-MSGID: 1784069822558165654 --- gas/testsuite/gas/loongarch/tlsdesc_32.d | 26 +++++ gas/testsuite/gas/loongarch/tlsdesc_32.s | 12 +++ gas/testsuite/gas/loongarch/tlsdesc_64.d | 26 +++++ 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 | 34 ++++++ .../gas/loongarch/tlsdesc_large_pc.s | 16 +++ .../ld-loongarch-elf/ld-loongarch-elf.exp | 16 +++ ld/testsuite/ld-loongarch-elf/tls-desc.dd | 74 +++++++++++++ ld/testsuite/ld-loongarch-elf/tls-desc.rd | 79 ++++++++++++++ ld/testsuite/ld-loongarch-elf/tls-desc.s | 102 ++++++++++++++++++ .../ld-loongarch-elf/tls-relax-desc-le.d | 15 +++ .../ld-loongarch-elf/tls-relax-desc-le.s | 8 ++ 14 files changed, 450 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/tls-desc.dd create mode 100644 ld/testsuite/ld-loongarch-elf/tls-desc.rd create mode 100644 ld/testsuite/ld-loongarch-elf/tls-desc.s create mode 100644 ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.d create mode 100644 ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.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..ad1e32666b5 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_32.d @@ -0,0 +1,26 @@ +#as: +#objdump: -dr +#skip: loongarch64-*-* + +.*:[ ]+file format .* + + +Disassembly of section .text: + +00000000.* <.*>: +[ ]+0:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0 +[ ]+0:[ ]+R_LARCH_TLS_DESC_PC_HI20[ ]+var +[ ]+4:[ ]+28800085[ ]+ld.w[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+4:[ ]+R_LARCH_TLS_DESC_LD_PC_LO12[ ]+var +[ ]+8:[ ]+02800084[ ]+addi.w[ ]+\$a0,[ ]+\$a0,[ ]+0 +[ ]+8:[ ]+R_LARCH_TLS_DESC_ADD_PC_LO12[ ]+var +[ ]+c:[ ]+4c0000a4[ ]+jirl[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+c:[ ]+R_LARCH_TLS_DESC_CALL[ ]+var +[ ]+10:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0 +[ ]+10:[ ]+R_LARCH_TLS_DESC_PC_HI20[ ]+var +[ ]+14:[ ]+28800085[ ]+ld.w[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+14:[ ]+R_LARCH_TLS_DESC_LD_PC_LO12[ ]+var +[ ]+18:[ ]+02800084[ ]+addi.w[ ]+\$a0,[ ]+\$a0,[ ]+0 +[ ]+18:[ ]+R_LARCH_TLS_DESC_ADD_PC_LO12[ ]+var +[ ]+1c:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+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..98a89ee36fd --- /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_LD_PC_LO12 var + ld.w $a1,$a0,%desc_ld_pc_lo12(var) + # R_LARCH_TLSDESC_ADD_PC_LO12 var + addi.w $a0,$a0,%desc_add_pc_lo12(var) + # R_LARCH_TLSDESC_CALL var + jirl $a0,$a1,%desc_call(var) + + # test macro + 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..703ffc0e483 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_64.d @@ -0,0 +1,26 @@ +#as: +#objdump: -dr +#skip: loongarch32-*-* + +.*:[ ]+file format .* + + +Disassembly of section .text: + +00000000.* <.*>: +[ ]+0:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0 +[ ]+0:[ ]+R_LARCH_TLS_DESC_PC_HI20[ ]+var +[ ]+4:[ ]+28c00085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+4:[ ]+R_LARCH_TLS_DESC_LD_PC_LO12[ ]+var +[ ]+8:[ ]+02c00084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+0 +[ ]+8:[ ]+R_LARCH_TLS_DESC_ADD_PC_LO12[ ]+var +[ ]+c:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+c:[ ]+R_LARCH_TLS_DESC_CALL[ ]+var +[ ]+10:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0 +[ ]+10:[ ]+R_LARCH_TLS_DESC_PC_HI20[ ]+var +[ ]+14:[ ]+28c00085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+14:[ ]+R_LARCH_TLS_DESC_LD_PC_LO12[ ]+var +[ ]+18:[ ]+02c00084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+0 +[ ]+18:[ ]+R_LARCH_TLS_DESC_ADD_PC_LO12[ ]+var +[ ]+1c:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+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..fb24abe2d1f --- /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_LD_PC_LO12 var + ld.d $a1,$a0,%desc_ld_pc_lo12(var) + # R_LARCH_TLSDESC_ADD_PC_LO12 var + addi.d $a0,$a0,%desc_add_pc_lo12(var) + # R_LARCH_TLSDESC_CALL var + jirl $ra,$a1,%desc_call(var) + + # test macro + 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..4a2947a41ae --- /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: + +00000000.* <.*>: +[ ]+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:[ ]+28c00085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+14:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+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..ed33857fc22 --- /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 $a1,$a0,0 + jirl $ra,$a1,%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..81333806f8c --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_large_pc.d @@ -0,0 +1,34 @@ +#as: +#objdump: -dr +#skip: loongarch32-*-* + +.*:[ ]+file format .* + + +Disassembly of section .text: + +00000000.* <.*>: +[ ]+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:[ ]+28c00085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+18:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+18:[ ]+R_LARCH_TLS_DESC_CALL[ ]+var +[ ]+1c:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0 +[ ]+1c:[ ]+R_LARCH_TLS_DESC_PC_HI20[ ]+var +[ ]+20:[ ]+02c00005[ ]+li.d[ ]+\$a1,[ ]+0 +[ ]+20:[ ]+R_LARCH_TLS_DESC_ADD_PC_LO12[ ]+var +[ ]+24:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0 +[ ]+24:[ ]+R_LARCH_TLS_DESC64_PC_LO20[ ]+var +[ ]+28:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0 +[ ]+28:[ ]+R_LARCH_TLS_DESC64_PC_HI12[ ]+var +[ ]+2c:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1 +[ ]+30:[ ]+28c00085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+34:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+34:[ ]+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..a396060bf28 --- /dev/null +++ b/gas/testsuite/gas/loongarch/tlsdesc_large_pc.s @@ -0,0 +1,16 @@ +.L1: + # R_LARCH_TLS_DESC_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 $a1,$a0,0 + # R_LARCH_TLS_DESC + jirl $ra,$a1,%desc_call(var) + + # test macro + la.tls.desc $a0,$a1,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..f72cc523486 100644 --- a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp +++ b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp @@ -32,6 +32,7 @@ if [istarget "loongarch64-*-*"] { run_dump_test "syscall" run_dump_test "disas-jirl" run_dump_test "local-ifunc-reloc" + run_dump_test "tls-relax-desc-le" } if [istarget "loongarch32-*-*"] { @@ -55,4 +56,19 @@ if [istarget "loongarch64-*-*"] { "64_pcrel" \ ] \ ] + + run_ld_link_tests \ + [list \ + [list \ + "tls-desc" \ + "-shared -fPIC" "" \ + "" \ + {tls-desc.s} \ + [list \ + [list objdump -drj.text tls-desc.dd] \ + [list readelf -rWs tls-desc.rd] \ + ] \ + "tls-desc" \ + ] \ + ] } diff --git a/ld/testsuite/ld-loongarch-elf/tls-desc.dd b/ld/testsuite/ld-loongarch-elf/tls-desc.dd new file mode 100644 index 00000000000..23ca5a352be --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tls-desc.dd @@ -0,0 +1,74 @@ +#source: tls-desc.s +#as: +#ld: -shared -fPIC +#objdump: -drj.text +#skip: loongarch32-*-* + +.*:[ ]+file format .* + + +Disassembly of section .text: + +00000000.* <.*>: +[ ]+4f0:[ ]+1a0000ac[ ]+pcalau12i[ ]+\$t0,[ ]+5 +[ ]+4f4:[ ]+02e1c184[ ]+addi.d[ ]+\$a0,[ ]+\$t0,[ ]+-1936 +[ ]+4f8:[ ]+57ffebff[ ]+bl[ ]+-24[ ]+#[ ]+4e0[ ]+<__tls_get_addr@plt> +[ ]+4fc:[ ]+1a0000ac[ ]+pcalau12i[ ]+\$t0,[ ]+5 +[ ]+500:[ ]+28e2018c[ ]+ld.d[ ]+\$t0,[ ]+\$t0,[ ]+-1920 +[ ]+504:[ ]+1a0000ac[ ]+pcalau12i[ ]+\$t0,[ ]+5 +[ ]+508:[ ]+02e0a184[ ]+addi.d[ ]+\$a0,[ ]+\$t0,[ ]+-2008 +[ ]+50c:[ ]+57ffd7ff[ ]+bl[ ]+-44[ ]+#[ ]+4e0[ ]+<__tls_get_addr@plt> +[ ]+510:[ ]+1a0000a4[ ]+pcalau12i[ ]+\$a0,[ ]+5 +[ ]+514:[ ]+28e0e085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+-1992 +[ ]+518:[ ]+02e0e084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+-1992 +[ ]+51c:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+520:[ ]+1a0000a4[ ]+pcalau12i[ ]+\$a0,[ ]+5 +[ ]+524:[ ]+28e04085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+-2032 +[ ]+528:[ ]+02e04084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+-2032 +[ ]+52c:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+530:[ ]+1a0000ac[ ]+pcalau12i[ ]+\$t0,[ ]+5 +[ ]+534:[ ]+28e0818c[ ]+ld.d[ ]+\$t0,[ ]+\$t0,[ ]+-2016 +[ ]+538:[ ]+1a0000ac[ ]+pcalau12i[ ]+\$t0,[ ]+5 +[ ]+53c:[ ]+02e12184[ ]+addi.d[ ]+\$a0,[ ]+\$t0,[ ]+-1976 +[ ]+540:[ ]+57ffa3ff[ ]+bl[ ]+-96[ ]+#[ ]+4e0[ ]+<__tls_get_addr@plt> +[ ]+544:[ ]+1a0000a4[ ]+pcalau12i[ ]+\$a0,[ ]+5 +[ ]+548:[ ]+28e16085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+-1960 +[ ]+54c:[ ]+02e16084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+-1960 +[ ]+550:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+554:[ ]+1a0000ac[ ]+pcalau12i[ ]+\$t0,[ ]+5 +[ ]+558:[ ]+28e1a18c[ ]+ld.d[ ]+\$t0,[ ]+\$t0,[ ]+-1944 + +.*0000055c[ ]+: +[ ]+55c:[ ]+1a00008c[ ]+pcalau12i[ ]+\$t0,[ ]+4 +[ ]+560:[ ]+28de618c[ ]+ld.d[ ]+\$t0,[ ]+\$t0,[ ]+1944 +[ ]+564:[ ]+1a00008c[ ]+pcalau12i[ ]+\$t0,[ ]+4 +[ ]+568:[ ]+02de2184[ ]+addi.d[ ]+\$a0,[ ]+\$t0,[ ]+1928 +[ ]+56c:[ ]+57ff77ff[ ]+bl[ ]+-140[ ]+#[ ]+4e0[ ]+<__tls_get_addr@plt> +[ ]+570:[ ]+1a000084[ ]+pcalau12i[ ]+\$a0,[ ]+4 +[ ]+574:[ ]+28dec085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+1968 +[ ]+578:[ ]+02dec084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+1968 +[ ]+57c:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+580:[ ]+1a00008c[ ]+pcalau12i[ ]+\$t0,[ ]+4 +[ ]+584:[ ]+02de8184[ ]+addi.d[ ]+\$a0,[ ]+\$t0,[ ]+1952 +[ ]+588:[ ]+57ff5bff[ ]+bl[ ]+-168[ ]+#[ ]+4e0[ ]+<__tls_get_addr@plt> +[ ]+58c:[ ]+1a000084[ ]+pcalau12i[ ]+\$a0,[ ]+4 +[ ]+590:[ ]+28df0085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+1984 +[ ]+594:[ ]+02df0084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+1984 +[ ]+598:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+59c:[ ]+1a00008c[ ]+pcalau12i[ ]+\$t0,[ ]+4 +[ ]+5a0:[ ]+28df418c[ ]+ld.d[ ]+\$t0,[ ]+\$t0,[ ]+2000 +[ ]+5a4:[ ]+1a000084[ ]+pcalau12i[ ]+\$a0,[ ]+4 +[ ]+5a8:[ ]+28dfa085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+2024 +[ ]+5ac:[ ]+02dfa084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+2024 +[ ]+5b0:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 +[ ]+5b4:[ ]+1a00008c[ ]+pcalau12i[ ]+\$t0,[ ]+4 +[ ]+5b8:[ ]+02df6184[ ]+addi.d[ ]+\$a0,[ ]+\$t0,[ ]+2008 +[ ]+5bc:[ ]+57ff27ff[ ]+bl[ ]+-220[ ]+#[ ]+4e0[ ]+<__tls_get_addr@plt> +[ ]+5c0:[ ]+1a00008c[ ]+pcalau12i[ ]+\$t0,[ ]+4 +[ ]+5c4:[ ]+28dfe18c[ ]+ld.d[ ]+\$t0,[ ]+\$t0,[ ]+2040 + +.*000005c8[ ]+: +[ ]+5c8:[ ]+1a0000a4[ ]+pcalau12i[ ]+\$a0,[ ]+5 +[ ]+5cc:[ ]+28e00085[ ]+ld.d[ ]+\$a1,[ ]+\$a0,[ ]+-2048 +[ ]+5d0:[ ]+02e00084[ ]+addi.d[ ]+\$a0,[ ]+\$a0,[ ]+-2048 +[ ]+5d4:[ ]+4c0000a1[ ]+jirl[ ]+\$ra,[ ]+\$a1,[ ]+0 diff --git a/ld/testsuite/ld-loongarch-elf/tls-desc.rd b/ld/testsuite/ld-loongarch-elf/tls-desc.rd new file mode 100644 index 00000000000..38c27dbc4b5 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tls-desc.rd @@ -0,0 +1,79 @@ +#as: +#ld: -shared -fPIC +#readelf: -rWs +#skip: loongarch32-*-* + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 22 entries: + Offset Info Type Symbol's Value Symbol's Name \+ Addend +0+4788 +[0-9a-f]+ R_LARCH_TLS_DTPMOD64 0 +0+4798 +[0-9a-f]+ R_LARCH_TLS_TPREL64 20 +0+47a0 +[0-9a-f]+ R_LARCH_TLS_DTPMOD64 0 +0+47b0 +[0-9a-f]+ R_LARCH_TLS_DESC64 28 +0+47c0 +[0-9a-f]+ R_LARCH_TLS_DESC64 30 +0+47d0 +[0-9a-f]+ R_LARCH_TLS_TPREL64 30 +0+47d8 +[0-9a-f]+ R_LARCH_TLS_DTPMOD64 0 +0+47e8 +[0-9a-f]+ R_LARCH_TLS_DESC64 38 +0+47f8 +[0-9a-f]+ R_LARCH_TLS_TPREL64 38 +0+4800 +[0-9a-f]+ R_LARCH_TLS_DESC64 +[0-9a-f]+ sH1 \+ 0 +0+4810 +[0-9a-f]+ R_LARCH_TLS_DESC64 +[0-9a-f]+ gl3 \+ 0 +0+4820 +[0-9a-f]+ R_LARCH_TLS_TPREL64 +[0-9a-f]+ gl3 \+ 0 +0+4828 +[0-9a-f]+ R_LARCH_TLS_DTPMOD64 +[0-9a-f]+ gl2 \+ 0 +0+4830 +[0-9a-f]+ R_LARCH_TLS_DTPREL64 +[0-9a-f]+ gl2 \+ 0 +0+4838 +[0-9a-f]+ R_LARCH_TLS_DESC64 +[0-9a-f]+ gl2 \+ 0 +0+4848 +[0-9a-f]+ R_LARCH_TLS_DTPMOD64 +[0-9a-f]+ gl4 \+ 0 +0+4850 +[0-9a-f]+ R_LARCH_TLS_DTPREL64 +[0-9a-f]+ gl4 \+ 0 +0+4858 +[0-9a-f]+ R_LARCH_TLS_DESC64 +[0-9a-f]+ gl4 \+ 0 +0+4868 +[0-9a-f]+ R_LARCH_TLS_TPREL64 +[0-9a-f]+ gl4 \+ 0 +0+4870 +[0-9a-f]+ R_LARCH_TLS_DTPMOD64 +[0-9a-f]+ gl1 \+ 0 +0+4878 +[0-9a-f]+ R_LARCH_TLS_DTPREL64 +[0-9a-f]+ gl1 \+ 0 +0+4880 +[0-9a-f]+ R_LARCH_TLS_TPREL64 +[0-9a-f]+ gl1 \+ 0 + +Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entry: + Offset Info Type Symbol's Value Symbol's Name \+ Addend +0+4778 +[0-9a-f]+ R_LARCH_JUMP_SLOT +[0-9a-f]+ __tls_get_addr \+ 0 + +Symbol table '.dynsym' contains 9 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: +[0-9a-f]+ 0 NOTYPE LOCAL DEFAULT UND + 1: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 8 .text + 2: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 9 .tdata + 3: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT UND sH1 + 4: +[0-9a-f]+ 0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr + 5: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl3 + 6: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl4 + 7: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl1 + 8: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl2 + +Symbol table '.symtab' contains 31 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: +[0-9a-f]+ 0 NOTYPE LOCAL DEFAULT UND + 1: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 1 .hash + 2: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 2 .gnu.hash + 3: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 3 .dynsym + 4: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 4 .dynstr + 5: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 5 .rela.dyn + 6: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 6 .rela.plt + 7: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 7 .plt + 8: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 8 .text + 9: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 9 .tdata + 10: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 10 .dynamic + 11: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 11 .got.plt + 12: +[0-9a-f]+ 0 SECTION LOCAL DEFAULT 12 .got + 13: +[0-9a-f]+ 0 FILE LOCAL DEFAULT ABS tls-desc.o + 14: +[0-9a-f]+ 0 TLS LOCAL DEFAULT 9 lo1 + 15: +[0-9a-f]+ 0 TLS LOCAL DEFAULT 9 lo2 + 16: +[0-9a-f]+ 0 TLS LOCAL DEFAULT 9 lo3 + 17: +[0-9a-f]+ 0 TLS LOCAL DEFAULT 9 lo4 + 18: +[0-9a-f]+ 0 NOTYPE LOCAL DEFAULT 8 fun_gl1 + 19: +[0-9a-f]+ 0 NOTYPE LOCAL DEFAULT 8 fun_lo + 20: +[0-9a-f]+ 0 NOTYPE LOCAL DEFAULT 8 fun_external + 21: +[0-9a-f]+ 0 FILE LOCAL DEFAULT ABS + 22: +[0-9a-f]+ 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 23: +[0-9a-f]+ 0 OBJECT LOCAL DEFAULT ABS _PROCEDURE_LINKAGE_TABLE_ + 24: +[0-9a-f]+ 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 25: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT UND sH1 + 26: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl3 + 27: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl2 + 28: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl4 + 29: +[0-9a-f]+ 0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr + 30: +[0-9a-f]+ 0 TLS GLOBAL DEFAULT 9 gl1 diff --git a/ld/testsuite/ld-loongarch-elf/tls-desc.s b/ld/testsuite/ld-loongarch-elf/tls-desc.s new file mode 100644 index 00000000000..322adc11139 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tls-desc.s @@ -0,0 +1,102 @@ + .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 + pcalau12i $t0,%gd_pc_hi20(gl1) + addi.d $a0,$t0,%got_pc_lo12(gl1) + bl %plt(__tls_get_addr) + + pcalau12i $t0,%ie_pc_hi20(gl1) + ld.d $t0,$t0,%ie_pc_lo12(gl1) + + # GD + DESC + pcalau12i $t0,%gd_pc_hi20(gl2) + addi.d $a0,$t0,%got_pc_lo12(gl2) + bl %plt(__tls_get_addr) + + pcalau12i $a0,%desc_pc_hi20(gl2) + ld.d $a1,$a0,%desc_ld_pc_lo12(gl2) + addi.d $a0,$a0,%desc_add_pc_lo12(gl2) + jirl $ra,$a1,%desc_call(gl2) + + # DESC + IE + pcalau12i $a0,%desc_pc_hi20(gl3) + ld.d $a1,$a0,%desc_ld_pc_lo12(gl3) + addi.d $a0,$a0,%desc_add_pc_lo12(gl3) + jirl $ra,$a1,%desc_call(gl3) + + pcalau12i $t0,%ie_pc_hi20(gl3) + ld.d $t0,$t0,%ie_pc_lo12(gl3) + + + # GD + DESC + IE + pcalau12i $t0,%gd_pc_hi20(gl4) + addi.d $a0,$t0,%got_pc_lo12(gl4) + bl %plt(__tls_get_addr) + + pcalau12i $a0,%desc_pc_hi20(gl4) + ld.d $a1,$a0,%desc_ld_pc_lo12(gl4) + addi.d $a0,$a0,%desc_add_pc_lo12(gl4) + jirl $ra,$a1,%desc_call(gl4) + + pcalau12i $t0,%ie_pc_hi20(gl4) + ld.d $t0,$t0,%ie_pc_lo12(gl4) + +# Access local symbol +fun_lo: + # IE + GD + pcalau12i $t0,%ie_pc_hi20(lo1) + ld.d $t0,$t0,%ie_pc_lo12(lo1) + + pcalau12i $t0,%gd_pc_hi20(lo1) + addi.d $a0,$t0,%got_pc_lo12(lo1) + bl %plt(__tls_get_addr) + + # DESC + GD + pcalau12i $a0,%desc_pc_hi20(lo2) + ld.d $a1,$a0,%desc_ld_pc_lo12(lo2) + addi.d $a0,$a0,%desc_add_pc_lo12(lo2) + jirl $ra,$a1,%desc_call(lo2) + + pcalau12i $t0,%gd_pc_hi20(lo2) + addi.d $a0,$t0,%got_pc_lo12(lo2) + bl %plt(__tls_get_addr) + + # DESC + IE + pcalau12i $a0,%desc_pc_hi20(lo3) + ld.d $a1,$a0,%desc_ld_pc_lo12(lo3) + addi.d $a0,$a0,%desc_add_pc_lo12(lo3) + jirl $ra,$a1,%desc_call(lo3) + + pcalau12i $t0,%ie_pc_hi20(lo3) + ld.d $t0,$t0,%ie_pc_lo12(lo3) + + # DESC + GD + IE + pcalau12i $a0,%desc_pc_hi20(lo4) + ld.d $a1,$a0,%desc_ld_pc_lo12(lo4) + addi.d $a0,$a0,%desc_add_pc_lo12(lo4) + jirl $ra,$a1,%desc_call(lo4) + + pcalau12i $t0,%gd_pc_hi20(lo4) + addi.d $a0,$t0,%got_pc_lo12(lo4) + bl %plt(__tls_get_addr) + + pcalau12i $t0,%ie_pc_hi20(lo4) + ld.d $t0,$t0,%ie_pc_lo12(lo4) +# Access external undef symbol +fun_external: + pcalau12i $a0,%desc_pc_hi20(sH1) + ld.d $a1,$a0,%desc_ld_pc_lo12(sH1) + addi.d $a0,$a0,%desc_add_pc_lo12(sH1) + jirl $ra,$a1,%desc_call(sH1) diff --git a/ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.d b/ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.d new file mode 100644 index 00000000000..844d54f725c --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.d @@ -0,0 +1,15 @@ +#as: +#ld: -e 0x0 -static +#objdump: -drj.text +#skip: loongarch32-*-* + +.*:[ ]+file format .* + + +Disassembly of section .text: + +.*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/tls-relax-desc-le.s b/ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.s new file mode 100644 index 00000000000..09a86586760 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tls-relax-desc-le.s @@ -0,0 +1,8 @@ + .section .tdata +var: + .word 4 + .text + pcalau12i $a0,%desc_pc_hi20(var) + ld.d $a1,$a0,%desc_ld_pc_lo12(var) + addi.d $a0,$a0,%desc_add_pc_lo12(var) + jirl $ra,$a1,%desc_call(var)