Check R_X86_64_32 overflow and allow R_X86_64_64 for x32.
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 1 Aug 2011 23:04:23 +0000 (23:04 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 1 Aug 2011 23:04:23 +0000 (23:04 +0000)
commitd7921315bafbc6419613771c6ad075e3cf160a0e
tree6584835bb8a8d456e85f2b491657a2934aa16032
parentc3f7b0e5a192ae55613bed418690637a3ebbc2c5
Check R_X86_64_32 overflow and allow R_X86_64_64 for x32.

bfd/

2011-08-01  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/13048
* archures.c (bfd_mach_i386_intel_syntax): New.
(bfd_mach_i386_i8086): Updated.
(bfd_mach_i386_i386): Likewise.
(bfd_mach_x86_64): Likewise.
(bfd_mach_x64_32): Likewise.
(bfd_mach_i386_i386_intel_syntax): Likewise.
(bfd_mach_x86_64_intel_syntax): Likewise.
(bfd_mach_x64_32_intel_syntax): Likewise.
(bfd_mach_l1om): Likewise.
(bfd_mach_l1om_intel_syntax): Likewise.
(bfd_mach_k1om): Likewise.
(bfd_mach_k1om_intel_syntax): Likewise.

* bfd-in2.h: Regenerated.

* cpu-i386.c (bfd_i386_compatible): Check mach instead of
bits_per_address.
(bfd_x64_32_arch_intel_syntax): Set bits_per_address to 64.
(bfd_x64_32_arch): Likewise.

* elf64-x86-64.c: Include "libiberty.h".
(x86_64_elf_howto_table): Append x32 R_X86_64_32.
(elf_x86_64_rtype_to_howto): Support x32 R_X86_64_32.
(elf_x86_64_reloc_type_lookup): Likewise.
(elf_x86_64_reloc_name_lookup): Likewise.
(elf_x86_64_relocate_section): Likewise.
(elf_x86_64_check_relocs): Allow R_X86_64_64 relocations for x32.

gas/

2011-08-01  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/13048
* config/tc-i386.c (handle_quad): Removed.
(md_pseudo_table): Remove "quad".
(tc_gen_reloc): Don't check BFD_RELOC_64 for disallow_64bit_reloc.
(x86_dwarf2_addr_size): New.

* config/tc-i386.h (x86_dwarf2_addr_size): New.
(DWARF2_ADDR_SIZE): Likewise.

gas/testsuite/

2011-08-01  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/13048
* gas/i386/ilp32/ilp32.exp: Don't run inval.

* gas/i386/ilp32/inval.l: Removed.
* gas/i386/ilp32/inval.s: Likewise.

* gas/i386/ilp32/quad.d: Expect R_X86_64_64 instead of
R_X86_64_32.

* gas/i386/ilp32/x86-64-pcrel.s: Add tests for movabs.
* gas/i386/ilp32/x86-64-pcrel.d: Updated.

ld/testsuite/

2011-08-01  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/13048
* ld-x86-64/ilp32-6.d: New.
* ld-x86-64/ilp32-6.s: Likewise.
* ld-x86-64/ilp32-7.d: Likewise.
* ld-x86-64/ilp32-7.s: Likewise.
* ld-x86-64/ilp32-8.d: Likewise.
* ld-x86-64/ilp32-8.s: Likewise.
* ld-x86-64/ilp32-9.d: Likewise.
* ld-x86-64/ilp32-9.s: Likewise.

* ld-x86-64/x86-64.exp: Run ilp32-6, ilp32-7, ilp32-8 and ilp32-9.

opcodes/

2011-08-01  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/13048
* i386-dis.c (print_insn): Optimize info->mach check.
27 files changed:
bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/cpu-i386.c
bfd/elf64-x86-64.c
gas/ChangeLog
gas/config/tc-i386.c
gas/config/tc-i386.h
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/ilp32/ilp32.exp
gas/testsuite/gas/i386/ilp32/inval.l [deleted file]
gas/testsuite/gas/i386/ilp32/inval.s [deleted file]
gas/testsuite/gas/i386/ilp32/quad.d
gas/testsuite/gas/i386/ilp32/x86-64-pcrel.d
gas/testsuite/gas/i386/ilp32/x86-64-pcrel.s
ld/testsuite/ChangeLog
ld/testsuite/ld-x86-64/ilp32-6.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-6.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-7.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-7.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-8.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-8.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-9.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/ilp32-9.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp
opcodes/ChangeLog
opcodes/i386-dis.c