diff options
author | Thiemo Seufer <ths@networkno.de> | 2006-07-20 16:46:30 +0000 |
---|---|---|
committer | Thiemo Seufer <ths@networkno.de> | 2006-07-20 16:46:30 +0000 |
commit | 35d3d567ccaa9db98392c3787e4d5409c13701e8 (patch) | |
tree | e90c78ea28529139751b908299140fb3ef9dd25b /bfd/elf64-mips.c | |
parent | 5fa2b1af8c1307e4f5dd1ad74059d815dbd2de4c (diff) | |
download | binutils-35d3d567ccaa9db98392c3787e4d5409c13701e8.zip binutils-35d3d567ccaa9db98392c3787e4d5409c13701e8.tar.gz binutils-35d3d567ccaa9db98392c3787e4d5409c13701e8.tar.bz2 |
[ bfd/ChangeLog ]
* elf32-mips.c (mips16_jump_reloc): Remove function.
(elf_mips16_howto_table_rel): Use _bfd_mips_elf_generic_reloc
instead of mips16_jump_reloc.
* elf64_mips.c, wlfn32-mips.c (mips16_jump_reloc): Remove function.
(elf_mips16_howto_table_rel, elf_mips16_howto_table_rela): Use
_bfd_mips_elf_generic_reloc instead of mips16_jump_reloc.
[ gas/ChangeLog ]
* config/tc-mips.c (mips_fix_adjustable): Handle BFD_RELOC_MIPS16_JMP.
(tc_gen_reloc): Handle mips16 jumps to section symbol offsets.
[ ld/testsuite/ChangeLog ]
* ld-mips-elf/mips16-call-global-1.s,
ld-mips-elf/mips16-call-global-2.s,
ld-mips-elf/mips16-call-global-3.s, ld-mips-elf/mips16-call-global.d:
Test linking of external mips16 jumps.
* ld-mips-elf/mips-elf.exp: Run new test.
Diffstat (limited to 'bfd/elf64-mips.c')
-rw-r--r-- | bfd/elf64-mips.c | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c index ee5bce6..aa33cf7 100644 --- a/bfd/elf64-mips.c +++ b/bfd/elf64-mips.c @@ -112,8 +112,6 @@ static bfd_reloc_status_type mips_elf64_gprel32_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf64_shift6_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); -static bfd_reloc_status_type mips16_jump_reloc - (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips16_gprel_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_boolean mips_elf64_assign_gp @@ -1438,7 +1436,7 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = /* This needs complex overflow detection, because the upper four bits must match the PC. */ - mips16_jump_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_26", /* name */ TRUE, /* partial_inplace */ 0x3ffffff, /* src_mask */ @@ -1510,7 +1508,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = /* This needs complex overflow detection, because the upper four bits must match the PC. */ - mips16_jump_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_26", /* name */ FALSE, /* partial_inplace */ 0x3ffffff, /* src_mask */ @@ -2044,37 +2042,6 @@ mips_elf64_shift6_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, error_message); } -/* Handle a mips16 jump. */ - -static bfd_reloc_status_type -mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, - asymbol *symbol, void *data ATTRIBUTE_UNUSED, - asection *input_section, bfd *output_bfd, - char **error_message ATTRIBUTE_UNUSED) -{ - if (output_bfd != NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (! reloc_entry->howto->partial_inplace - || reloc_entry->addend == 0)) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - /* FIXME. */ - { - static bfd_boolean warned; - - if (! warned) - (*_bfd_error_handler) - (_("Linking mips16 objects into %s format is not supported"), - bfd_get_target (input_section->output_section->owner)); - warned = TRUE; - } - - return bfd_reloc_undefined; -} - /* Handle a mips16 GP relative reloc. */ static bfd_reloc_status_type |