This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] [AArch64] Long branch veneer support far symbol defined by --defsym


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

commit f678ded748f994a16e27fc3ac1d1c9451b98f608
Author: Jiong Wang <jiong.wang@arm.com>
Date:   Tue Aug 11 21:55:52 2015 +0100

    [AArch64] Long branch veneer support far symbol defined by --defsym
    
    2015-08-11  Jiong Wang  <jiong.wang@arm.com>
    
    bfd/
      * bfd/elfnn-aarch64.c (aarch64_type_of_stub): New parameter "sym_sec".
      Loose the check for symbol from ABS section.
      (elfNN_aarch64_size_stubs): Pass sym_sec.
    
    ld/testsuite/
      * ld-aarch64/farcall-b-defsym.s: New test.
      * ld-aarch64/farcall-bl-defsym.s: Likewise.
      * ld-aarch64/farcall-b-defsym.d: New expectation.
      * ld-aarch64/farcall-bl-defsym.d: Likewise.

Diff:
---
 bfd/ChangeLog                           | 6 ++++++
 bfd/elfnn-aarch64.c                     | 6 ++++--
 ld/testsuite/ChangeLog                  | 7 +++++++
 ld/testsuite/ld-aarch64/aarch64-elf.exp | 2 ++
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e2378fe..f4acd03 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
 2015-08-11  Jiong Wang  <jiong.wang@arm.com>
 
+	* bfd/elfnn-aarch64.c (aarch64_type_of_stub): New parameter "sym_sec".
+	Loose the check for symbol from ABS section.
+	(elfNN_aarch64_size_stubs): Pass sym_sec.
+
+2015-08-11  Jiong Wang  <jiong.wang@arm.com>
+
 	PR ld/18668
 	* elfnn-aarch64.c (aarch64_type_of_stub): Update destination for
 	calls go through plt stub.
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 097a275..37fe1a6 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -2316,6 +2316,7 @@ static enum elf_aarch64_stub_type
 aarch64_type_of_stub (struct bfd_link_info *info,
 		      asection *input_sec,
 		      const Elf_Internal_Rela *rel,
+		      asection *sym_sec,
 		      unsigned char st_type,
 		      struct elf_aarch64_link_hash_entry *hash,
 		      bfd_vma destination)
@@ -2327,7 +2328,8 @@ aarch64_type_of_stub (struct bfd_link_info *info,
   enum elf_aarch64_stub_type stub_type = aarch64_stub_none;
   bfd_boolean via_plt_p;
 
-  if (st_type != STT_FUNC)
+  if (st_type != STT_FUNC
+      && (sym_sec != bfd_abs_section_ptr))
     return stub_type;
 
   globals = elf_aarch64_hash_table (info);
@@ -3815,7 +3817,7 @@ elfNN_aarch64_size_stubs (bfd *output_bfd,
 
 		  /* Determine what (if any) linker stub is needed.  */
 		  stub_type = aarch64_type_of_stub
-		    (info, section, irela, st_type, hash, destination);
+		    (info, section, irela, sym_sec, st_type, hash, destination);
 		  if (stub_type == aarch64_stub_none)
 		    continue;
 
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 9b16f25..bb6ece6 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,12 @@
 2015-08-11  Jiong Wang  <jiong.wang@arm.com>
 
+	* ld-aarch64/farcall-b-defsym.s: New test.
+	* ld-aarch64/farcall-bl-defsym.s: Likewise.
+	* ld-aarch64/farcall-b-defsym.d: New expectation.
+	* ld-aarch64/farcall-bl-defsym.d: Likewise.
+
+2015-08-11  Jiong Wang  <jiong.wang@arm.com>
+
 	* ld-aarch64/farcall-b-gsym.s: New test.
 	* ld-aarch64/farcall-b-plt.s: Likewise.
 	* ld-aarch64/farcall-bl-plt.s: Likewise.
diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
index b87b198..9554ea1 100644
--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
+++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
@@ -127,6 +127,8 @@ run_dump_test "limit-b"
 run_dump_test "limit-bl"
 run_dump_test "farcall-section"
 run_dump_test "farcall-back"
+run_dump_test "farcall-b-defsym"
+run_dump_test "farcall-bl-defsym"
 run_dump_test "farcall-b-gsym"
 run_dump_test "farcall-b-plt"
 run_dump_test "farcall-bl-plt"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]