From patchwork Thu Aug 17 18:08:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tatsuyuki Ishi X-Patchwork-Id: 135932 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp885226vqi; Thu, 17 Aug 2023 11:11:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEwczoieRaYy6WqIa4cvUdRTlH8LDJwLHca3umVk95A/X2QgsA0Z6cH/iVKevLbbGRJD7Pz X-Received: by 2002:ac2:5f6a:0:b0:4fe:8ba8:16a9 with SMTP id c10-20020ac25f6a000000b004fe8ba816a9mr43146lfc.55.1692295885085; Thu, 17 Aug 2023 11:11:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692295885; cv=none; d=google.com; s=arc-20160816; b=ikOy6qFSRDn6t1wKJnjDCAM1+kB3TT5Egbtbi8tmlo+1PhzpPDqe9j72Sv6o2ZhQh1 7C8Ar4hlm7PlBinvEkNXP6WCSdmf5MNlQQRe6s7pz9efyOErz1gmlwQrMfRYSgmpv0sk 9w0thXqnYiqGEA80cBeHiKon+cTM9KV1sVste6XabC4c51q/tH7hWaIQ7QoEfVjw6w95 80/nuxjL3/lASF0QyMCmlzw0ne7injsZE1WaD/MHjEvvJxad2RXd/SFCtqkXrExp3q5e 8rsFua5SNnGnTjwHn/p7fpgL3V+m7HbWjeq7qqBpm81ZrcM60st3/b4NMBaVO7v7hFIJ ApKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from: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:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=/wIKW/ubIEfaUsGWQZdx94TLSSG26xKVZ4fCtDwJboQ=; fh=RnOK2kMt7+DQSwabMVlm0F5hv9+FMo5J9F5oi1ILKLA=; b=KZNu4nhLS2ntDLDpv1+puq/gq4ltWulrDuxbGSq2+z2QCin58f0QTTAFy9I+EdLIzb Q4MHu01RL1/9r4I35wQKpGTqCF2cYAKxifjMHwl2N7m8CABGpCqZ1BVfF1vkhuVmbd/L SXMmKm/yCnJGQLCm92RqJ+8pIQaJ2owerodpw1gI76p5xpGKN7jUPkwsxZ2gpaODJH5x bCg82KjQj2E/SEaC7WEJQfRduNRcbURai1/aXrtQp5Zw6klgxqbDmZDTZcM2VVFSUxub sXvs6QwaQOKOYfL6AKbOPQTdoNX4Pe0nih5RKt88NiarVyGOVyAHYbH846QYGL1f3ias PULQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=WqrGaQ12; 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=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id i13-20020a170906264d00b00992e9af8186si51860ejc.13.2023.08.17.11.11.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Aug 2023 11:11:25 -0700 (PDT) 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; dkim=pass header.i=@sourceware.org header.s=default header.b=WqrGaQ12; 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=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 740E03830B65 for ; Thu, 17 Aug 2023 18:10:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 740E03830B65 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1692295827; bh=/wIKW/ubIEfaUsGWQZdx94TLSSG26xKVZ4fCtDwJboQ=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=WqrGaQ12YOO286WJ3nuWWzOxx3jkplwwBiHCGHiCcnD0UsRItmWcS1W4hLWc6lvc5 ZBAUKroBTI32a7qLMlN+Y+qdlQ1G+VG1iiUDgRHG2uhemOP0JQmJSLt3KkteT0Kv8l L5Sj7uhMffmIuYRyZm+/JBwSeKYit7EMH2smRbP8= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id 049FA385DC02 for ; Thu, 17 Aug 2023 18:09:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 049FA385DC02 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1bdf1abee23so137615ad.0 for ; Thu, 17 Aug 2023 11:09:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692295764; x=1692900564; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/wIKW/ubIEfaUsGWQZdx94TLSSG26xKVZ4fCtDwJboQ=; b=kLgTF29eFLgudOuNKvY5or/UBNZA+eistmiFh/oauLwWyWM7UrsDpuWJk1vNgQXuuh LtIVyTZ8NqBLyTRm/mgFUKoVN6lx8vK5O+MIo//W0zCmW4jcCkxPYHFO05K8g2wZWTBD fLYfRemNM73wi7jSyrmS4Lg9NNlkWHfWeEJD69ON1dORNwsBWOu0z/pLZtC/Jp6nPc2v Quq1LkeczvoN8rFpIzX03Nq12h117nkEtL1lCuDFGe7RIOr5BRXDdoIBiFx2qKZA9nTN Qg2l5jRTJ4tzw7gy38iOxWt/0CQwZCPUTMNOXn2//FEejs7DIJJOXJfiZ4JF6E7HIR8F QiPg== X-Gm-Message-State: AOJu0Yw7JQOUEF5zKncf9akeK62ff/0bsbpKwD7XEupdNEOBdeVjXKXh IeL+9wXtK0K4U+sNu81SacS1GfqgoeRJ+GZz X-Received: by 2002:a17:902:da88:b0:1bc:496c:8eda with SMTP id j8-20020a170902da8800b001bc496c8edamr132014plx.4.1692295764414; Thu, 17 Aug 2023 11:09:24 -0700 (PDT) Received: from localhost (zz20184013906F627101.userreverse.dion.ne.jp. [111.98.113.1]) by smtp.gmail.com with ESMTPSA id q18-20020a170902dad200b001b892aac5c9sm50318plx.298.2023.08.17.11.09.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Aug 2023 11:09:23 -0700 (PDT) To: binutils@sourceware.org Cc: rui314@gmail.com, ruiu@bluewhale.systems, Tatsuyuki Ishi Subject: [PATCH 3/4] RISC-V: Define and use GOT entry size constants for TLS. Date: Fri, 18 Aug 2023 03:08:36 +0900 Message-ID: <20230817180852.121628-5-ishitatsuyuki@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230817180852.121628-2-ishitatsuyuki@gmail.com> References: <20230817180852.121628-2-ishitatsuyuki@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tatsuyuki Ishi via Binutils From: Tatsuyuki Ishi Reply-To: Tatsuyuki Ishi Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774500850174321211 X-GMAIL-MSGID: 1774500850174321211 As the size calculation is split by global and local symbols, using a shared constant definition for its size improves clarity. --- bfd/elfnn-riscv.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index 02b46835cc7..38883134828 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -301,6 +301,8 @@ riscv_is_insn_reloc (const reloc_howto_type *howto) #define PLT_HEADER_SIZE (PLT_HEADER_INSNS * 4) #define PLT_ENTRY_SIZE (PLT_ENTRY_INSNS * 4) #define GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES +#define TLS_GD_GOT_ENTRY_SIZE (RISCV_ELF_WORD_BYTES * 2) +#define TLS_IE_GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES /* Reserve two entries of GOTPLT for ld.so, one is used for PLT resolver, the other is used for link map. Other targets also reserve one more entry used for runtime profile? */ @@ -1323,7 +1325,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) /* TLS_GD needs two dynamic relocs and two GOT slots. */ if (tls_type & GOT_TLS_GD) { - s->size += 2 * RISCV_ELF_WORD_BYTES; + s->size += TLS_GD_GOT_ENTRY_SIZE; if (need_reloc) htab->elf.srelgot->size += 2 * sizeof (ElfNN_External_Rela); } @@ -1331,14 +1333,14 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) /* TLS_IE needs one dynamic reloc and one GOT slot. */ if (tls_type & GOT_TLS_IE) { - s->size += RISCV_ELF_WORD_BYTES; + s->size += TLS_IE_GOT_ENTRY_SIZE; if (need_reloc) htab->elf.srelgot->size += sizeof (ElfNN_External_Rela); } } else { - s->size += RISCV_ELF_WORD_BYTES; + s->size += GOT_ENTRY_SIZE; if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h) && ! UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)) htab->elf.srelgot->size += sizeof (ElfNN_External_Rela); @@ -1566,20 +1568,20 @@ riscv_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) { if (*local_tls_type & GOT_TLS_GD) { - s->size += 2 * RISCV_ELF_WORD_BYTES; + s->size += TLS_GD_GOT_ENTRY_SIZE; if (bfd_link_dll (info)) srel->size += sizeof (ElfNN_External_Rela); } if (*local_tls_type & GOT_TLS_IE) { - s->size += RISCV_ELF_WORD_BYTES; + s->size += TLS_IE_GOT_ENTRY_SIZE; if (bfd_link_dll (info)) srel->size += sizeof (ElfNN_External_Rela); } } else { - s->size += RISCV_ELF_WORD_BYTES; + s->size += GOT_ENTRY_SIZE; if (bfd_link_pic (info)) srel->size += sizeof (ElfNN_External_Rela); } @@ -2905,7 +2907,7 @@ riscv_elf_relocate_section (bfd *output_bfd, reference's GOT slot follows the GD reference's slots. */ ie_off = 0; if ((tls_type & GOT_TLS_GD) && (tls_type & GOT_TLS_IE)) - ie_off = 2 * GOT_ENTRY_SIZE; + ie_off = TLS_GD_GOT_ENTRY_SIZE; if ((off & 1) != 0) off &= ~1;