From 56e63005cd68388efb769b08c8154c385a5345a3 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 12 May 2012 12:34:37 +0000 Subject: [PATCH] Remove x32 addend overflow for BFD_RELOC_64 gas/ * config/tc-i386.c (tc_gen_reloc): Remove x32 addend overflow for BFD_RELOC_64. gas/testsuite/ * gas/i386/ilp32/ilp32.exp: Don't run reloc64-inval. * gas/i386/ilp32/reloc64.s: Add test for -4294967295 addend. * gas/i386/ilp32/reloc64.d: Updated. * gas/i386/ilp32/reloc64-inval.l: Removed. * gas/i386/ilp32/reloc64-inval.s: Likewise. --- gas/ChangeLog | 5 +++++ gas/config/tc-i386.c | 19 ------------------- gas/testsuite/ChangeLog | 10 ++++++++++ gas/testsuite/gas/i386/ilp32/ilp32.exp | 1 - gas/testsuite/gas/i386/ilp32/reloc64-inval.l | 3 --- gas/testsuite/gas/i386/ilp32/reloc64-inval.s | 3 --- gas/testsuite/gas/i386/ilp32/reloc64.d | 1 + gas/testsuite/gas/i386/ilp32/reloc64.s | 1 + 8 files changed, 17 insertions(+), 26 deletions(-) delete mode 100644 gas/testsuite/gas/i386/ilp32/reloc64-inval.l delete mode 100644 gas/testsuite/gas/i386/ilp32/reloc64-inval.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 5eb6d0a..82bfc0ec 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2012-05-12 H.J. Lu + + * config/tc-i386.c (tc_gen_reloc): Remove x32 addend overflow + for BFD_RELOC_64. + 2012-05-11 Daniel Richard G. PR binutils/14028 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index e33fb6c..ccf54bc 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9173,25 +9173,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) if (disallow_64bit_reloc) switch (code) { - case BFD_RELOC_64: - /* Check addend overflow. */ - if (!fits_in_signed_long (fixp->fx_offset)) - { - bfd_signed_vma addend = fixp->fx_offset; - if (addend < 0) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("cannot represent relocation %s with " - "addend -0x%" BFD_VMA_FMT "x in x32 " - "mode"), - bfd_get_reloc_code_name (code), -addend); - else - as_bad_where (fixp->fx_file, fixp->fx_line, - _("cannot represent relocation %s with " - "addend 0x%" BFD_VMA_FMT "x in x32 " - "mode"), - bfd_get_reloc_code_name (code), addend); - } - break; case BFD_RELOC_X86_64_DTPOFF64: case BFD_RELOC_X86_64_TPOFF64: case BFD_RELOC_64_PCREL: diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 7559561..f1df950 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2012-05-12 H.J. Lu + + * gas/i386/ilp32/ilp32.exp: Don't run reloc64-inval. + + * gas/i386/ilp32/reloc64.s: Add test for -4294967295 addend. + * gas/i386/ilp32/reloc64.d: Updated. + + * gas/i386/ilp32/reloc64-inval.l: Removed. + * gas/i386/ilp32/reloc64-inval.s: Likewise. + 2012-05-09 H.J. Lu * gas/i386/ilp32/ilp32.exp: Run reloc64-inval. diff --git a/gas/testsuite/gas/i386/ilp32/ilp32.exp b/gas/testsuite/gas/i386/ilp32/ilp32.exp index 95f3a2d..de43bf2 100644 --- a/gas/testsuite/gas/i386/ilp32/ilp32.exp +++ b/gas/testsuite/gas/i386/ilp32/ilp32.exp @@ -26,7 +26,6 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check] && } run_list_test "reloc64" "--defsym _bad_=1" - run_list_test "reloc64-inval" set ASFLAGS "$old_ASFLAGS" } diff --git a/gas/testsuite/gas/i386/ilp32/reloc64-inval.l b/gas/testsuite/gas/i386/ilp32/reloc64-inval.l deleted file mode 100644 index 1328237..0000000 --- a/gas/testsuite/gas/i386/ilp32/reloc64-inval.l +++ /dev/null @@ -1,3 +0,0 @@ -.*: Assembler messages: -.*:2: Error: .* -.*:3: Error: .* diff --git a/gas/testsuite/gas/i386/ilp32/reloc64-inval.s b/gas/testsuite/gas/i386/ilp32/reloc64-inval.s deleted file mode 100644 index 14134aa..0000000 --- a/gas/testsuite/gas/i386/ilp32/reloc64-inval.s +++ /dev/null @@ -1,3 +0,0 @@ - .data - .quad xtrn + 0x80000000 - .quad xtrn - 0x80000001 diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.d b/gas/testsuite/gas/i386/ilp32/reloc64.d index 140f24d..c2fd292 100644 --- a/gas/testsuite/gas/i386/ilp32/reloc64.d +++ b/gas/testsuite/gas/i386/ilp32/reloc64.d @@ -60,6 +60,7 @@ Disassembly of section \.text: .*[ ]+R_X86_64_TPOFF32[ ]+xtrn .*[ ]+R_X86_64_TPOFF32[ ]+xtrn .*[ ]+R_X86_64_TPOFF32[ ]+xtrn +.*[ ]+R_X86_64_64[ ]+xtrn\+0x1 Disassembly of section \.data: #... .*[ ]+R_X86_64_32[ ]+xtrn diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.s b/gas/testsuite/gas/i386/ilp32/reloc64.s index 3a2dbb8..4149ec2 100644 --- a/gas/testsuite/gas/i386/ilp32/reloc64.s +++ b/gas/testsuite/gas/i386/ilp32/reloc64.s @@ -178,6 +178,7 @@ bad .byte xtrn@tpoff .text mov xtrn@tpoff (%rbx), %eax + movabsq $xtrn - 4294967295, %rbp .data .quad xtrn -- 2.7.4