From patchwork Sat Dec 2 06:53:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: changjiachen X-Patchwork-Id: 172745 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp1618893vqy; Fri, 1 Dec 2023 22:54:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IHDqF+Fg7F/QyKNOvZtkSO6o4FJ5yYrJHQshJsrQoTnfoom2+RtFlvW4plTwCvDF6rtLrQX X-Received: by 2002:ac8:584c:0:b0:425:4043:18a1 with SMTP id h12-20020ac8584c000000b00425404318a1mr1090109qth.84.1701500092812; Fri, 01 Dec 2023 22:54:52 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701500092; cv=pass; d=google.com; s=arc-20160816; b=ROqPz6jcjBMtRdUrKDpmWeBhNh+WZHrddZeSrTv6GAtLCSmFwon42hEZb4djPrXgb4 Gvm6saypCkGruqynKByfQLtjP05ysqrI2KAf1r6fPcb+gliYwRcE3VArXLsPisuI61wP BmeWBKDQczEXe0rDhLd95DilK2C0Jo0J0HXlvPseqlDPIkCmBJSYw1/0nPy5Kl4279jn 14E6zI/z8J9K0E7B2Iyqro9KvAbvZU+BZMCeiUQFSNHYM55o9f15LN6NfpNbcEQYDAd2 Svzf/6vEggQrSsyyA2Qa/cfcmVuKE/Vj+A4IVtzHIRcXmvZZdX0oUZUFeHUYaSrxRBqX dSgw== 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=PQBOBIIS60ho6cyxPmwPjgIZiknpVLYQNSa04d3/r9E=; fh=uTF/VfpCAq2GtcL5NdCKul3VKQPlBSDYmUlZE/0CcYM=; b=jbQoZy/KmUPeEY0J07iIYxHzoA8Lo/ApaUBN/JnDWUqyK5G0xATW5OtNT5/9guKMlj cHDcs1tDx0Agk13udSxRKy8Oq4J7jI6rN87s7+KQM5VWtdjquebRXnQTFrbdb1ceJcyR wGNtKNi6LSQ9Xe4ypuCxxC0RZdt3M8mtLUcYt2R1C/WZyZtzZfgOS2A/0Pe3MPnEuk9r UdxG/FH8ezgPiXRNIwhdW6FGPJoELyV2gwv58ONe5coDftIm7pmoVFRMwRB4EBOMl2jH scJ3ay3Mzitgoc0fZHnxDjsO/20kOgTUBWQFGgghRFy+BeWW1ysX5IyTYeCMVFZySbbW a9Cw== 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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id jr11-20020a05622a800b00b004237f85a05esi4791865qtb.540.2023.12.01.22.54.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 22:54:52 -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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 72AC63860002 for ; Sat, 2 Dec 2023 06:54:42 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-m24121.xmail.ntesmail.com (mail-m24121.xmail.ntesmail.com [45.195.24.121]) by sourceware.org (Postfix) with ESMTPS id 22C84385828E for ; Sat, 2 Dec 2023 06:53:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 22C84385828E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=stu.xupt.edu.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=stu.xupt.edu.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 22C84385828E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=45.195.24.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500042; cv=none; b=QRDxpanuCw4d5E9HLDP8pphPd1bTnxzw5OVQcKBA6BPgS77Tq9W3gu8yNZszoUxC8a8HxBJIa0MlmpTVK/Bg8RI/xDE3f97kU1ndy2qptDOK//MSdAyQKoYuhJs2AkQi1wxPrO0rwuxaoar4+p8KcNnSDDssPZ6bzv98y8z3Q+Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500042; c=relaxed/simple; bh=Wx82xfbU0qzswW0HJrwa3N7qZm2H/cv3ItVcSYJ6oZM=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=tmkD4hF7nxBX394h8jG5vPSaI9Mj2u4ky6+pvK86t5HuPrFMpa/m5wD4IfzkbtQJX3NIua0+W5pJXJo/1Tkjx/5XEiy6KHmV/nwAdgO8g7YgnDJe0ws/jkjfJnfoW/vagpwZYg1al8gRsZ3vpFUTRNZdS+3M5ZzWpCr62UNI3+U= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from ubuntu.localdomain (unknown [223.104.204.129]) by mail-m121144.qiye.163.com (Hmail) with ESMTPA id AF95DAC00C6; Sat, 2 Dec 2023 14:53:45 +0800 (CST) From: changjiachen To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, cailulu@loongson.cn, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn, Lazy_Linux@126.com, mengqinggang@loongson.cn, changjiachen Subject: [PATCH v2 1/5] LoongArch: bfd: Add support for tls le relax. Date: Sat, 2 Dec 2023 14:53:30 +0800 Message-Id: <20231202065334.25904-2-changjiachen@stu.xupt.edu.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> References: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> MIME-Version: 1.0 X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVkaGR8fVkhNTE9DH0xDTU9MGFUTARMWGhIXJBQOD1 lXWRgSC1lBWUlJSFVKS09VSUtPVUpJQllXWRYaDxIVHRRZQVlLVUtVS1VLWQY+ X-HM-Tid: 0a8c294dfe2eb039kuuuaf95dac00c6 X-HM-MType: 10 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Nxw6PTo5FDw3KAs1MB4PFyMV NRAaCw1VSlVKTEtKTktLS0lMTklDVTMWGhIXVRgTGhUcERIaGBMeFTsIDw5VAw4LD1UeHw5VGBVF WVdZEgtZQVlJSUhVSktPVUlLT1VKSUJZV1kIAVlBSktDTE03Bg++ X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, 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 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: 1784152161339169612 X-GMAIL-MSGID: 1784152161339169612 Add tls le relax support and related relocs in bfd. This support does two main things: 1. Implement support for three new relocation items in bfd. The three new relocation items are shown below: R_LARCH_TLS_LE_ADD_R R_LARCH_TLS_LE_HI20_R R_LARCH_TLS_LE_LO12_R 2. ADD a new macro RELOCATE_TLS_TP32_HI20 Handle problems caused by symbol extensions in TLS LE, The processing is similar to the macro RELOCATE_CALC_PC32_HI20 method. 3. Implement the tls le relax function. bfd/ChangeLog: * bfd-in2.h: Add relocs related to tls le relax. * elfnn-loongarch.c: (loongarch_relax_tls_le): New function. (RELOCATE_TLS_TP32_HI20): New macro. (loongarch_elf_check_relocs): Add new reloc support. (perform_relocation): Likewise. (loongarch_elf_relocate_section): Handle new relocs related to relax. (loongarch_elf_relax_section): Likewise. * elfxx-loongarch.c: (LOONGARCH_HOWTO (R_LARCH_TLS_LE_ADD_R)): New reloc how to type. (LOONGARCH_HOWTO (R_LARCH_TLS_LE_HI20_R)): Likewise. (LOONGARCH_HOWTO (R_LARCH_TLS_LE_LO12_R)): Likewise. * libbfd.h: Add relocs related to tls le relax. * reloc.c: Likewise. --- bfd/bfd-in2.h | 4 +++ bfd/elfnn-loongarch.c | 74 +++++++++++++++++++++++++++++++++++++++++++ bfd/elfxx-loongarch.c | 50 +++++++++++++++++++++++++++++ bfd/libbfd.h | 3 ++ bfd/reloc.c | 6 ++++ 5 files changed, 137 insertions(+) diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 79f7f24436c..3972b9b1a9a 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -7457,8 +7457,12 @@ enum bfd_reloc_code_real BFD_RELOC_LARCH_ADD_ULEB128, BFD_RELOC_LARCH_SUB_ULEB128, BFD_RELOC_LARCH_64_PCREL, + BFD_RELOC_LARCH_TLS_LE_HI20_R, + BFD_RELOC_LARCH_TLS_LE_ADD_R, + BFD_RELOC_LARCH_TLS_LE_LO12_R, BFD_RELOC_UNUSED }; + typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; reloc_howto_type *bfd_reloc_type_lookup diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 18ad3cc91ca..b8a3199d27a 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -738,6 +738,7 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, break; case R_LARCH_TLS_LE_HI20: + case R_LARCH_TLS_LE_HI20_R: case R_LARCH_SOP_PUSH_TLS_TPREL: if (!bfd_link_executable (info)) return false; @@ -2105,6 +2106,8 @@ perform_relocation (const Elf_Internal_Rela *rel, asection *input_section, case R_LARCH_GOT64_HI12: case R_LARCH_TLS_LE_HI20: case R_LARCH_TLS_LE_LO12: + case R_LARCH_TLS_LE_HI20_R: + case R_LARCH_TLS_LE_LO12_R: case R_LARCH_TLS_LE64_LO20: case R_LARCH_TLS_LE64_HI12: case R_LARCH_TLS_IE_PC_HI20: @@ -2130,6 +2133,7 @@ perform_relocation (const Elf_Internal_Rela *rel, asection *input_section, break; case R_LARCH_RELAX: + case R_LARCH_TLS_LE_ADD_R: break; default: @@ -2310,6 +2314,16 @@ loongarch_reloc_is_fatal (struct bfd_link_info *info, relocation += 0x1000; \ }) +/* Handle problems caused by symbol extensions in TLS LE, The processing + is similar to the macro RELOCATE_CALC_PC32_HI20 method. */ +#define RELOCATE_TLS_TP32_HI20(relocation) \ + ({ \ + bfd_vma __lo = (relocation) & ((bfd_vma)0xfff); \ + if (__lo > 0x7ff) \ + relocation += 0xfff; \ + relocation = relocation & ~(bfd_vma)0xfff; \ + }) + /* For example: pc is 0x11000010000100, symbol is 0x1812348ffff812 offset = (0x1812348ffff812 & ~0xfff) - (0x11000010000100 & ~0xfff) = 0x712347ffff000 @@ -3205,6 +3219,13 @@ loongarch_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, break; + case R_LARCH_TLS_LE_HI20_R: + relocation -= elf_hash_table (info)->tls_sec->vma; + + RELOCATE_TLS_TP32_HI20 (relocation); + + break; + case R_LARCH_PCALA_LO12: /* Not support if sym_addr in 2k page edge. pcalau12i pc_hi20 (sym_addr) @@ -3375,6 +3396,7 @@ loongarch_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, case R_LARCH_TLS_LE_HI20: case R_LARCH_TLS_LE_LO12: + case R_LARCH_TLS_LE_LO12_R: case R_LARCH_TLS_LE64_LO20: case R_LARCH_TLS_LE64_HI12: BFD_ASSERT (resolved_local && elf_hash_table (info)->tls_sec); @@ -3735,6 +3757,47 @@ loongarch_relax_delete_bytes (bfd *abfd, return true; } +/* Relax tls le. */ +static bool +loongarch_relax_tls_le (bfd *abfd, asection *sec, + Elf_Internal_Rela *rel_hi, + struct bfd_link_info *link_info, + bfd_vma symval) +{ + bfd_byte *contents = elf_section_data (sec)->this_hdr.contents; + uint32_t insn = bfd_get (32, abfd, contents + rel_hi->r_offset); + static uint32_t insn_rj,insn_rd; + symval = symval - elf_hash_table (link_info)->tls_sec->vma; + /* Whether the symbol offset is in the interval (offset < 0x800). */ + if (ELFNN_R_TYPE ((rel_hi + 1)->r_info) + == R_LARCH_RELAX && symval < 0x800) + { + switch (ELFNN_R_TYPE (rel_hi->r_info)) + { + case R_LARCH_TLS_LE_HI20_R: + case R_LARCH_TLS_LE_ADD_R: + /* delete insn. */ + rel_hi->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_hi->r_info), + R_LARCH_DELETE); + break; + case R_LARCH_TLS_LE_LO12_R: + /* Change rj to $tp. */ + insn_rj = 0x2 << 5; + /* Get rd register. */ + insn_rd = insn & 0x1f; + /* Write symbol offset. */ + symval <<= 10; + /* Writes the modified instruction. */ + insn = insn & 0xffc00000; + insn = insn | symval | insn_rj | insn_rd; + bfd_put (32, abfd, insn, contents + rel_hi->r_offset); + break; + default: + break; + } + } + return true; +} /* Relax pcalau12i,addi.d => pcaddi. */ static bool @@ -4002,6 +4065,17 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE); } break; + case R_LARCH_TLS_LE_HI20_R: + case R_LARCH_TLS_LE_LO12_R: + case R_LARCH_TLS_LE_ADD_R: + if (info->relax_pass == 0) + { + if (i + 2 > sec->reloc_count) + break; + loongarch_relax_tls_le (abfd, sec, rel, info, symval); + } + break; + case R_LARCH_PCALA_HI20: if (info->relax_pass == 0) { diff --git a/bfd/elfxx-loongarch.c b/bfd/elfxx-loongarch.c index a970a257aa9..a24333e6838 100644 --- a/bfd/elfxx-loongarch.c +++ b/bfd/elfxx-loongarch.c @@ -1547,6 +1547,56 @@ static loongarch_reloc_howto_type loongarch_howto_table[] = NULL, /* adjust_reloc_bits */ NULL), /* larch_reloc_type_name */ + LOONGARCH_HOWTO (R_LARCH_TLS_LE_HI20_R, /* type (110). */ + 12, /* rightshift. */ + 4, /* size. */ + 20, /* bitsize. */ + false, /* pc_relative. */ + 5, /* bitpos. */ + complain_overflow_signed, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_LARCH_TLS_LE_HI20_R", /* name. */ + false, /* partial_inplace. */ + 0, /* src_mask. */ + 0x1ffffe0, /* dst_mask. */ + false, /* pcrel_offset. */ + BFD_RELOC_LARCH_TLS_LE_HI20_R, /* bfd_reloc_code_real_type. */ + reloc_bits, /* adjust_reloc_bits. */ + "le_hi20_r"), /* larch_reloc_type_name. */ + + LOONGARCH_HOWTO (R_LARCH_TLS_LE_ADD_R, /* type (111). */ + 0, /* rightshift. */ + 1, /* size. */ + 0, /* bitsize. */ + false, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_dont, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_LARCH_TLS_LE_ADD_R", /* name. */ + false, /* partial_inplace. */ + 0, /* src_mask. */ + 0, /* dst_mask. */ + false, /* pcrel_offset. */ + BFD_RELOC_LARCH_TLS_LE_ADD_R, /* bfd_reloc_code_real_type. */ + NULL, /* adjust_reloc_bits. */ + "tls_le_add_r"), /* larch_reloc_type_name. */ + + LOONGARCH_HOWTO (R_LARCH_TLS_LE_LO12_R, /* type (112). */ + 0, /* rightshift. */ + 4, /* size. */ + 12, /* bitsize. */ + false, /* pc_relative. */ + 10, /* bitpos. */ + complain_overflow_signed, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_LARCH_TLS_LE_LO12_R", /* name. */ + false, /* partial_inplace. */ + 0, /* src_mask. */ + 0x3ffc00, /* dst_mask. */ + false, /* pcrel_offset. */ + BFD_RELOC_LARCH_TLS_LE_LO12_R, /* bfd_reloc_code_real_type. */ + reloc_bits, /* adjust_reloc_bits. */ + "le_lo12_r"), /* larch_reloc_type_name. */ }; reloc_howto_type * diff --git a/bfd/libbfd.h b/bfd/libbfd.h index cc432677a81..4b0e9405e76 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -3599,6 +3599,9 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_LARCH_ADD_ULEB128", "BFD_RELOC_LARCH_SUB_ULEB128", "BFD_RELOC_LARCH_64_PCREL", + "BFD_RELOC_LARCH_TLS_LE_HI20_R", + "BFD_RELOC_LARCH_TLS_LE_ADD_R", + "BFD_RELOC_LARCH_TLS_LE_LO12_R", "@@overflow: BFD_RELOC_UNUSED@@", }; #endif diff --git a/bfd/reloc.c b/bfd/reloc.c index 93ebad879e0..f6312ff9b77 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -8291,6 +8291,12 @@ ENUMX ENUMX BFD_RELOC_LARCH_64_PCREL +ENUMX + BFD_RELOC_LARCH_TLS_LE_HI20_R +ENUMX + BFD_RELOC_LARCH_TLS_LE_ADD_R +ENUMX + BFD_RELOC_LARCH_TLS_LE_LO12_R ENUMDOC LARCH relocations. From patchwork Sat Dec 2 06:53:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: changjiachen X-Patchwork-Id: 172744 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp1618889vqy; Fri, 1 Dec 2023 22:54:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IF5SOqB1lIrsZFAYiQHaQNN4PL7VreQe+tYgK3m6hcYG3mHHktc3YO8DOeAQ5dSd9XlEOwd X-Received: by 2002:a05:620a:2689:b0:77e:fba3:a77c with SMTP id c9-20020a05620a268900b0077efba3a77cmr503845qkp.90.1701500091941; Fri, 01 Dec 2023 22:54:51 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701500091; cv=pass; d=google.com; s=arc-20160816; b=OscammXAbO6Y1aVJtynlEuKczduYSp8SezVZ/uGqz+riiDRMttqJj9RoXgf3n2aSwH WpEymTYFTxafXIJk4R6PWoC5/9wlgIKKbKHR8YC04OK9cee662L6OTM6a6HnvQeFcCLn VBUh/TtHEb81aI/CwSncXZYz7hdchGoSEZMKeuWFdm6EhoDe/wUEmPbrRtwSzKtuS2mc 9Q4e5V3p7JH/8rmWevYZLigxos+67llsrMT03HBp2KVaQfd2ERAY8zpx5clrNsa2smuu 9xjQvxZzRzRXUWwmW3kH6iX/w6ZnsMZ69kxuMlcyLNh5fjoUD4U+nLeMQGb0D7IynVfw q1Eg== 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=fpT9/q7TkhJeLtJoTGRVa6ERYISgq0VnWrZ1lBFZBFI=; fh=uTF/VfpCAq2GtcL5NdCKul3VKQPlBSDYmUlZE/0CcYM=; b=NMBsabcWC4QJhcCxAiHEyRa4v7K9kfKJRKIkD4VE5tNw5eiX4mF6rylLUU+6k+TwQl I6tru6pRZR+w4fNHhbtKvwLdq5GJmHOr4qavp35guuwn7jmx1xcUwg6oibP8FXDBYYBp PgmZqx/5ql0GgpsE98cldYZKCs2ZeAFgKK58xjawW9FlvZ/fkQ2lP2OpEsBUljSPrL81 6c992bDI+vctK603M02YzFZD1tjNbmtQTMadbcpSOZ4P0jp85gRdJR0A6scIdPQ0koQk BovVluVXk7ngMQ67PQc5JHe/UVgPTZcE0k3aL/SD3ceqJseYb4mZji1OVp2WVoynMOOu GQiQ== 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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id bn36-20020a05620a2ae400b0077dce23fd9csi4844235qkb.22.2023.12.01.22.54.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 22:54:51 -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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CB4E538618D3 for ; Sat, 2 Dec 2023 06:54:41 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-m254102.xmail.ntesmail.com (mail-m254102.xmail.ntesmail.com [103.129.254.102]) by sourceware.org (Postfix) with ESMTPS id 2A31B3858297 for ; Sat, 2 Dec 2023 06:53:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2A31B3858297 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=stu.xupt.edu.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=stu.xupt.edu.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2A31B3858297 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=103.129.254.102 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500041; cv=none; b=T7aGqL9HVOCUCDwPw9Y/yt2MyPrNwbLwZNwn6e5FmnHbsx/kCLMIQ1F/XxMnmYucU+bVXvZnENJmU+jC2r3E6IyrIcN0ryzBOFoFQCc4VNkLLvYqEfvHbEDp4mWuAjMNeM3v01k3qNAg5+bwz/0CcbfpphLTULF4LI09mrszCsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500041; c=relaxed/simple; bh=PrDx8CcgVXgfPm47WZbSPlMcDZaKMFbnG57bMmI/bYI=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=xCHK0Ogft8P2LcphMrhKihLXSh4DR/LJgzIlBYtr4M2eYSgxlqVbYtnEPGGd0rl3N4gI6PQRwpqpFVJh8YzjkOCzKeN6IHiH3kPhT/zZGczkLB17a336QYYl3QkUm/vHCU6F6QBqUU4JyJvXm1X6lw8c8lRn/Zj+CUnf/cO7Ti0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from ubuntu.localdomain (unknown [223.104.204.129]) by mail-m121144.qiye.163.com (Hmail) with ESMTPA id 91926AC00C4; Sat, 2 Dec 2023 14:53:48 +0800 (CST) From: changjiachen To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, cailulu@loongson.cn, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn, Lazy_Linux@126.com, mengqinggang@loongson.cn, changjiachen Subject: [PATCH v2 2/5] LoongArch: include: Add support for tls le relax. Date: Sat, 2 Dec 2023 14:53:31 +0800 Message-Id: <20231202065334.25904-3-changjiachen@stu.xupt.edu.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> References: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> MIME-Version: 1.0 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVlCTRhCVhpKQ08YSUlLSEJIH1UTARMWGhIXJBQOD1 lXWRgSC1lBWUlJSFVKS09VSUtPVUpJQllXWRYaDxIVHRRZQVlPS0hVSkpLSEpDVUpLS1VLWQY+ X-HM-Tid: 0a8c294e0982b039kuuu91926ac00c4 X-HM-MType: 10 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6MRw6URw6Ijw0CgtOTx45Fxoz KwsaCjlVSlVKTEtKTktLS0hLS09DVTMWGhIXVRgTGhUcERIaGBMeFTsIDw5VAw4LD1UeHw5VGBVF WVdZEgtZQVlJSUhVSktPVUlLT1VKSUJZV1kIAVlBSU5JTzcG X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, 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 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: 1784152160491597659 X-GMAIL-MSGID: 1784152160491597659 Add new relocs number for tls le relax. include/ChangeLog: * elf/loongarch.h: (RELOC_NUMBER (R_LARCH_TLS_LE_HI20_R, 110)): New relocs number. (RELOC_NUMBER (R_LARCH_TLS_LE_ADD_R, 111)): Likewise. (RELOC_NUMBER (R_LARCH_TLS_LE_LO12_R, 112)): Likewise. --- include/elf/loongarch.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/elf/loongarch.h b/include/elf/loongarch.h index e31395e13d5..e04ee99bcf2 100644 --- a/include/elf/loongarch.h +++ b/include/elf/loongarch.h @@ -250,6 +250,19 @@ RELOC_NUMBER (R_LARCH_ADD_ULEB128, 107) RELOC_NUMBER (R_LARCH_SUB_ULEB128, 108) RELOC_NUMBER (R_LARCH_64_PCREL, 109) +/* TLS-LE-LUI + lu12i.w $r12,%le_hi20_r (sym). */ +RELOC_NUMBER (R_LARCH_TLS_LE_HI20_R, 110) + +/* TLS-LE-ADD + add.d $r12,$r12,$r2, + %tls_le_add_r (sym). */ +RELOC_NUMBER (R_LARCH_TLS_LE_ADD_R, 111) + +/* TLS-LE-ST + st.w $r12,%le_lo12_r (sym). */ +RELOC_NUMBER (R_LARCH_TLS_LE_LO12_R, 112) + END_RELOC_NUMBERS (R_LARCH_count) From patchwork Sat Dec 2 06:53:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: changjiachen X-Patchwork-Id: 172742 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp1618730vqy; Fri, 1 Dec 2023 22:54:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IEjeIWmYtLbDzRLgGDP1J/cn13aep1tAqqtv6PVHLX8bfm005SDdbyIEQXz/EWTsy79vlBQ X-Received: by 2002:a05:622a:1cf:b0:423:86cc:8c85 with SMTP id t15-20020a05622a01cf00b0042386cc8c85mr1210985qtw.35.1701500052444; Fri, 01 Dec 2023 22:54:12 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701500052; cv=pass; d=google.com; s=arc-20160816; b=M2oO6LYiCMQ83JQ/zuV0h4+/nWoaCLWxCf8ohFx59DO3C+KcNkGWC5C090KZkkVd7a qP1tHkem9N9QOLGdAxew3xTxG1OLlHKE+bupkyB6QHiN7WltwodJB/yQ5JGSnzbaHzJt hDtyVyj5BVNK2ocKpuuQyj6RJ5W4qxWggebdjHBrOOxhlbwwGlIyPsFsI8ejk+xHce9U h57tyDRkk/AWlg/7Is7CESQLu9fQRNPuLK3CXTbdt/9xExpFTnz1U4YsfnFn2aIZtTeZ j4tAlaM/SXB1tksVS464UL2AfHkGBdJeWttL0vxmAsqW/psgFNvjTp1+flaZtsVM2Xbe axRQ== 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=8bJhqhtqI6MkCRim+l0W2zlI9+vCp7rBL1oVOa0ildw=; fh=uTF/VfpCAq2GtcL5NdCKul3VKQPlBSDYmUlZE/0CcYM=; b=v8VqSymNwNDB1xhp3PJAVgci8v22MLN5INpN6eWhq+JXZXUps+0I70RZNsCdN/n4Yb JPMuJhh7u1UO4K88YunBF6n4s1wpJunRj1gaTGD/YCZi+UgUVARe2ejBGdlyUN+YfHaE tfvsti5vPnMoQNZKFKYFvQCO/My9nRGZT4GnZuzl9XYhpZUhe1mBxat66nKxiJS+PffW Gv3cBpSj2jUe7Ge0vXVrBchTkqMq+9d3UDDTmEknlwLp7IflvmNIeA/E5+NIFcTlmXr+ ETRrX7BeaHlPDHatn7vK2q7BSJeVCVAM6zv2O5KxmhwG4GYbtUQgegM2WZD+xyoFh3If u8iA== 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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id bn6-20020a05622a1dc600b0042393f0de94si5098982qtb.503.2023.12.01.22.54.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 22:54:12 -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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DA111385B836 for ; Sat, 2 Dec 2023 06:54:08 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-m6020.netease.com (mail-m6020.netease.com [210.79.60.20]) by sourceware.org (Postfix) with ESMTPS id 193223858C98 for ; Sat, 2 Dec 2023 06:53:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 193223858C98 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=stu.xupt.edu.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=stu.xupt.edu.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 193223858C98 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=210.79.60.20 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500041; cv=none; b=agDCe5dJwviayRjfngwxMbJwq+Ik9F8RnlNd5ueLOXxDtxKzcDzwX6t6nU8oVwhDRa93wd0K5vmycUSmVzwVOyFTbjJZrWRdX5XfgMurOUsTxk55pQUZ/5ntGyhhMjA5dELjYvQb4JL/haS01x0IB4SmoLFILyBKY8cYYxBExnw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500041; c=relaxed/simple; bh=wX0Q0sennreDJbi/b58CzNoiVQZocMTa54kV1Lk58p0=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=InCu+zdw0g9Y3uOxW+V66Wax8GTsDa7QI/SCKnNRHrauXfZKxipiG5KPJ2GMtWxl+srbOJ7clvwzeoxVMzLGFcJRBUACP7WmJSPS6se8cZiOpnQ6heYOFFpPgr8gK1R+agsfGu5Vmz+k6B2UW4cg2+E+f9qTo+rGTocMOchT+Fc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from ubuntu.localdomain (unknown [223.104.204.129]) by mail-m121144.qiye.163.com (Hmail) with ESMTPA id ED23CAC00BB; Sat, 2 Dec 2023 14:53:50 +0800 (CST) From: changjiachen To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, cailulu@loongson.cn, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn, Lazy_Linux@126.com, mengqinggang@loongson.cn, changjiachen Subject: [PATCH v2 3/5] LoongArch: opcodes: Add support for tls le relax. Date: Sat, 2 Dec 2023 14:53:32 +0800 Message-Id: <20231202065334.25904-4-changjiachen@stu.xupt.edu.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> References: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> MIME-Version: 1.0 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVkaQ0gYVh4aTU1KGEJMTklJT1UTARMWGhIXJBQOD1 lXWRgSC1lBWUlJSFVKS09VSUtPVUpJQllXWRYaDxIVHRRZQVlPS0hVSkpLSEpDVUpLS1VLWQY+ X-HM-Tid: 0a8c294e12c0b039kuuued23cac00bb X-HM-MType: 10 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6ME06SAw5TDw2AgsqTx4MFyIR LwgwCSpVSlVKTEtKTktLS0hJT09PVTMWGhIXVRgTGhUcERIaGBMeFTsIDw5VAw4LD1UeHw5VGBVF WVdZEgtZQVlJSUhVSktPVUlLT1VKSUJZV1kIAVlBSU9OTjcG X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 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: 1784152119003543853 X-GMAIL-MSGID: 1784152119003543853 Add new opcode for tls le relax. opcode/ChangeLog: * loongarch-opc.c: Add new loongarch opcode. --- opcodes/loongarch-opc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/opcodes/loongarch-opc.c b/opcodes/loongarch-opc.c index 82b88bdad2a..e9ced5383e5 100644 --- a/opcodes/loongarch-opc.c +++ b/opcodes/loongarch-opc.c @@ -399,6 +399,7 @@ static struct loongarch_opcode loongarch_fix_opcodes[] = { 0x000c0000, 0xfffc0000, "bytepick.d", "r0:5,r5:5,r10:5,u15:3", 0, 0, 0, 0 }, { 0x00100000, 0xffff8000, "add.w", "r0:5,r5:5,r10:5", 0, 0, 0, 0 }, { 0x00108000, 0xffff8000, "add.d", "r0:5,r5:5,r10:5", 0, 0, 0, 0 }, + { 0x00108000, 0xffff8000, "add.d", "r0:5,r5:5,r10:5,s10:5", 0, 0, 0, 0 }, { 0x00110000, 0xffff8000, "sub.w", "r0:5,r5:5,r10:5", 0, 0, 0, 0 }, { 0x00118000, 0xffff8000, "sub.d", "r0:5,r5:5,r10:5", 0, 0, 0, 0 }, { 0x00120000, 0xffff8000, "slt", "r0:5,r5:5,r10:5", 0, 0, 0, 0 }, From patchwork Sat Dec 2 06:53:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: changjiachen X-Patchwork-Id: 172743 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp1618794vqy; Fri, 1 Dec 2023 22:54:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IGFXeyXL/argT3cQXe3vQUJkgTHxw3nsSrRgKNNza1C0GI78zWwXK5pWQStML2k5/2uY1LW X-Received: by 2002:ac8:7f52:0:b0:425:4054:bc48 with SMTP id g18-20020ac87f52000000b004254054bc48mr903040qtk.36.1701500068034; Fri, 01 Dec 2023 22:54:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701500068; cv=pass; d=google.com; s=arc-20160816; b=QNYGSr9ngd6SSfoyYNpsqjSjTSrbL7cXlXYzTbm8/N4OtDTWaHWP0i5tMbZW5LqSNK 5TJDTWm0g+nCSGYrtZVrgctXU55hcB0zsilbeZzKNGw9X0G/fh9xh1vB7lAbgL2n/kNw fhH5ar+FifUUVapLmoRw/c5I02YB9oRT4alcmaCQmPONee4MLBe57QjJfiG5taziRJDN dO0Ozks7stz+APclTbh5RCfACm4CwC+Bq4UtIhCuWIEJjUAH5DOimPlUx+ypfw7EPc3K Ba2BY4889Pmp6yX9MtFqeoURxsPCN4qMFEbhhgUBdtEKpuU1Sh9K2m48ghWibK5EVtSJ xbxw== 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=LR8P1ETpShIu+0CCDcI5Jz66AvJjIiwox/ElfQPWVPc=; fh=uTF/VfpCAq2GtcL5NdCKul3VKQPlBSDYmUlZE/0CcYM=; b=0AOq5NGxVClk9glS4R2I3OEUaCyd8uXmIDAO7bOyNRsyy6jVmAZOY4KanmMMu9VOon 85TZjTnE/ofjKUB+bQak2h+tALC+stpgaWPp54Vmob4rdwbsEDYkH4DuwRWc67bn3bq1 4Vap/csGXNg5nEhqneYjpjxA7QFWZY3fLrVvo1izvD1+5LqGAmSYV/ID+iPZyDupPXUR uUlxz+cMYFuXcVGYbI6xKr5Xb4Hdc6ywbElojizTvHD+UwsCV6rO3c5BR2WKmiUmUt61 iKgzjFxN5aPf96Gi+GMUyhEaAdGaVby+v2heSrPi8QkCx2EWinedefQ4ubDUMtTTs+UU Inkg== 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 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id 6-20020ac85646000000b004238fd5a9bcsi4561644qtt.765.2023.12.01.22.54.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 22:54:28 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 19AB3386185C for ; Sat, 2 Dec 2023 06:54:24 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-m1286.netease.com (mail-m1286.netease.com [103.209.128.6]) by sourceware.org (Postfix) with ESMTPS id 0BD3838582B4 for ; Sat, 2 Dec 2023 06:53:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0BD3838582B4 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=stu.xupt.edu.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=stu.xupt.edu.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0BD3838582B4 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=103.209.128.6 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500041; cv=none; b=uTdJOehNgIGGsHaK0yD2kftTKnGQSjXGZre5XF+KWQ9eqYFwvoHow9oMIePwv4TNb0VpT85kZKlphRm0xmLmLqjUNUTTlgZgePAmGF9yxzlGyt8/xiBsfKVHgPuwOn91LXIBGDaMzEhXksk+0h6eb3ZhUOcZVBqMHQHQRag0pqc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500041; c=relaxed/simple; bh=XAC9CSnbzX8BRzCplsfxFxYI9G5QNHGR+3tMeU0T2wg=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=OOP1hoxCz7LIHcwpAfxTxOhHGfdpATkysS+JHWuHQe85jVpy2maj4UmphDfkgFvtiC/by3UKMAwm6BEtzEZ2sk3URRnbzc6Y4cW1yqyOcT8o6STiZNHH3S/5TCD6HbGVkOXPfCTkGR7sktA9xgu9r6kdCDuHE/Yz4IY5kVLflxg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from ubuntu.localdomain (unknown [223.104.204.129]) by mail-m121144.qiye.163.com (Hmail) with ESMTPA id 55BA6AC00C8; Sat, 2 Dec 2023 14:53:53 +0800 (CST) From: changjiachen To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, cailulu@loongson.cn, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn, Lazy_Linux@126.com, mengqinggang@loongson.cn, changjiachen Subject: [PATCH v2 4/5] LoongArch: gas: Add support for tls le relax. Date: Sat, 2 Dec 2023 14:53:33 +0800 Message-Id: <20231202065334.25904-5-changjiachen@stu.xupt.edu.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> References: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> MIME-Version: 1.0 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVkZT0NCVkpLSR1LHUlPGhhMHlUTARMWGhIXJBQOD1 lXWRgSC1lBWUlJSFVKS09VSUtPVUpJQllXWRYaDxIVHRRZQVlPS0hVSkpLSEpDVUpLS1VLWQY+ X-HM-Tid: 0a8c294e1c01b039kuuu55ba6ac00c8 X-HM-MType: 10 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Pgg6Ngw5KjwyLAshTx0sFyEr LQkKCwtVSlVKTEtKTktLS0hPTUtPVTMWGhIXVRgTGhUcERIaGBMeFTsIDw5VAw4LD1UeHw5VGBVF WVdZEgtZQVlJSUhVSktPVUlLT1VKSUJZV1kIAVlBTk5MTjcG X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 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: 1784152135297885244 X-GMAIL-MSGID: 1784152135297885244 Add tls le relax related relocs support and testsuites in gas. The main test is three new relocation items, R_LARCH_TLS_LE_ADD_R, R_LARCH_TLS_LE_HI20_R, R_LARCH_TLS_LE_LO12_R can be generated properly. gas/ChangeLog: * config/tc-loongarch.c: (loongarch_args_parser_can_match_arg_helper): Add support for relax. * gas/testsuite/gas/loongarch/reloc.d: Likewise. * gas/testsuite/gas/loongarch/reloc.s: Likewise. --- gas/config/tc-loongarch.c | 12 ++++++++++-- gas/testsuite/gas/loongarch/reloc.d | 18 ++++++++++++++++++ gas/testsuite/gas/loongarch/reloc.s | 11 +++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c index d1ce111c186..71bce1b85dc 100644 --- a/gas/config/tc-loongarch.c +++ b/gas/config/tc-loongarch.c @@ -680,9 +680,8 @@ loongarch_args_parser_can_match_arg_helper (char esc_ch1, char esc_ch2, as_fatal ( _("not support reloc bit-field\nfmt: %c%c %s\nargs: %s"), esc_ch1, esc_ch2, bit_field, arg); - if (ip->reloc_info[0].type >= BFD_RELOC_LARCH_B16 - && ip->reloc_info[0].type < BFD_RELOC_LARCH_64_PCREL) + && ip->reloc_info[0].type < BFD_RELOC_UNUSED) { /* As we compact stack-relocs, it is no need for pop operation. But break out until here in order to check the imm field. @@ -690,6 +689,15 @@ loongarch_args_parser_can_match_arg_helper (char esc_ch1, char esc_ch2, ip->reloc_num += reloc_num; reloc_type = ip->reloc_info[0].type; + if (LARCH_opts.relax + && (BFD_RELOC_LARCH_TLS_LE_HI20_R == reloc_type + || BFD_RELOC_LARCH_TLS_LE_LO12_R == reloc_type + || BFD_RELOC_LARCH_TLS_LE_ADD_R == reloc_type)) + { + ip->reloc_info[ip->reloc_num].type = BFD_RELOC_LARCH_RELAX; + ip->reloc_info[ip->reloc_num].value = const_0; + ip->reloc_num++; + } if (LARCH_opts.relax && ip->macro_id && (BFD_RELOC_LARCH_PCALA_HI20 == reloc_type || BFD_RELOC_LARCH_PCALA_LO12 == reloc_type diff --git a/gas/testsuite/gas/loongarch/reloc.d b/gas/testsuite/gas/loongarch/reloc.d index c3820c55f98..0458830f30b 100644 --- a/gas/testsuite/gas/loongarch/reloc.d +++ b/gas/testsuite/gas/loongarch/reloc.d @@ -165,3 +165,21 @@ Disassembly of section .text: [ ]+134:[ ]+R_LARCH_TLS_LE64_LO20[ ]+TLSL1\+0x8 [ ]+138:[ ]+03000085[ ]+lu52i.d[ ]+\$a1,[ ]+\$a0,[ ]+0 [ ]+138:[ ]+R_LARCH_TLS_LE64_HI12[ ]+TLSL1\+0x8 +[ ]+13c:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0 +[ ]+13c:[ ]+R_LARCH_TLS_LE_HI20_R[ ]+TLSL1 +[ ]+13c:[ ]+R_LARCH_RELAX[ ]+\*ABS\* +[ ]+140:[ ]+001090a5[ ]+add.d[ ]+\$a1,[ ]+\$a1,[ ]+\$a0 +[ ]+140:[ ]+R_LARCH_TLS_LE_ADD_R[ ]+TLSL1 +[ ]+140:[ ]+R_LARCH_RELAX[ ]+\*ABS\* +[ ]+144:[ ]+29800085[ ]+st.w[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+144:[ ]+R_LARCH_TLS_LE_LO12_R[ ]+TLSL1 +[ ]+144:[ ]+R_LARCH_RELAX[ ]+\*ABS\* +[ ]+148:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0 +[ ]+148:[ ]+R_LARCH_TLS_LE_HI20_R[ ]+TLSL1\+0x8 +[ ]+148:[ ]+R_LARCH_RELAX[ ]+\*ABS\* +[ ]+14c:[ ]+001090a5[ ]+add.d[ ]+\$a1,[ ]+\$a1,[ ]+\$a0 +[ ]+14c:[ ]+R_LARCH_TLS_LE_ADD_R[ ]+TLSL1\+0x8 +[ ]+14c:[ ]+R_LARCH_RELAX[ ]+\*ABS\* +[ ]+150:[ ]+29800085[ ]+st.w[ ]+\$a1,[ ]+\$a0,[ ]+0 +[ ]+150:[ ]+R_LARCH_TLS_LE_LO12_R[ ]+TLSL1\+0x8 +[ ]+150:[ ]+R_LARCH_RELAX[ ]+\*ABS\* diff --git a/gas/testsuite/gas/loongarch/reloc.s b/gas/testsuite/gas/loongarch/reloc.s index a67fecd9429..182d7f81c71 100644 --- a/gas/testsuite/gas/loongarch/reloc.s +++ b/gas/testsuite/gas/loongarch/reloc.s @@ -142,3 +142,14 @@ lu12i.w $r4,%le_hi20(TLSL1 + 0x8) ori $r5,$r4,%le_lo12(TLSL1 + 0x8) lu32i.d $r4,%le64_lo20(TLSL1 + 0x8) lu52i.d $r5,$r4,%le64_hi12(TLSL1 + 0x8) + + +/* New TLS Insn. */ +lu12i.w $r4,%le_hi20_r(TLSL1) +add.d $r5,$r5,$r4,%tls_le_add_r(TLSL1) +st.w $r5,$r4,%le_lo12_r(TLSL1) + +/* New TLS Insn with addend. */ +lu12i.w $r4,%le_hi20_r(TLSL1 + 0x8) +add.d $r5,$r5,$r4,%tls_le_add_r(TLSL1 + 0x8) +st.w $r5,$r4,%le_lo12_r(TLSL1 + 0x8) From patchwork Sat Dec 2 06:53:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: changjiachen X-Patchwork-Id: 172746 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp1619021vqy; Fri, 1 Dec 2023 22:55:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IH8gODFDCHan+ZAmNnoFtlKjIpoCfSPGCvhiXxi9J6CGyQXeNyxb/c6Uy+d3l4DE2VAp+oc X-Received: by 2002:ac8:7f11:0:b0:425:4554:ee53 with SMTP id f17-20020ac87f11000000b004254554ee53mr225310qtk.64.1701500122264; Fri, 01 Dec 2023 22:55:22 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701500122; cv=pass; d=google.com; s=arc-20160816; b=lkC4ZFvH4HzZPyQ2BlytmTNpc8U8ic6mAC//cQdum/NTruscubVbaQBnO2k3s8RP7J hhIyVqy10KrAi/YzIMV3xOPVxKpABS5XMomoqn1j3Q2G9o1r55dxWJHwbOHr8myqA/rW u/76KoExL3jkRYsXPVGWE9ujlrihrtlzE2GQS3djEeHLCTNC2ISZLqCVAaBupO1A2ksu 5AzwWqZwgSXrCVMIKZknOjd47Sc5djehn4NuUgvzjtC7wcMB6zpXn4HBVM7EcuuOJMpA YwiYG492MICgxHMDDViwtjSUA3X9blZKFc3+q5f5JKLyzhcDmQqh/XSXijlPcui5ykFw ZVDw== 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=4eS8b/jgEjtXTc7J3HNOqPY7OMNsZPuu8JtZ9+8NLsI=; fh=uTF/VfpCAq2GtcL5NdCKul3VKQPlBSDYmUlZE/0CcYM=; b=PGwJYIMKap3QkCAKxvMNSqHQFrXIXBaU/DQakr+mtzaVPtDB5JF73Y5pbgeAnrJ5zz 2z7iszkEtY2ga568VviyJodPoDBZjhq5sACCmaQ+2X06AF62SnN4W1JeDHAy7Q/nLfff KEHLIGMevCpPwELtXPzktpnYX3AuJTkzJJ6jkifwAYQF7pPpTvZNUKFcav3dkLMwb04d H8dJwHs6siogtpfjHulD8vDIw6acLQFwzuU1wPVM/5UyMr3AIL44OV5oel9Oed+X9SCL Fp96x9qkx5SiGVgWLeyiq1gOJnvfQN+wgYKTJLQoPu0KUDMYJua8mhj1d9G6WfAFSj5g 7SLg== 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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id ca10-20020a05622a1f0a00b00423edbc9e4csi5603751qtb.609.2023.12.01.22.55.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 22:55:22 -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"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xupt.edu.cn Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 15B133861847 for ; Sat, 2 Dec 2023 06:55:12 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-m92251.xmail.ntesmail.com (mail-m92251.xmail.ntesmail.com [103.126.92.251]) by sourceware.org (Postfix) with ESMTPS id C275A3857C4B for ; Sat, 2 Dec 2023 06:54:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C275A3857C4B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=stu.xupt.edu.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=stu.xupt.edu.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C275A3857C4B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=103.126.92.251 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500044; cv=none; b=vdq1bkm2wTAJzCT7vi9c5hFigmdjdjKn6pgDw0hB91ehAmH4v8UUlyHux7v//tZ+hdNAV1b/d3YnKMqxEMtkcu8AkbJzjsZYLz9Pc5NAeBwB+YL/QXHi/wP/1ORFN2f2o6XdOVSH5R0KrV2X3aBYgf68RLjBE9YvLIkFqudh0R8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701500044; c=relaxed/simple; bh=uBPgK62wOJ/HfJEE7SmuLAk5RNcXcQlUr4zyJgDnnLs=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=aSK/QWetelpUSAdPMm/hJKhFUL5yQu9DWEO4sEGKJgXROAVhOtL6uqQuubM09kKLYsVuZMDhBJhtM743A5IRxPxOaSjk0GrF6Vxu5EDkDbOnbqyMBcXbfHNcN546ZiXEuJCrR2D0a/cvCemPl8j68v5RbhJayLLs5ChiCCsbkgc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from ubuntu.localdomain (unknown [223.104.204.129]) by mail-m121144.qiye.163.com (Hmail) with ESMTPA id 6F45AAC008D; Sat, 2 Dec 2023 14:53:55 +0800 (CST) From: changjiachen To: binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, xry111@xry111.site, i.swmail@xen0n.name, maskray@google.com, cailulu@loongson.cn, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn, Lazy_Linux@126.com, mengqinggang@loongson.cn, changjiachen Subject: [PATCH v2 5/5] LoongArch: ld: Add support for tls le relax. Date: Sat, 2 Dec 2023 14:53:34 +0800 Message-Id: <20231202065334.25904-6-changjiachen@stu.xupt.edu.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> References: <20231202065334.25904-1-changjiachen@stu.xupt.edu.cn> MIME-Version: 1.0 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVlDHR8YVh0eQkkZGR5DGUhISVUTARMWGhIXJBQOD1 lXWRgSC1lBWUlJSFVKS09VSUtPVUpJQllXWRYaDxIVHRRZQVlPS0hVSkpLSEpDVUpLS1VLWQY+ X-HM-Tid: 0a8c294e2453b039kuuu6f45aac008d X-HM-MType: 10 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6MC46PAw6PjwyNAsdMBgUFxoJ Ix4aCgJVSlVKTEtKTktLS0hNQ05KVTMWGhIXVRgTGhUcERIaGBMeFTsIDw5VAw4LD1UeHw5VGBVF WVdZEgtZQVlJSUhVSktPVUlLT1VKSUJZV1kIAVlBSklNTko3Bg++ X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, 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 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: 1784152192170217947 X-GMAIL-MSGID: 1784152192170217947 Add tls le relax related testsuites in ld. The new test cases are mainly tested in three aspects: 1. tls le relax function correctness test. 2. tls le relax boundary check test. 3. tls le relax function compatibility test. ld/testsuite/ChangeLog: * ld/testsuite/ld-loongarch-elf/relax.exp: Modify test. * ld/testsuite/ld-loongarch-elf/old-tls-le.s: New test. * ld/testsuite/ld-loongarch-elf/relax-bound-check-tls-le.s: Likewise. * ld/testsuite/ld-loongarch-elf/relax-check-tls-le.s: Likewise. * ld/testsuite/ld-loongarch-elf/relax-tls-le.s: Likewise. * ld/testsuite/ld-loongarch-elf/tls-relax-compatible-check-old.s: Likewise. --- ld/testsuite/ld-loongarch-elf/old-tls-le.s | 19 +++ .../relax-bound-check-tls-le.s | 48 ++++++ .../ld-loongarch-elf/relax-check-tls-le.s | 43 ++++++ ld/testsuite/ld-loongarch-elf/relax-tls-le.s | 17 ++ ld/testsuite/ld-loongarch-elf/relax.exp | 146 +++++++++++++++++- .../tls-relax-compatible-check-old.s | 39 +++++ 6 files changed, 311 insertions(+), 1 deletion(-) create mode 100644 ld/testsuite/ld-loongarch-elf/old-tls-le.s create mode 100644 ld/testsuite/ld-loongarch-elf/relax-bound-check-tls-le.s create mode 100644 ld/testsuite/ld-loongarch-elf/relax-check-tls-le.s create mode 100644 ld/testsuite/ld-loongarch-elf/relax-tls-le.s create mode 100644 ld/testsuite/ld-loongarch-elf/tls-relax-compatible-check-old.s diff --git a/ld/testsuite/ld-loongarch-elf/old-tls-le.s b/ld/testsuite/ld-loongarch-elf/old-tls-le.s new file mode 100644 index 00000000000..290c4c61c18 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/old-tls-le.s @@ -0,0 +1,19 @@ + .text + .globl aa + .section .tbss,"awT",@nobits + .align 2 + .type aa, @object + .size aa, 4 +aa: + .space 4 + .text + .align 2 + .globl main + .type main, @function +main: + lu12i.w $r12,%le_hi20(aa) + ori $r12,$r12,%le_lo12(aa) + add.d $r12,$r12,$r2 + addi.w $r13,$r0,2 # 0x2 + stptr.w $r13,$r12,0 + diff --git a/ld/testsuite/ld-loongarch-elf/relax-bound-check-tls-le.s b/ld/testsuite/ld-loongarch-elf/relax-bound-check-tls-le.s new file mode 100644 index 00000000000..55e05fe12c2 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/relax-bound-check-tls-le.s @@ -0,0 +1,48 @@ + .text + .globl count1 + .section .tbss,"awT",@nobits + .align 2 + .type count1, @object + .size count1, 4 +count1: + .space 0x400 + .globl count2 + .align 2 + .type count2, @object + .size count2, 4 +count2: + .space 0x400 + .globl count3 + .align 2 + .type count3, @object + .size count3, 4 +count3: + .space 0x400 + .globl count4 + .align 2 + .type count4, @object + .size count4, 4 +count4: + .space 4 + .text + .align 2 + .globl main + .type main, @function +main: + lu12i.w $r12,%tls_le_hi20(count1) + add.d $r12,$r12,$r2,%tprel_add(count1) + addi.w $r13,$r0,1 # 0x1 + st.w $r13,$r12,%tls_le_lo12(count1) + lu12i.w $r12,%tls_le_hi20(count2) + add.d $r12,$r12,$r2,%tprel_add(count2) + addi.w $r13,$r0,2 # 0x2 + st.w $r13,$r12,%tls_le_lo12(count2) + lu12i.w $r12,%tls_le_hi20(count3) + add.d $r12,$r12,$r2,%tprel_add(count3) + addi.w $r13,$r0,3 # 0x3 + st.w $r13,$r12,%tls_le_lo12(count3) + lu12i.w $r12,%tls_le_hi20(count4) + add.d $r12,$r12,$r2,%tprel_add(count4) + addi.w $r13,$r0,4 # 0x4 + st.w $r13,$r12,%tls_le_lo12(count4) + diff --git a/ld/testsuite/ld-loongarch-elf/relax-check-tls-le.s b/ld/testsuite/ld-loongarch-elf/relax-check-tls-le.s new file mode 100644 index 00000000000..fe564dd49e0 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/relax-check-tls-le.s @@ -0,0 +1,43 @@ + .file "tls_relax_compatible_check_new.c" + .text + .globl new + .section .tbss,"awT",@nobits + .align 2 + .type new, @object + .size new, 4 +new: + .space 4 + .text + .align 2 + .globl main + .type main, @function +main: +.LFB0 = . + .cfi_startproc + addi.d $r3,$r3,-16 + .cfi_def_cfa_offset 16 + st.d $r1,$r3,8 + stptr.d $r22,$r3,0 + .cfi_offset 1, -8 + .cfi_offset 22, -16 + addi.d $r22,$r3,16 + .cfi_def_cfa 22, 0 + bl %plt(old) + lu12i.w $r12,%tls_le_hi20(new) + add.d $r12,$r12,$r2,%tprel_add(new) + addi.w $r13,$r0,2 # 0x2 + st.w $r13,$r12,%tls_le_lo12(new) + or $r12,$r0,$r0 + or $r4,$r12,$r0 + ld.d $r1,$r3,8 + .cfi_restore 1 + ldptr.d $r22,$r3,0 + .cfi_restore 22 + addi.d $r3,$r3,16 + .cfi_def_cfa_register 3 + jr $r1 + .cfi_endproc +.LFE0: + .size main, .-main + .ident "GCC: (GNU) 14.0.0 20230526 (experimental)" + .section .note.GNU-stack,"",@progbits diff --git a/ld/testsuite/ld-loongarch-elf/relax-tls-le.s b/ld/testsuite/ld-loongarch-elf/relax-tls-le.s new file mode 100644 index 00000000000..1f8dcc3edda --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/relax-tls-le.s @@ -0,0 +1,17 @@ + .text + .globl a + .section .tbss,"awT",@nobits + .align 2 + .type a, @object + .size a, 4 +a: + .space 4 + .text + .align 2 + .globl main + .type main, @function +main: + lu12i.w $r12,%tls_le_hi20(a) + add.d $r12,$r12,$r2,%tprel_add(a) + addi.w $r13,$r0,1 # 0x1 + st.w $r13,$r12,%tls_le_lo12(a) diff --git a/ld/testsuite/ld-loongarch-elf/relax.exp b/ld/testsuite/ld-loongarch-elf/relax.exp index 7ff876d7914..1520cfc0dba 100644 --- a/ld/testsuite/ld-loongarch-elf/relax.exp +++ b/ld/testsuite/ld-loongarch-elf/relax.exp @@ -33,8 +33,90 @@ if [istarget loongarch64-*-*] { "relax" \ ] \ ] + set tls_relax_builds [list \ + [list \ + "tls_relax_builds" \ + "" \ + "" \ + {relax-tls-le.s} \ + {} \ + "relax-tls-le" \ + ] \ + ] + set tls_no_relax_builds [list \ + [list \ + "tls_no_relax_builds" \ + "-Wl,--no-relax" \ + "" \ + {relax-tls-le.s} \ + {} \ + "no-relax-tls-le" \ + ] \ + ] + + set relax_bound_check [list \ + [list \ + "relax_bound_check" \ + "" \ + "" \ + {relax-bound-check-tls-le.s} \ + {} \ + "relax-bound-check-tls-le" \ + ] \ + ] + set no_relax_bound_check [list \ + [list \ + "no_relax_bound_check" \ + "-Wl,--no-relax" \ + "" \ + {relax-bound-check-tls-le.s} \ + {} \ + "no-relax-bound-check-tls-le" \ + ] \ + ] + + set old_tls_le [list \ + [list \ + "old_tls_le" \ + "" \ + "" \ + {old-tls-le.s} \ + {} \ + "old-tls-le" \ + ] \ + ] + + set relax_compatible [list \ + [list \ + "relax_compatible" \ + "" \ + "" \ + {relax-check-tls-le.s tls-relax-compatible-check-old.s} \ + {} \ + "realx-compatible" \ + ] \ + ] + + set no_relax_compatible [list \ + [list \ + "no_relax_compatible" \ + "-Wl,--no-relax" \ + "" \ + {relax-check-tls-le.s tls-relax-compatible-check-old.s} \ + {} \ + "no-realx-compatible" \ + ] \ + ] + run_cc_link_tests $pre_builds + run_cc_link_tests $tls_relax_builds + run_cc_link_tests $tls_no_relax_builds + run_cc_link_tests $relax_bound_check + run_cc_link_tests $no_relax_bound_check + run_cc_link_tests $old_tls_le + run_cc_link_tests $relax_compatible + run_cc_link_tests $no_relax_compatible if [file exist "tmpdir/relax"] { set objdump_output [run_host_cmd "objdump" "-d tmpdir/relax"] @@ -44,8 +126,70 @@ if [istarget loongarch64-*-*] { fail "loongarch relax" } } - } + if [file exist "tmpdir/relax-tls-le"] { + set objdump_output1 [run_host_cmd "objdump" "-d tmpdir/relax-tls-le"] + if { [ regexp ".addi.*st.*" $objdump_output1] } { + pass "loongarch relax success" + } { + fail "loongarch relax fail" + } + } + if [file exist "tmpdir/no-relax-tls-le"] { + set objdump_output2 [run_host_cmd "objdump" "-d tmpdir/no-relax-tls-le"] + if { [ regexp ".*lu12i.*add.*addi.*st.*" $objdump_output2] } { + pass "loongarch no-relax success" + } { + fail "loongarch no-relax fail" + } + } + if [file exist "tmpdir/old-tls-le"] { + set objdump_output3 [run_host_cmd "objdump" "-d tmpdir/old-tls-le"] + if { [ regexp ".*lu12i.*ori.*add.*addi.*stptr.*" $objdump_output3] } { + pass "loongarch old tls le success" + } { + fail "loongarch old tls le fail" + } + + } + + if [file exist "tmpdir/realx-compatible"] { + if { [catch {exec tmpdir/realx-compatible} number]} { + fail "loongarch tls le relax compatible check fail" + } { + pass "loongarch tls le relax compatible check success" + } + } + + if [file exist "tmpdir/no-realx-compatible"] { + if { [catch {exec tmpdir/no-realx-compatible} number] } { + fail "loongarch tls le no-relax compatible check fail" + } { + pass "loongarch tls le no-relax compatible check success" + } + } + + + if [file exist "tmpdir/relax-bound-check-tls-le"] { + set objdump_output4 [run_host_cmd "objdump" "-d tmpdir/relax-bound-check-tls-le"] + if { [ regexp ".*lu12i.*add.*addi.*st.*" $objdump_output4] && \ + [ regexp ".addi.*st.*" $objdump_output4] } { + pass "loongarch no-relax success" + } { + fail "loongarch no-relax fail" + } + + } + if [file exist "tmpdir/no-relax-bound-check-tls-le"] { + set objdump_output5 [run_host_cmd "objdump" "-d tmpdir/no-relax-bound-check-tls-le"] + if { [ regexp ".*addi.*st.*" $objdump_output4] } { + pass "loongarch no-relax success" + } { + fail "loongarch no-relax fail" + } + } + + } run_ld_link_tests \ [list \ [list \ diff --git a/ld/testsuite/ld-loongarch-elf/tls-relax-compatible-check-old.s b/ld/testsuite/ld-loongarch-elf/tls-relax-compatible-check-old.s new file mode 100644 index 00000000000..9adb657a87d --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tls-relax-compatible-check-old.s @@ -0,0 +1,39 @@ + .file "tls_relax_compatible_check_old.c" + .text + .globl older + .section .tbss,"awT",@nobits + .align 2 + .type older, @object + .size older, 4 +older: + .space 4 + .text + .align 2 + .globl old + .type old, @function +old: +.LFB0 = . + .cfi_startproc + addi.d $r3,$r3,-16 + .cfi_def_cfa_offset 16 + st.d $r22,$r3,8 + .cfi_offset 22, -8 + addi.d $r22,$r3,16 + .cfi_def_cfa 22, 0 + lu12i.w $r12,%le_hi20(older) + ori $r12,$r12,%le_lo12(older) + add.d $r12,$r12,$r2 + addi.w $r13,$r0,1 # 0x1 + stptr.w $r13,$r12,0 + nop + or $r4,$r12,$r0 + ld.d $r22,$r3,8 + .cfi_restore 22 + addi.d $r3,$r3,16 + .cfi_def_cfa_register 3 + jr $r1 + .cfi_endproc +.LFE0: + .size old, .-old + .ident "GCC: (GNU) 13.0.1 20230316 (experimental)" + .section .note.GNU-stack,"",@progbits