diff options
author | Richard Henderson <rth@redhat.com> | 1999-06-10 20:59:54 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 1999-06-10 20:59:54 +0000 |
commit | 6a2cf21a5f28ad00fc94d2211e24260859444941 (patch) | |
tree | 42305016d85ee3d7b65b7980cfc6451e232cae72 /bfd/elf32-sparc.c | |
parent | 9dc6eeab89210a571d64b0881e683d23d8986581 (diff) | |
download | binutils-redhat-6a2cf21a5f28ad00fc94d2211e24260859444941.tar.gz |
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.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c index ec57c8cb35..f02702c919 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; |