2002-05-29 Matt Thomas <matt@3am-software.com>
[deliverable/binutils-gdb.git] / bfd / elf32-gen.c
index 47da53b1bc68a038d3b1bbb0181559b70fbc8e1c..58b5fc6273caee252234a7022ac1e6df99aaee1b 100644 (file)
@@ -1,5 +1,5 @@
 /* Generic support for 32-bit ELF
 /* Generic support for 32-bit ELF
-   Copyright 1993, 1995, 1998, 1999 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,6 +40,13 @@ 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 *, Elf32_Internal_Rela *));
+static void elf_generic_info_to_howto_rel
+  PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *));
+static boolean elf32_generic_link_add_symbols
+  PARAMS ((bfd *, struct bfd_link_info *));
+
 static void
 elf_generic_info_to_howto (abfd, bfd_reloc, elf_reloc)
      bfd *abfd ATTRIBUTE_UNUSED;
 static void
 elf_generic_info_to_howto (abfd, bfd_reloc, elf_reloc)
      bfd *abfd ATTRIBUTE_UNUSED;
@@ -58,6 +65,31 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
   bfd_reloc->howto = &dummy;
 }
 
   bfd_reloc->howto = &dummy;
 }
 
+static boolean
+elf32_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);
+       (*_bfd_error_handler) (_("%s: Relocations in generic ELF (EM: %d)"),
+                              bfd_archive_filename (abfd),
+                              ehdrp->e_machine);
+
+       bfd_set_error (bfd_error_wrong_format);
+       return false;
+      }
+
+  return bfd_elf32_bfd_link_add_symbols (abfd, info);
+}
+
 #define TARGET_LITTLE_SYM              bfd_elf32_little_generic_vec
 #define TARGET_LITTLE_NAME             "elf32-little"
 #define TARGET_BIG_SYM                 bfd_elf32_big_generic_vec
 #define TARGET_LITTLE_SYM              bfd_elf32_little_generic_vec
 #define TARGET_LITTLE_NAME             "elf32-little"
 #define TARGET_BIG_SYM                 bfd_elf32_big_generic_vec
@@ -66,6 +98,7 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
 #define ELF_MACHINE_CODE               EM_NONE
 #define ELF_MAXPAGESIZE                        0x1
 #define bfd_elf32_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
 #define ELF_MACHINE_CODE               EM_NONE
 #define ELF_MAXPAGESIZE                        0x1
 #define bfd_elf32_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
+#define bfd_elf32_bfd_link_add_symbols elf32_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.026941 seconds and 4 git commands to generate.