aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-i386.c4
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/i386/immed64.d2
-rw-r--r--gas/testsuite/gas/i386/immed64.s3
5 files changed, 19 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bae8e5f..6774434 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/11974
+ * config/tc-i386.c (i386_finalize_immediate): Check flag_code
+ instead of use_rela_relocations for 64bit.
+
2010-09-02 Richard Henderson <rth@redhat.com>
* dw2gencfi.c (TC_DWARF2_EMIT_OFFSET): Provide default.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 8533142..9488ac9 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -6626,8 +6626,8 @@ i386_finalize_immediate (segT exp_seg ATTRIBUTE_UNUSED, expressionS *exp,
{
/* Size it properly later. */
i.types[this_operand].bitfield.imm64 = 1;
- /* If BFD64, sign extend val. */
- if (!use_rela_relocations
+ /* If not 64bit, sign extend val. */
+ if (flag_code != CODE_64BIT
&& (exp->X_add_number & ~(((addressT) 2 << 31) - 1)) == 0)
exp->X_add_number
= (exp->X_add_number ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 93c1b1d..73eee88 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/11974
+ * gas/i386/immed64.s: Add more movabs tests.
+ * gas/i386/immed64.d: Updated.
+
2010-09-03 Jan Kratochvil <jan.kratochvil@redhat.com>
* gas/elf/dwarf2-1.d: Update DW_OP_reg5 expected output.
diff --git a/gas/testsuite/gas/i386/immed64.d b/gas/testsuite/gas/i386/immed64.d
index e195ffd..35492a5 100644
--- a/gas/testsuite/gas/i386/immed64.d
+++ b/gas/testsuite/gas/i386/immed64.d
@@ -57,4 +57,6 @@ Disassembly of section \.text:
[ ]*[0-9a-fA-F]+:[ ]+e5 04[ ]+inl? +\$0x4,%eax
[ ]*[0-9a-fA-F]+:[ ]+e5 08[ ]+inl? +\$0x8,%eax
[ ]*[0-9a-fA-F]+:[ ]+e5 00[ ]+inl? +\$0x0,%eax
+[ ]*[a-f0-9]+: 48 b8 01 00 00 80 00 00 00 00 movabs \$0x80000001,%rax
+[ ]*[a-f0-9]+: 48 b8 01 00 00 80 00 00 00 00 movabs \$0x80000001,%rax
#pass
diff --git a/gas/testsuite/gas/i386/immed64.s b/gas/testsuite/gas/i386/immed64.s
index 4e68701..265b419 100644
--- a/gas/testsuite/gas/i386/immed64.s
+++ b/gas/testsuite/gas/i386/immed64.s
@@ -54,3 +54,6 @@ _start:
inl $xtrn, %eax
.equiv late, 8
+
+ movabs $0x80000001, %rax
+ movabsq $0x80000001, %rax