Add initial Intel K1OM support.
[external/binutils.git] / bfd / elf64-x86-64.c
index ca480ab..975b558 100644 (file)
@@ -4940,7 +4940,6 @@ static const struct bfd_elf_special_section
 #define elf_backend_hash_symbol \
   elf_x86_64_hash_symbol
 
-#undef  elf_backend_post_process_headers
 #define elf_backend_post_process_headers  _bfd_elf_set_osabi
 
 #include "elf64-target.h"
@@ -4958,8 +4957,6 @@ static const struct bfd_elf_special_section
 #undef  elf64_bed
 #define elf64_bed elf64_x86_64_fbsd_bed
 
-#undef  elf_backend_post_process_headers
-
 #include "elf64-target.h"
 
 /* Solaris 2 support.  */
@@ -5018,9 +5015,6 @@ elf64_l1om_elf_object_p (bfd *abfd)
 #undef elf_backend_object_p
 #define elf_backend_object_p               elf64_l1om_elf_object_p
 
-#undef  elf_backend_post_process_headers
-#define elf_backend_post_process_headers    _bfd_elf_set_osabi
-
 #undef  elf_backend_static_tls_alignment
 
 #undef elf_backend_want_plt_sym
@@ -5041,7 +5035,55 @@ elf64_l1om_elf_object_p (bfd *abfd)
 #undef  elf64_bed
 #define elf64_bed elf64_l1om_fbsd_bed
 
-#undef  elf_backend_post_process_headers
+#include "elf64-target.h"
+
+/* Intel K1OM support.  */
+
+static bfd_boolean
+elf64_k1om_elf_object_p (bfd *abfd)
+{
+  /* Set the right machine number for an K1OM elf64 file.  */
+  bfd_default_set_arch_mach (abfd, bfd_arch_k1om, bfd_mach_k1om);
+  return TRUE;
+}
+
+#undef  TARGET_LITTLE_SYM
+#define TARGET_LITTLE_SYM                  bfd_elf64_k1om_vec
+#undef  TARGET_LITTLE_NAME
+#define TARGET_LITTLE_NAME                 "elf64-k1om"
+#undef ELF_ARCH
+#define ELF_ARCH                           bfd_arch_k1om
+
+#undef ELF_MACHINE_CODE
+#define ELF_MACHINE_CODE                   EM_K1OM
+
+#undef ELF_OSABI
+
+#undef  elf64_bed
+#define elf64_bed elf64_k1om_bed
+
+#undef elf_backend_object_p
+#define elf_backend_object_p               elf64_k1om_elf_object_p
+
+#undef  elf_backend_static_tls_alignment
+
+#undef elf_backend_want_plt_sym
+#define elf_backend_want_plt_sym           0
+
+#include "elf64-target.h"
+
+/* FreeBSD K1OM support.  */
+
+#undef  TARGET_LITTLE_SYM
+#define TARGET_LITTLE_SYM                  bfd_elf64_k1om_freebsd_vec
+#undef  TARGET_LITTLE_NAME
+#define TARGET_LITTLE_NAME                 "elf64-k1om-freebsd"
+
+#undef ELF_OSABI
+#define        ELF_OSABI                           ELFOSABI_FREEBSD
+
+#undef  elf64_bed
+#define elf64_bed elf64_k1om_fbsd_bed
 
 #include "elf64-target.h"
 
@@ -5079,9 +5121,6 @@ elf32_x86_64_elf_object_p (bfd *abfd)
 
 #undef ELF_OSABI
 
-#undef elf_backend_post_process_headers
-#define elf_backend_post_process_headers    _bfd_elf_set_osabi
-
 #undef elf_backend_object_p
 #define elf_backend_object_p \
   elf32_x86_64_elf_object_p