From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by sourceware.org (Postfix) with ESMTPS id 4AC6B38654AF for ; Tue, 28 Nov 2023 08:51:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4AC6B38654AF Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4AC6B38654AF Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::635 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701161513; cv=none; b=BUJfml/WYqYBLEDKOIzsULgwiqwrmW5b2RQjPr5S+c887pLw/GKd2SleL/atFptR6sxHcYsWAg+aa9dtOkOTL2T3d3dXF5LcKfaFCtPoGwo4DlD1xjjoG/c+rs4tLySreQvEwe3ewz9FgrplZ+hhfZhcBdBX7py1Db4JahFKCuU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701161513; c=relaxed/simple; bh=Z9p44lSh7KnZwbOs7VEarClTbsFM/s335qZfKImwc0U=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=LGu9HvrnnkAW0LzerCR2/kEjSThAERVQX0S6rp2IqAYttrV/qtAb8IeJb1lgWnb/LM8G+RUI51ynWfPAPPAgjjQwsc0onqGwNSdSIYx/C6iWMpg53Hn5KLn2dB61OxCQV5KsZ1NJ0WrhvYxu4xo45Mu1DLPIPZIUP0lJwjY+MiI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-1cfa3fe1701so10009975ad.0 for ; Tue, 28 Nov 2023 00:51:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701161508; x=1701766308; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=niAGTKy6c7g5Q0A7XviNuSL+2D8etf9eJgoNNES3QgA=; b=IoIxumuM7gs2YOvsrGtudh4ENDgz4nS9qjtsgw/jYgOyAGCe5cC4jimGxxx8YUIpTg h1yD81u3xHiByUhKx89B6sp6/zHusp5OhZCgVfupohdxVts+XHtixG3T+k4nzGIH55cq jCX8YZRL4mU6A1KKKSzZHrjxXzoe2yK3gEzZSZUIV5ExyyRVNxCzH3qey+DC/3E3ylcU DYTamL/fBKN73GIrJkYM+hXnW8MUpoMW+bhLjR4j2N3RA7VbRMyoEo/LZN5Uux7hUfqj PnFGlXbC8ndbSJrUC1P1oA2uhYyCUSA/E/rNhwpSkQ2NfJdqQokkyiV+jNLmWqedcKx9 Krmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701161508; x=1701766308; 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=niAGTKy6c7g5Q0A7XviNuSL+2D8etf9eJgoNNES3QgA=; b=jm3el9kEA2Ewy49mh4uDs+jP6U1ddC4MPSJg7WS6H2AwVSfOOKdOFqSUczNU55HpGd PdZVGkLcHnOfJr5wcN7zb+smiVPwwK8HRbAeXxM5bj6O0OQ9y9ME01Wlfk8hHw8/Ofrp Qo56DiC95Ix/3uOVkkFTVieGprnHuQgnKvLtr6thhKtU2tgDOYrGRRLCU7l6fvXffIdd /BWFiEa/fKgYaVjv797zMomGCRwr46Y9y1w3ttEfcvE1W1EPFfNNG4d4ngIfduMDLwEz VIymU173wn7gKm4YXwvRd0aCne9qczYn1iYKwy4PMPVhHjklfhqkc7Lr7xxP219ZHETf R3tg== X-Gm-Message-State: AOJu0Yy9AsCQ7R0Hj+x+JzcltMSYOiJGFuRCK+CMwqqrofnndioKBhB6 QbQGNQET8fr4faUm3PmJSZbCqsLbmat3hrO2 X-Google-Smtp-Source: AGHT+IGUR7T8U5/8fHuAlKigJQrjcfjS/+tWzfgBOGjJVicnZu5GNKmLdrL2Q01Xf+DjKhiJTfCvRA== X-Received: by 2002:a05:6a20:4328:b0:18b:feaf:36da with SMTP id h40-20020a056a20432800b0018bfeaf36damr16901369pzk.2.1701161508336; Tue, 28 Nov 2023 00:51:48 -0800 (PST) Received: from localhost (zz20184013906F627101.userreverse.dion.ne.jp. [111.98.113.1]) by smtp.gmail.com with ESMTPSA id fv22-20020a17090b0e9600b00268b439a0cbsm8614253pjb.23.2023.11.28.00.51.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 00:51:47 -0800 (PST) From: Tatsuyuki Ishi To: binutils@sourceware.org Cc: i@maskray.me, nelson@rivosinc.com, rui314@gmail.com, ruiu@bluewhale.systems, Tatsuyuki Ishi Subject: [PATCH v3 8/9] RISC-V: Add elf_link_hash_entry to relax_func args. Date: Tue, 28 Nov 2023 17:51:08 +0900 Message-ID: <20231128085109.28422-9-ishitatsuyuki@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231128085109.28422-1-ishitatsuyuki@gmail.com> References: <20230817180852.121628-2-ishitatsuyuki@gmail.com> <20231128085109.28422-1-ishitatsuyuki@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.1 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,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: bfd/ * elfnn-riscv.c (riscv_pcgp_hi_reloc): Add a field for hash_entry. (riscv_record_pcgp_hi_reloc): Add argument and record the hash_entry. (_bfd_riscv_relax_*): Add unused hash_entry argument. (_bfd_riscv_relax_pc): Also record the hash_entry, for consistency (but it is not used by the LO reloc handling). (_bfd_riscv_relax_section): Move h to outer scope and pass into relax helpers. --- bfd/elfnn-riscv.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index 1d88ecd53b5..b98264319d8 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -4212,6 +4212,7 @@ struct riscv_pcgp_hi_reloc bfd_vma hi_addr; unsigned hi_sym; asection *sym_sec; + struct elf_link_hash_entry *h; bool undefined_weak; riscv_pcgp_hi_reloc *next; }; @@ -4272,6 +4273,7 @@ static bool riscv_record_pcgp_hi_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off, bfd_vma hi_addend, bfd_vma hi_addr, unsigned hi_sym, asection *sym_sec, + struct elf_link_hash_entry *h, bool undefined_weak) { riscv_pcgp_hi_reloc *new = bfd_malloc (sizeof (*new)); @@ -4282,6 +4284,7 @@ riscv_record_pcgp_hi_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off, new->hi_addr = hi_addr; new->hi_sym = hi_sym; new->sym_sec = sym_sec; + new->h = h; new->undefined_weak = undefined_weak; new->next = p->hi; p->hi = new; @@ -4584,6 +4587,7 @@ riscv_relax_resolve_delete_relocs (bfd *abfd, typedef bool (*relax_func_t) (bfd *, asection *, asection *, struct bfd_link_info *, + struct elf_link_hash_entry *, Elf_Internal_Rela *, bfd_vma, bfd_vma, bfd_vma, bool *, riscv_pcgp_relocs *, @@ -4594,6 +4598,7 @@ typedef bool (*relax_func_t) (bfd *, asection *, asection *, static bool _bfd_riscv_relax_call (bfd *abfd, asection *sec, asection *sym_sec, struct bfd_link_info *link_info, + struct elf_link_hash_entry *_h ATTRIBUTE_UNUSED, Elf_Internal_Rela *rel, bfd_vma symval, bfd_vma max_alignment, @@ -4700,6 +4705,7 @@ _bfd_riscv_relax_lui (bfd *abfd, asection *sec, asection *sym_sec, struct bfd_link_info *link_info, + struct elf_link_hash_entry *_h ATTRIBUTE_UNUSED, Elf_Internal_Rela *rel, bfd_vma symval, bfd_vma max_alignment, @@ -4813,6 +4819,7 @@ _bfd_riscv_relax_tls_le (bfd *abfd, asection *sec, asection *sym_sec ATTRIBUTE_UNUSED, struct bfd_link_info *link_info, + struct elf_link_hash_entry *_h ATTRIBUTE_UNUSED, Elf_Internal_Rela *rel, bfd_vma symval, bfd_vma max_alignment ATTRIBUTE_UNUSED, @@ -4855,6 +4862,7 @@ static bool _bfd_riscv_relax_align (bfd *abfd, asection *sec, asection *sym_sec, struct bfd_link_info *link_info, + struct elf_link_hash_entry *_h ATTRIBUTE_UNUSED, Elf_Internal_Rela *rel, bfd_vma symval, bfd_vma max_alignment ATTRIBUTE_UNUSED, @@ -4915,6 +4923,7 @@ _bfd_riscv_relax_pc (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, asection *sym_sec, struct bfd_link_info *link_info, + struct elf_link_hash_entry *_h, Elf_Internal_Rela *rel, bfd_vma symval, bfd_vma max_alignment, @@ -5035,6 +5044,7 @@ _bfd_riscv_relax_pc (bfd *abfd ATTRIBUTE_UNUSED, symval, ELFNN_R_SYM(rel->r_info), sym_sec, + _h, undefined_weak); /* Delete unnecessary AUIPC and reuse the reloc. */ *again = true; @@ -5124,6 +5134,7 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec, /* Examine and consider relaxing each reloc. */ for (i = 0; i < sec->reloc_count; i++) { + struct elf_link_hash_entry *h = NULL; asection *sym_sec; Elf_Internal_Rela *rel = relocs + i; relax_func_t relax_func; @@ -5226,7 +5237,6 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec, else { unsigned long indx; - struct elf_link_hash_entry *h; indx = ELFNN_R_SYM (rel->r_info) - symtab_hdr->sh_info; h = elf_sym_hashes (abfd)[indx]; @@ -5328,7 +5338,7 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec, symval += sec_addr (sym_sec); - if (!relax_func (abfd, sec, sym_sec, info, rel, symval, + if (!relax_func (abfd, sec, sym_sec, info, h, rel, symval, max_alignment, reserve_size, again, &pcgp_relocs, undefined_weak)) goto fail; -- 2.43.0