aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-sparc.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>1999-06-10 20:59:54 +0000
committerRichard Henderson <rth@redhat.com>1999-06-10 20:59:54 +0000
commit60dac29966ebf4a075b7d70257f008c53756e3fb (patch)
tree9eea3687d34b06d62ea0f92fe3e3adeeadc73864 /bfd/elf32-sparc.c
parentd7ba4a779e0a1dba7c377b83a2747a186b21b527 (diff)
downloadgdb-60dac29966ebf4a075b7d70257f008c53756e3fb.zip
gdb-60dac29966ebf4a075b7d70257f008c53756e3fb.tar.gz
gdb-60dac29966ebf4a075b7d70257f008c53756e3fb.tar.bz2
Jakub Jelinek <jj@ultra.linux.cz>
* elf64_sparc.c (sparc64_elf_relocate_section): Use R_SPARC_max_std instead of R_SPARC_max. (sparc64_elf_info_to_howto): Likewise. * elf32_sparc.c (elf32_sparc_relocate_section): Likewise. (elf32_sparc_info_to_howto): Likewise; handle vtable relocations.
Diffstat (limited to 'bfd/elf32-sparc.c')
-rw-r--r--bfd/elf32-sparc.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c
index ec57c8c..f02702c 100644
--- a/bfd/elf32-sparc.c
+++ b/bfd/elf32-sparc.c
@@ -215,8 +215,20 @@ elf32_sparc_info_to_howto (abfd, cache_ptr, dst)
arelent *cache_ptr;
Elf_Internal_Rela *dst;
{
- BFD_ASSERT (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_SPARC_max);
- cache_ptr->howto = &_bfd_sparc_elf_howto_table[ELF32_R_TYPE(dst->r_info)];
+ switch (ELF32_R_TYPE(dst->r_info))
+ {
+ case R_SPARC_GNU_VTINHERIT:
+ cache_ptr->howto = &elf32_sparc_vtinherit_howto;
+ break;
+
+ case R_SPARC_GNU_VTENTRY:
+ cache_ptr->howto = &elf32_sparc_vtentry_howto;
+ break;
+
+ default:
+ BFD_ASSERT (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_SPARC_max_std);
+ cache_ptr->howto = &_bfd_sparc_elf_howto_table[ELF32_R_TYPE(dst->r_info)];
+ }
}
/* For unsupported relocs. */
@@ -1134,7 +1146,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
|| r_type == R_SPARC_GNU_VTENTRY)
continue;
- if (r_type < 0 || r_type >= (int) R_SPARC_max)
+ if (r_type < 0 || r_type >= (int) R_SPARC_max_std)
{
bfd_set_error (bfd_error_bad_value);
return false;