* elf64-ppc.c (ppc64_elf_has_small_toc_reloc): New function.
authorAlan Modra <amodra@gmail.com>
Mon, 15 Mar 2010 01:59:57 +0000 (01:59 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 15 Mar 2010 01:59:57 +0000 (01:59 +0000)
* elf64-ppc.h (ppc64_elf_has_small_toc_reloc): Declare.

bfd/ChangeLog
bfd/elf64-ppc.c
bfd/elf64-ppc.h

index e0260f763347107c19df952c2a6395d1fe0dabdb..ae895d98a74f9c8e9e51c463a78a24eb9907e581 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-15  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_has_small_toc_reloc): New function.
+       * elf64-ppc.h (ppc64_elf_has_small_toc_reloc): Declare.
+
 2010-03-14  Alan Modra  <amodra@gmail.com>
 
        PR ld/11378
index 1834e22527cef8a2c16dd184768b9ace137b17bb..6c4ff4c4559468a2e8fc85e1418451cc87251aba 100644 (file)
@@ -8274,6 +8274,16 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
   return TRUE;
 }
 
+/* Return true iff input section I references the TOC using
+   instructions limited to +/-32k offsets.  */
+
+bfd_boolean
+ppc64_elf_has_small_toc_reloc (asection *i)
+{
+  return (is_ppc64_elf (i->owner)
+         && ppc64_elf_tdata (i->owner)->has_small_toc_reloc);
+}
+
 /* Allocate space for one GOT entry.  */
 
 static void
index b6bc5fb21c66a0eab195ca755f858da40bdcdb1b..c905d30cc9e94c3421b7a61b5c3797605bb92bf7 100644 (file)
@@ -29,6 +29,8 @@ bfd_boolean ppc64_elf_tls_optimize
   (struct bfd_link_info *);
 bfd_boolean ppc64_elf_edit_toc
   (struct bfd_link_info *);
+bfd_boolean ppc64_elf_has_small_toc_reloc
+  (asection *);
 bfd_vma ppc64_elf_toc
   (bfd *);
 int ppc64_elf_setup_section_lists