aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-05-12 12:34:37 +0000
committerH.J. Lu <hjl.tools@gmail.com>2012-05-12 12:34:37 +0000
commit56e63005cd68388efb769b08c8154c385a5345a3 (patch)
treec33a95a2ee2c073a97242ea1ce8250fbdd0c74d1
parent70af3797738f176ecbca8fa50135e127fc9793ec (diff)
downloadgdb-56e63005cd68388efb769b08c8154c385a5345a3.zip
gdb-56e63005cd68388efb769b08c8154c385a5345a3.tar.gz
gdb-56e63005cd68388efb769b08c8154c385a5345a3.tar.bz2
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.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-i386.c19
-rw-r--r--gas/testsuite/ChangeLog10
-rw-r--r--gas/testsuite/gas/i386/ilp32/ilp32.exp1
-rw-r--r--gas/testsuite/gas/i386/ilp32/reloc64-inval.l3
-rw-r--r--gas/testsuite/gas/i386/ilp32/reloc64-inval.s3
-rw-r--r--gas/testsuite/gas/i386/ilp32/reloc64.d1
-rw-r--r--gas/testsuite/gas/i386/ilp32/reloc64.s1
8 files changed, 17 insertions, 26 deletions
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 <hongjiu.lu@intel.com>
+
+ * config/tc-i386.c (tc_gen_reloc): Remove x32 addend overflow
+ for BFD_RELOC_64.
+
2012-05-11 Daniel Richard G. <skunk@iskunk.org>
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 <hongjiu.lu@intel.com>
+
+ * 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 <hongjiu.lu@intel.com>
* 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