diff options
Diffstat (limited to 'bfd/elf32-sh.c')
-rw-r--r-- | bfd/elf32-sh.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index 07b069e..2ee1e2c 100644 --- a/bfd/elf32-sh.c +++ b/bfd/elf32-sh.c @@ -402,6 +402,35 @@ sh_elf_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) return NULL; } +static reloc_howto_type * +sh_elf_reloc_name_lookup (bfd *abfd, const char *r_name) +{ + unsigned int i; + + if (vxworks_object_p (abfd)) + { + for (i = 0; + i < (sizeof (sh_vxworks_howto_table) + / sizeof (sh_vxworks_howto_table[0])); + i++) + if (sh_vxworks_howto_table[i].name != NULL + && strcasecmp (sh_vxworks_howto_table[i].name, r_name) == 0) + return &sh_vxworks_howto_table[i]; + } + else + { + for (i = 0; + i < (sizeof (sh_elf_howto_table) + / sizeof (sh_elf_howto_table[0])); + i++) + if (sh_elf_howto_table[i].name != NULL + && strcasecmp (sh_elf_howto_table[i].name, r_name) == 0) + return &sh_elf_howto_table[i]; + } + + return NULL; +} + /* Given an ELF reloc, fill in the howto field of a relent. */ static void @@ -6010,6 +6039,8 @@ sh_elf_plt_sym_val (bfd_vma i, const asection *plt, #define elf_symbol_leading_char '_' #define bfd_elf32_bfd_reloc_type_lookup sh_elf_reloc_type_lookup +#define bfd_elf32_bfd_reloc_name_lookup \ + sh_elf_reloc_name_lookup #define elf_info_to_howto sh_elf_info_to_howto #define bfd_elf32_bfd_relax_section sh_elf_relax_section #define elf_backend_relocate_section sh_elf_relocate_section |