Support R_SPARC_WDISP10 and R_SPARC_H34.
authorDavid S. Miller <davem@redhat.com>
Thu, 12 Apr 2012 16:26:06 +0000 (16:26 +0000)
committerDavid S. Miller <davem@redhat.com>
Thu, 12 Apr 2012 16:26:06 +0000 (16:26 +0000)
commit2615994e91176ae1a147439f81c452e5f5965920
tree39fad336d6e5c3c564bd15e377256d88b737447c
parent214d508ee1d179d6c9e0e993d68628a0bc477124
Support R_SPARC_WDISP10 and R_SPARC_H34.

include/

* elf/sparc.h (R_SPARC_WDISP10): New reloc.
* opcode/sparc.h: Define '=' as generating R_SPARC_WDISP10.

opcodes/

* sparc-dis.c (X_DISP10): Define.
(print_insn_sparc): Handle '='.

bfd/

* reloc.c (BFD_RELOC_SPARC_H34, BFD_RELOC_SPARC_SIZE32,
BFD_RELOC_SPARC_SIZE64, BFD_RELOC_SPARC_WDISP10): New relocs.
* libbfd.h: Regenerate.
* bfd-in2.h: Likewise.
* elfxx-sparc.c (sparc_elf_wdisp10_reloc): New function.
(_bfd_sparc_elf_howto_table): Add entries for R_SPARC_H34,
R_SPARC_SIZE32, R_SPARC_64, and R_SPARC_WDISP10.
(_bfd_sparc_elf_reloc_type_lookup): Handle new relocs.
(_bfd_sparc_elf_check_relocs): Likewise.
(_bfd_sparc_elf_gc_sweep_hook): Likewise.
(_bfd_sparc_elf_relocate_section): Likewise.

gas/

* config/tc-sparc.c (sparc_ip): Handle '=', "%h34", "%l34", and
BFD_RELOC_SPARC_H34.
(md_apply_fix): Handle BFD_RELOC_SPARC_WDISP10 and BFD_RELOC_SPARC_H34.
(tc_gen_reloc): Likewise.

gas/testsuite/

* gas/sparc/reloc64.s: Add abs34 code model tests.
* gas/sparc/reloc64.d: Update.

elfcpp/

* sparc.h (R_SPARC_WDISP10): New relocation.

gold/

* sparc.cc (Reloc::wdisp10): New relocation method.
(Reloc::h34): Likewise.
(Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
(Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
R_SPARC_WDISP10.
(Target_sparc::Scan::local): Likewise.
(Target_sparc::Scan::global): Likewise.
(Target_sparc::Relocate::relocate): Likewise.
19 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elfxx-sparc.c
bfd/libbfd.h
bfd/reloc.c
elfcpp/ChangeLog
elfcpp/sparc.h
gas/ChangeLog
gas/config/tc-sparc.c
gas/testsuite/ChangeLog
gas/testsuite/gas/sparc/reloc64.d
gas/testsuite/gas/sparc/reloc64.s
gold/ChangeLog
gold/sparc.cc
include/ChangeLog
include/elf/sparc.h
include/opcode/sparc.h
opcodes/ChangeLog
opcodes/sparc-dis.c