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 6D3B83858D28 for ; Sat, 27 Jan 2024 02:07:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6D3B83858D28 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 6D3B83858D28 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=1706321225; cv=none; b=ab3sCCvTwbgp5wxFeUg/eWlmngdYqyRyxy1QSmkabG82pAX76Y1Rpmf0WhSMuxVxkBWO5OtgDwaOFgqeEhutwridfBzqCgh6exCU1IGGoLKK5/38MpGrHkD6Jw9cFjZ7BvtqJcpHVci16fGVBQmP5t1MY/L56g2oYC+r1UjQ1d0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706321225; c=relaxed/simple; bh=FQ/7O7WwLzopK8txjBBAe9kGkb6YJz+lVcOiW7eGDws=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=p5XqBwx4ivQJF+i3o1a+gVf4oPK3BW9t0uy2zLXRN+zeK6wjHw+fZozJGRDL9P5aap6m1Cn4EXP3+cxaU842f2ssOQErGCDkm6t0UHwlSMS78hNrRAcH2+HxZ4zaeMsjzr39VXr0BEVPaDf9WbVjNJZSeoVSjvaLEgrXdB5m/P0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.20.4.103]) by gateway (Coremail) with SMTP id _____8CxLOtBZbRlg7cGAA--.12503S3; Sat, 27 Jan 2024 10:06:57 +0800 (CST) Received: from [10.20.4.103] (unknown [10.20.4.103]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cxbs1BZbRlMvMdAA--.58770S3; Sat, 27 Jan 2024 10:06:57 +0800 (CST) Subject: Re: [PATCH 1/2] LoongArch: Delete extra instructions when TLS type transition To: Xi Ruoyao , binutils@sourceware.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, mengqinggang@loongson.cn, i.swmail@xen0n.name, maskray@google.com, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn References: <20240126135540.3437675-1-cailulu@loongson.cn> From: Lulu Cai Message-ID: <60e6e56c-385f-ee4f-ff74-90cf0b9e753d@loongson.cn> Date: Sat, 27 Jan 2024 10:06:57 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf8Cxbs1BZbRlMvMdAA--.58770S3 X-CM-SenderInfo: xfdlz3tox6z05rqj20fqof0/1tbiAQAIB2WzbWEEAQAXsG X-Coremail-Antispam: 1Uk129KBj93XoW7KFWrAFy5KF4UAFW3tw1DJwc_yoW8tF1rpF 9xA3y5tr4rurn5Wa4UX3yDAFyfKFWkWr48GFnxt3s0yFW5Ar9YgFWjgrn093WfJrs3ur1U XF409asru3WkZagCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUv0b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r106r15McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzV AYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E 14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIx kGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAF wI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r 4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1EksDUU UUU== X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,BODY_8BITS,KAM_DMARC_STATUS,NICE_REPLY_A,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: On 1/27/24 2:22 AM, Xi Ruoyao wrote: > On Fri, 2024-01-26 at 21:55 +0800, Lulu Cai wrote: >> This modification mainly changes the timing of type transition, >> adds relaxation to the old LE instruction sequence, and fixes >> bugs in extreme code models. > I'd suggest to separate the bug fixes (requiring R_LARCH_RELAX for DESC > and IE transition) out into one separate commit and apply it for 2.42. > And the old LE relaxation & instruction deletion should be only applied > for trunk (2.43). We are just toooooo close to the 2.42 release, and > deleting instructions is always "dangerous" even if we do it very > carefully. > > /* snip */ Thanks for reminding. I will send a new patch with a separate bug fix later. >> +loongarch_can_trans_tls (bfd *input_bfd, >> + struct bfd_link_info *info, >> + struct elf_link_hash_entry *h, >> + const Elf_Internal_Rela *rel, >> + unsigned int r_type) >>  { >>    char symbol_tls_type; >>    unsigned int reloc_got_type; >> +  unsigned int r_symndx = ELFNN_R_SYM (rel->r_info); >> >> -  if (! (IS_LOONGARCH_TLS_DESC_RELOC (r_type) >> - || IS_LOONGARCH_TLS_IE_RELOC (r_type))) >> +  /* Only TLS DESC/IE in normal code mode will perform type >> +     transition.  */ >> +  if (! (IS_LOONGARCH_TLS_TRANS_RELOC (r_type) >> +   && ELFNN_R_TYPE ((rel + 1)->r_info) == R_LARCH_RELAX)) > We need to check if rel is the last relocation of the section, or rel + > 1 may be an OOB read. > Agreed, I will pay attention to these later. >>  static bool >>  loongarch_relax_tls_le (bfd *abfd, asection *sec, >> @@ -4165,31 +4198,56 @@ loongarch_relax_tls_le (bfd *abfd, asection *sec, >>    uint32_t insn = bfd_get (32, abfd, contents + rel->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 + 1)->r_info == R_LARCH_RELAX) && (symval < 0x800)) >> +  /* The old LE instruction sequence can be relaxed when the symbol offset >> +     is smaller than the 12-bit range.  */ >> +  if (ELFNN_R_TYPE ((rel + 1)->r_info) == R_LARCH_RELAX && (symval <= 0xfff)) > Likewise. >