public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
From: Szabolcs Nagy <nsz@sourceware.org>
To: bfd-cvs@sourceware.org
Subject: [binutils-gdb] bfd: aarch64: Fix BTI stub optimization PR30957
Date: Thu,  9 Nov 2023 14:59:24 +0000 (GMT)	[thread overview]
Message-ID: <20231109145924.88A563857704@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=98b94ebb3ffe715fddde762bb3ee7fd6d972f233

commit 98b94ebb3ffe715fddde762bb3ee7fd6d972f233
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date:   Fri Oct 13 17:51:15 2023 +0100

    bfd: aarch64: Fix BTI stub optimization PR30957
    
    The instruction was looked up in the wrong input file (file of branch
    source instead of branch target) when optimizing away BTI stubs in
    
      commit 5834f36d93cabf1a8bcc7dd7654141aed3d296bc
      bfd: aarch64: Optimize BTI stubs PR30076
    
    This can cause adding BTI stubs when they are not necessary or removing
    them when they are (the latter is a correctness issue but it is very
    unlikely in practice).
    
    Fixes bug 30957.

Diff:
---
 bfd/elfnn-aarch64.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 4592bd6da27..a0dd17faa7e 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -3675,8 +3675,7 @@ group_sections (struct elf_aarch64_link_hash_table *htab,
 /* True if the inserted stub does not break BTI compatibility.  */
 
 static bool
-aarch64_bti_stub_p (bfd *input_bfd,
-		    struct elf_aarch64_stub_hash_entry *stub_entry)
+aarch64_bti_stub_p (struct elf_aarch64_stub_hash_entry *stub_entry)
 {
   /* Stubs without indirect branch are BTI compatible.  */
   if (stub_entry->stub_type != aarch64_stub_adrp_branch
@@ -3690,7 +3689,7 @@ aarch64_bti_stub_p (bfd *input_bfd,
   file_ptr off = stub_entry->target_value;
   bfd_size_type count = sizeof (loc);
 
-  if (!bfd_get_section_contents (input_bfd, section, loc, off, count))
+  if (!bfd_get_section_contents (section->owner, section, loc, off, count))
     return false;
 
   uint32_t insn = bfd_getl32 (loc);
@@ -4637,7 +4636,7 @@ _bfd_aarch64_add_call_stub_entries (bool *stub_changed, bfd *output_bfd,
 
 	      /* A stub with indirect jump may break BTI compatibility, so
 		 insert another stub with direct jump near the target then.  */
-	      if (need_bti && !aarch64_bti_stub_p (input_bfd, stub_entry))
+	      if (need_bti && !aarch64_bti_stub_p (stub_entry))
 		{
 		  stub_entry->double_stub = true;
 		  htab->has_double_stub = true;

                 reply	other threads:[~2023-11-09 14:59 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231109145924.88A563857704@sourceware.org \
    --to=nsz@sourceware.org \
    --cc=bfd-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).