From 13f864aed86358efd5504098e61184b06054d43c Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 3 Sep 2010 17:38:38 +0000 Subject: [PATCH] Check flag_code instead of use_rela_relocations for 64bit. gas/ 2010-09-03 H.J. Lu PR gas/11974 * config/tc-i386.c (i386_finalize_immediate): Check flag_code instead of use_rela_relocations for 64bit. gas/testsuite/ 2010-09-03 H.J. Lu PR gas/11974 * gas/i386/immed64.s: Add more movabs tests. * gas/i386/immed64.d: Updated. --- gas/ChangeLog | 6 ++++++ gas/config/tc-i386.c | 4 ++-- gas/testsuite/ChangeLog | 6 ++++++ gas/testsuite/gas/i386/immed64.d | 2 ++ gas/testsuite/gas/i386/immed64.s | 3 +++ 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 + + 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 * 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 + + PR gas/11974 + * gas/i386/immed64.s: Add more movabs tests. + * gas/i386/immed64.d: Updated. + 2010-09-03 Jan Kratochvil * 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 -- 2.7.4