Set proper OS ABI magic for ELF/m68k
authorAndreas Schwab <schwab@suse.de>
Wed, 11 Dec 2013 15:47:43 +0000 (16:47 +0100)
committerAndreas Schwab <schwab@suse.de>
Thu, 19 Dec 2013 11:27:19 +0000 (12:27 +0100)
* elf32-m68k.c (elf_m68k_add_symbol_hook): New function.
(elf_backend_add_symbol_hook): Define.

bfd/ChangeLog
bfd/elf32-m68k.c

index 62fc765..28d852c 100644 (file)
@@ -1,3 +1,8 @@
+2013-12-19  Andreas Schwab  <schwab@suse.de>
+
+       * elf32-m68k.c (elf_m68k_add_symbol_hook): New function.
+       (elf_backend_add_symbol_hook): Define.
+
 2013-12-18  Nick Clifton  <nickc@redhat.com>
 
        * peXXigen.c (rsrc_print_section): Use ptrdiff_t as the type for
 2013-12-18  Nick Clifton  <nickc@redhat.com>
 
        * peXXigen.c (rsrc_print_section): Use ptrdiff_t as the type for
index d8e3be1..60e4d93 100644 (file)
@@ -4831,6 +4831,26 @@ elf_m68k_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
   return TRUE;
 }
 
   return TRUE;
 }
 
+/* Hook called by the linker routine which adds symbols from an object
+   file.  */
+
+static bfd_boolean
+elf_m68k_add_symbol_hook (bfd *abfd,
+                         struct bfd_link_info *info,
+                         Elf_Internal_Sym *sym,
+                         const char **namep ATTRIBUTE_UNUSED,
+                         flagword *flagsp ATTRIBUTE_UNUSED,
+                         asection **secp ATTRIBUTE_UNUSED,
+                         bfd_vma *valp ATTRIBUTE_UNUSED)
+{
+  if ((abfd->flags & DYNAMIC) == 0
+      && (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC
+         || ELF_ST_BIND (sym->st_info) == STB_GNU_UNIQUE))
+    elf_tdata (info->output_bfd)->has_gnu_symbols = TRUE;
+
+  return TRUE;
+}
+
 #define TARGET_BIG_SYM                 bfd_elf32_m68k_vec
 #define TARGET_BIG_NAME                        "elf32-m68k"
 #define ELF_MACHINE_CODE               EM_68K
 #define TARGET_BIG_SYM                 bfd_elf32_m68k_vec
 #define TARGET_BIG_NAME                        "elf32-m68k"
 #define ELF_MACHINE_CODE               EM_68K
@@ -4872,6 +4892,7 @@ elf_m68k_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 #define elf_backend_object_p           elf32_m68k_object_p
 #define elf_backend_grok_prstatus      elf_m68k_grok_prstatus
 #define elf_backend_grok_psinfo                elf_m68k_grok_psinfo
 #define elf_backend_object_p           elf32_m68k_object_p
 #define elf_backend_grok_prstatus      elf_m68k_grok_prstatus
 #define elf_backend_grok_psinfo                elf_m68k_grok_psinfo
+#define elf_backend_add_symbol_hook    elf_m68k_add_symbol_hook
 
 #define elf_backend_can_gc_sections 1
 #define elf_backend_can_refcount 1
 
 #define elf_backend_can_gc_sections 1
 #define elf_backend_can_refcount 1