Compute 'name' for relocs against both local and global symbols.
authorNick Clifton <nickc@redhat.com>
Mon, 18 Oct 2004 08:06:31 +0000 (08:06 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 18 Oct 2004 08:06:31 +0000 (08:06 +0000)
bfd/ChangeLog
bfd/elf32-xstormy16.c

index 888c92025554bb4fdc4193f53a6e0c141a0fb6d4..de596386d90717f2080b069033ff3dd1c4ae1d46 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-18  Nick Clifton  <nickc@redhat.com>
+
+       * elf32-xstormy16.c (xstormy16_elf_relocate_section): Compute
+       'name' for relocs against both local and global symbols.
+
 2004-10-16  Daniel Jacobowitz  <dan@debian.org>
 
        * bfd-in2.h: Regenerate.
index e03cc77190db89644726e0d8e2e3613faa4836f7..8c96348ac49cc083478923aef3575dba44f22777 100644 (file)
@@ -840,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
        {
@@ -855,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: