Patch by matz@suse.de:
commit0b2fec5a51a7128adac23ed728695de955476e7d
authorAndreas Jaeger <aj@suse.de>
Thu, 23 Mar 2006 08:23:09 +0000 (23 08:23 +0000)
committerAndreas Jaeger <aj@suse.de>
Thu, 23 Mar 2006 08:23:09 +0000 (23 08:23 +0000)
treed488cf8700f23aa448865f44ccf774bb6a1fb662
parent8eadf497bfaa1262341f838f93dec5dfeb08c659
Patch by matz@suse.de:
bfd/ChangeLog:
* reloc.c: Add BFD_RELOC_X86_64_GOT64, BFD_RELOC_X86_64_GOTPCREL64,
BFD_RELOC_X86_64_GOTPC64, BFD_RELOC_X86_64_GOTPLT64,
BFD_RELOC_X86_64_PLTOFF64.
* bfd-in2.h: Regenerated.
* libbfd.h: Regenerated.
* elf64-x86-64.c (x86_64_elf_howto_table): Correct comment.
Add howtos for above relocs.
(x86_64_reloc_map): Add mappings for new relocs.
(elf64_x86_64_check_relocs): R_X86_64_GOT64, R_X86_64_GOTPCREL64,
R_X86_64_GOTPLT64 need a got entry.  R_X86_64_GOTPLT64 also a PLT
entry.  R_X86_64_GOTPC64 needs a .got section.  R_X86_64_PLTOFF64
needs a PLT entry.
(elf64_x86_64_gc_sweep_hook): Reflect changes from
elf64_x86_64_check_relocs for the new relocs.
(elf64_x86_64_relocate_section): Handle new relocs.

gas/ChangeLog:
* config/tc-i386.c (type_names): Correct placement of 'static'.
(reloc): Map some more relocs to their 64 bit counterpart when
size is 8.
(output_insn): Work around breakage if DEBUG386 is defined.
(output_disp): A BFD_RELOC_64 with GOT_symbol as operand also
needs to be mapped to BFD_RELOC_X86_64_GOTPC64 or
BFD_RELOC_X86_64_GOTPC32.  Also x86-64 handles pcrel addressing
different from i386.
(output_imm): Ditto.
(lex_got): Recognize @PLTOFF and @GOTPLT.  Make @GOT accept also
Imm64.
(md_convert_frag): Jumps can now be larger than 2GB away, error
out in that case.
(tc_gen_reloc): New relocs are passed through.  BFD_RELOC_64
and BFD_RELOC_64_PCREL are mapped to BFD_RELOC_X86_64_GOTPC64.

gas/testsuite/ChangeLog:
* gas/i386/reloc64.s: Accept 64-bit forms.
* gas/i386/reloc64.d: Adjust.
* gas/i386/reloc64.l: Adjust.

include/ChangeLog:
* elf/x86-64.h: Add the new relocations with their official
numbers.
bfd/bfd-in2.h
bfd/elf64-x86-64.c
bfd/libbfd.h
bfd/libcoff.h
bfd/reloc.c
gas/config/tc-i386.c
gas/testsuite/gas/i386/reloc64.d
gas/testsuite/gas/i386/reloc64.l
gas/testsuite/gas/i386/reloc64.s
include/elf/x86-64.h