daily update
[deliverable/binutils-gdb.git] / bfd / elf32-fr30.c
index 6b457b3b74fd09ce2c688660b4bce63057330270..8e31d675223b0553e2326ed43038c468830090c1 100644 (file)
@@ -1,5 +1,5 @@
 /* FR30-specific support for 32-bit ELF.
-   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
 This file is part of BFD, the Binary File Descriptor library.
 
@@ -33,13 +33,20 @@ static reloc_howto_type * fr30_reloc_type_lookup
 static void fr30_info_to_howto_rela
   PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *));
 static boolean fr30_elf_relocate_section
-  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
+          Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
 static bfd_reloc_status_type fr30_final_link_relocate
-  PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma));
+  PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
+          Elf_Internal_Rela *, bfd_vma));
 static boolean fr30_elf_gc_sweep_hook
-  PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *));
+  PARAMS ((bfd *, struct bfd_link_info *, asection *,
+          const Elf_Internal_Rela *));
 static asection * fr30_elf_gc_mark_hook
-  PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *));
+  PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *,
+          struct elf_link_hash_entry *, Elf_Internal_Sym *));
+static boolean fr30_elf_check_relocs
+  PARAMS ((bfd *, struct bfd_link_info *, asection *,
+          const Elf_Internal_Rela *));
 
 static reloc_howto_type fr30_elf_howto_table [] =
 {
@@ -279,11 +286,10 @@ fr30_elf_i20_reloc (abfd, reloc_entry, symbol, data,
 
   x = bfd_get_32 (abfd, (char *) data + reloc_entry->address);
   x = (x & 0xff0f0000) | (relocation & 0x0000ffff) | ((relocation & 0x000f0000) << 4);
-  bfd_put_32 (abfd, x, (char *) data + reloc_entry->address);
+  bfd_put_32 (abfd, (bfd_vma) x, (char *) data + reloc_entry->address);
 
   return bfd_reloc_ok;
 }
-
 \f
 /* Utility to actually perform a R_FR30_48 reloc.  */
 
@@ -460,7 +466,6 @@ fr30_final_link_relocate (howto, input_bfd, input_section, contents, rel, reloca
 
   return r;
 }
-
 \f
 /* Relocate an FR30 ELF section.
    There is some attempt to make this function usable for many architectures,
@@ -498,7 +503,7 @@ fr30_final_link_relocate (howto, input_bfd, input_section, contents, rel, reloca
 static boolean
 fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                           contents, relocs, local_syms, local_sections)
-     bfd *                   output_bfd ATTRIBUTE_UNUSED;
+     bfd *                   output_bfd;
      struct bfd_link_info *  info;
      bfd *                   input_bfd;
      asection *              input_section;
@@ -566,9 +571,7 @@ fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section,
        {
          sym = local_syms + r_symndx;
          sec = local_sections [r_symndx];
-         relocation = (sec->output_section->vma
-                       + sec->output_offset
-                       + sym->st_value);
+         relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel);
 
          name = bfd_elf_string_from_elf_section
            (input_bfd, symtab_hdr->sh_link, sym->st_name);
@@ -711,13 +714,7 @@ fr30_elf_gc_mark_hook (abfd, info, rel, h, sym)
     }
   else
     {
-      if (!(elf_bad_symtab (abfd)
-           && ELF_ST_BIND (sym->st_info) != STB_LOCAL)
-         && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE)
-               && sym->st_shndx != SHN_COMMON))
-       {
-         return bfd_section_from_elf_index (abfd, sym->st_shndx);
-       }
+      return bfd_section_from_elf_index (abfd, sym->st_shndx);
     }
 
   return NULL;
@@ -794,7 +791,8 @@ fr30_elf_check_relocs (abfd, info, sec, relocs)
 }
 \f
 #define ELF_ARCH               bfd_arch_fr30
-#define ELF_MACHINE_CODE       EM_CYGNUS_FR30
+#define ELF_MACHINE_CODE       EM_FR30
+#define ELF_MACHINE_ALT1       EM_CYGNUS_FR30
 #define ELF_MAXPAGESIZE                0x1000
 
 #define TARGET_BIG_SYM          bfd_elf32_fr30_vec
This page took 0.025445 seconds and 4 git commands to generate.