PR binutils/630
[deliverable/binutils-gdb.git] / bfd / elf32-xstormy16.c
index 6bf53e9510609b711a68f39052fa4a39ec1224b8..9d8635aa03a0b8306282c430316e15fe7e35a682 100644 (file)
@@ -372,7 +372,6 @@ xstormy16_elf_24_reloc (abfd, reloc_entry, symbol, data, input_section,
      char **error_message ATTRIBUTE_UNUSED;
 {
   bfd_vma relocation, x;
-  bfd_size_type sz;
 
   if (output_bfd != NULL)
     {
@@ -380,8 +379,7 @@ xstormy16_elf_24_reloc (abfd, reloc_entry, symbol, data, input_section,
       return bfd_reloc_ok;
     }
 
-  sz = input_section->rawsize ? input_section->rawsize : input_section->size;
-  if (reloc_entry->address > sz)
+  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
     return bfd_reloc_outofrange;
 
   if (bfd_is_com_section (symbol->section))
@@ -842,10 +840,6 @@ xstormy16_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          sym = local_syms + r_symndx;
          sec = local_sections [r_symndx];
          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);
-         name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
        }
       else
        {
@@ -857,6 +851,16 @@ xstormy16_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                                   unresolved_reloc, warned);
        }
 
+      if (h != NULL)
+       name = h->root.root.string;
+      else
+       {
+         name = (bfd_elf_string_from_elf_section
+                 (input_bfd, symtab_hdr->sh_link, sym->st_name));
+         if (name == NULL || *name == '\0')
+           name = bfd_section_name (input_bfd, sec);
+       }
+
       switch (ELF32_R_TYPE (rel->r_info))
        {
        case R_XSTORMY16_24:
@@ -936,8 +940,8 @@ xstormy16_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
This page took 0.024346 seconds and 4 git commands to generate.