2002-04-21 David S. Miller <davem@redhat.com>
[deliverable/binutils-gdb.git] / bfd / elf32-v850.c
index 0e9fbae80c381096996885fea22d3df97991f831..ae0a0c4e88b195bd1a8f77d5f04fed96979541d1 100644 (file)
@@ -64,14 +64,12 @@ static void v850_elf_final_write_processing
   PARAMS ((bfd *, boolean));
 static boolean v850_elf_set_private_flags
   PARAMS ((bfd *, flagword));
-static boolean v850_elf_copy_private_bfd_data
-  PARAMS ((bfd *, bfd *));
 static boolean v850_elf_merge_private_bfd_data
   PARAMS ((bfd *, bfd *));
 static boolean v850_elf_print_private_bfd_data
   PARAMS ((bfd *, PTR));
 static boolean v850_elf_section_from_bfd_section
-  PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *));
+  PARAMS ((bfd *, asection *, int *));
 static void v850_elf_symbol_processing
   PARAMS ((bfd *, asymbol *));
 static boolean v850_elf_add_symbol_hook
@@ -590,7 +588,7 @@ v850_elf_check_relocs (abfd, info, sec, relocs)
 #ifdef DEBUG
   fprintf (stderr, "v850_elf_check_relocs called for section %s in %s\n",
           bfd_get_section_name (abfd, sec),
-          bfd_get_filename (abfd));
+          bfd_archive_filename (abfd));
 #endif
 
   dynobj = elf_hash_table (info)->dynobj;
@@ -1597,9 +1595,7 @@ v850_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);
 #if 0
          {
            char * name;
@@ -1776,14 +1772,9 @@ v850_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;
 }
 
@@ -1839,28 +1830,6 @@ v850_elf_set_private_flags (abfd, flags)
   return true;
 }
 
-/* Copy backend specific data from one object module to another.  */
-
-static boolean
-v850_elf_copy_private_bfd_data (ibfd, obfd)
-     bfd * ibfd;
-     bfd * obfd;
-{
-  if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return true;
-
-  BFD_ASSERT (!elf_flags_init (obfd)
-             || (elf_elfheader (obfd)->e_flags
-                 == elf_elfheader (ibfd)->e_flags));
-
-  elf_gp (obfd) = elf_gp (ibfd);
-  elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
-  elf_flags_init (obfd) = true;
-
-  return true;
-}
-
 /* Merge backend specific data from an object file
    to the output object file when linking.  */
 static boolean
@@ -1906,7 +1875,7 @@ v850_elf_merge_private_bfd_data (ibfd, obfd)
   if ((in_flags & EF_V850_ARCH) != (out_flags & EF_V850_ARCH)
       && (in_flags & EF_V850_ARCH) != E_V850_ARCH)
     _bfd_error_handler (_("%s: Architecture mismatch with previous modules"),
-                       bfd_get_filename (ibfd));
+                       bfd_archive_filename (ibfd));
 
   return true;
 }
@@ -1961,9 +1930,8 @@ static asymbol * v850_elf_zcom_symbol_ptr;
    corresponding ELF section index.  */
 
 static boolean
-v850_elf_section_from_bfd_section (abfd, hdr, sec, retval)
+v850_elf_section_from_bfd_section (abfd, sec, retval)
      bfd *                 abfd ATTRIBUTE_UNUSED;
-     Elf32_Internal_Shdr * hdr ATTRIBUTE_UNUSED;
      asection *            sec;
      int *                 retval;
 {
@@ -1987,9 +1955,9 @@ v850_elf_symbol_processing (abfd, asym)
      asymbol * asym;
 {
   elf_symbol_type * elfsym = (elf_symbol_type *) asym;
-  unsigned short index;
+  unsigned int indx;
 
-  index = elfsym->internal_elf_sym.st_shndx;
+  indx = elfsym->internal_elf_sym.st_shndx;
 
   /* If the section index is an "ordinary" index, then it may
      refer to a v850 specific section created by the assembler.
@@ -1997,26 +1965,26 @@ v850_elf_symbol_processing (abfd, asym)
 
      FIXME: Should we alter the st_shndx field as well ?  */
 
-  if (index < elf_elfheader(abfd)[0].e_shnum)
-    switch (elf_elfsections(abfd)[index]->sh_type)
+  if (indx < elf_numsections (abfd))
+    switch (elf_elfsections(abfd)[indx]->sh_type)
       {
       case SHT_V850_SCOMMON:
-       index = SHN_V850_SCOMMON;
+       indx = SHN_V850_SCOMMON;
        break;
 
       case SHT_V850_TCOMMON:
-       index = SHN_V850_TCOMMON;
+       indx = SHN_V850_TCOMMON;
        break;
 
       case SHT_V850_ZCOMMON:
-       index = SHN_V850_ZCOMMON;
+       indx = SHN_V850_ZCOMMON;
        break;
 
       default:
        break;
       }
 
-  switch (index)
+  switch (indx)
     {
     case SHN_V850_SCOMMON:
       if (v850_elf_scom_section.name == NULL)
@@ -2087,7 +2055,7 @@ v850_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
      asection **              secp;
      bfd_vma *                valp;
 {
-  int index = sym->st_shndx;
+  unsigned int indx = sym->st_shndx;
 
   /* If the section index is an "ordinary" index, then it may
      refer to a v850 specific section created by the assembler.
@@ -2095,26 +2063,26 @@ v850_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
 
      FIXME: Should we alter the st_shndx field as well ?  */
 
-  if (index < elf_elfheader(abfd)[0].e_shnum)
-    switch (elf_elfsections(abfd)[index]->sh_type)
+  if (indx < elf_numsections (abfd))
+    switch (elf_elfsections(abfd)[indx]->sh_type)
       {
       case SHT_V850_SCOMMON:
-       index = SHN_V850_SCOMMON;
+       indx = SHN_V850_SCOMMON;
        break;
 
       case SHT_V850_TCOMMON:
-       index = SHN_V850_TCOMMON;
+       indx = SHN_V850_TCOMMON;
        break;
 
       case SHT_V850_ZCOMMON:
-       index = SHN_V850_ZCOMMON;
+       indx = SHN_V850_ZCOMMON;
        break;
 
       default:
        break;
       }
 
-  switch (index)
+  switch (indx)
     {
     case SHN_V850_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
@@ -2245,7 +2213,6 @@ v850_elf_fake_sections (abfd, hdr, sec)
 
 #define bfd_elf32_bfd_is_local_label_name      v850_elf_is_local_label_name
 #define bfd_elf32_bfd_reloc_type_lookup                v850_elf_reloc_type_lookup
-#define bfd_elf32_bfd_copy_private_bfd_data    v850_elf_copy_private_bfd_data
 #define bfd_elf32_bfd_merge_private_bfd_data   v850_elf_merge_private_bfd_data
 #define bfd_elf32_bfd_set_private_flags                v850_elf_set_private_flags
 #define bfd_elf32_bfd_print_private_bfd_data   v850_elf_print_private_bfd_data
This page took 0.026929 seconds and 4 git commands to generate.