*** empty log message ***
[deliverable/binutils-gdb.git] / bfd / elf64-gen.c
index 78dc09d397881468e3d21a1c7a4df4ab9abc57b5..c3bfa9c714091a91f26205fbf297f8d180e299e2 100644 (file)
@@ -1,5 +1,5 @@
 /* Generic support for 64-bit ELF
 /* Generic support for 64-bit ELF
-   Copyright 1993, 1995, 1998 Free Software Foundation, Inc.
+   Copyright 1993, 1995, 1998, 1999, 2001 Free Software Foundation, Inc.
 
 This file is part of BFD, the Binary File Descriptor library.
 
 
 This file is part of BFD, the Binary File Descriptor library.
 
@@ -40,24 +40,62 @@ static reloc_howto_type dummy =
         0,                     /* dst_mask */
         false);                /* pcrel_offset */
 
         0,                     /* dst_mask */
         false);                /* pcrel_offset */
 
+static void elf_generic_info_to_howto
+  PARAMS ((bfd *, arelent *, Elf64_Internal_Rela *));
+static void elf_generic_info_to_howto_rel
+  PARAMS ((bfd *, arelent *, Elf64_Internal_Rel *));
+static boolean elf64_generic_link_add_symbols
+  PARAMS ((bfd *, struct bfd_link_info *));
+
 static void
 elf_generic_info_to_howto (abfd, bfd_reloc, elf_reloc)
 static void
 elf_generic_info_to_howto (abfd, bfd_reloc, elf_reloc)
-     bfd *abfd;
+     bfd *abfd ATTRIBUTE_UNUSED;
      arelent *bfd_reloc;
      arelent *bfd_reloc;
-     Elf64_Internal_Rela *elf_reloc;
+     Elf64_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED;
 {
   bfd_reloc->howto = &dummy;
 }
 
 static void
 elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
 {
   bfd_reloc->howto = &dummy;
 }
 
 static void
 elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
-     bfd *abfd;
+     bfd *abfd ATTRIBUTE_UNUSED;
      arelent *bfd_reloc;
      arelent *bfd_reloc;
-     Elf64_Internal_Rel *elf_reloc;
+     Elf64_Internal_Rel *elf_reloc ATTRIBUTE_UNUSED;
 {
   bfd_reloc->howto = &dummy;
 }
 
 {
   bfd_reloc->howto = &dummy;
 }
 
+static boolean
+elf64_generic_link_add_symbols (abfd, info)
+     bfd *abfd;
+     struct bfd_link_info *info;
+{
+  asection *o;
+
+  /* Check if there are any relocations.  */
+  for (o = abfd->sections; o != NULL; o = o->next)
+    if ((o->flags & SEC_RELOC) != 0)
+      {
+       Elf_Internal_Ehdr *ehdrp;
+
+       ehdrp = elf_elfheader (abfd);
+       if (abfd->my_archive)
+         (*_bfd_error_handler) (_("%s(%s): Relocations in generic ELF (EM: %d)"),
+                                bfd_get_filename (abfd->my_archive),
+                                bfd_get_filename (abfd),
+                                ehdrp->e_machine);
+       else
+         (*_bfd_error_handler) (_("%s: Relocations in generic ELF (EM: %d)"),
+                                bfd_get_filename (abfd),
+                                ehdrp->e_machine);
+
+       bfd_set_error (bfd_error_wrong_format);
+       return false;
+      }
+
+  return bfd_elf64_bfd_link_add_symbols (abfd, info);
+}
+
 #define TARGET_LITTLE_SYM              bfd_elf64_little_generic_vec
 #define TARGET_LITTLE_NAME             "elf64-little"
 #define TARGET_BIG_SYM                 bfd_elf64_big_generic_vec
 #define TARGET_LITTLE_SYM              bfd_elf64_little_generic_vec
 #define TARGET_LITTLE_NAME             "elf64-little"
 #define TARGET_BIG_SYM                 bfd_elf64_big_generic_vec
@@ -66,6 +104,7 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
 #define ELF_MACHINE_CODE               EM_NONE
 #define ELF_MAXPAGESIZE                        0x1
 #define bfd_elf64_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
 #define ELF_MACHINE_CODE               EM_NONE
 #define ELF_MAXPAGESIZE                        0x1
 #define bfd_elf64_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
+#define bfd_elf64_bfd_link_add_symbols elf64_generic_link_add_symbols
 #define elf_info_to_howto              elf_generic_info_to_howto
 #define elf_info_to_howto_rel          elf_generic_info_to_howto_rel
 
 #define elf_info_to_howto              elf_generic_info_to_howto
 #define elf_info_to_howto_rel          elf_generic_info_to_howto_rel
 
This page took 0.029497 seconds and 4 git commands to generate.