diff options
author | Tristan Gingold <gingold@adacore.com> | 2013-03-26 09:13:17 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2013-03-26 09:13:17 +0000 |
commit | 9699c8332afe77fdfd906af47dfc505c43f8c927 (patch) | |
tree | c99a6b191eb6228f6f3e7b220171aaee21726244 /gas | |
parent | 99c819eea0b33989b8482c8059a5df28c8fec8f4 (diff) | |
download | binutils-9699c8332afe77fdfd906af47dfc505c43f8c927.zip binutils-9699c8332afe77fdfd906af47dfc505c43f8c927.tar.gz binutils-9699c8332afe77fdfd906af47dfc505c43f8c927.tar.bz2 |
gas/
2013-03-26 Douglas B Rupp <rupp@gnat.com>
* config/tc-ia64.c (emit_one_bundle): Move last_slot adjustment
after fixup.
gas/testsuite/
2013-03-26 Douglas B Rupp <rupp@adacore.com
* gas/ia64/ia64.exp: Add new test reloc-mlx
* gas/ia64/reloc-mlx.[sd]: New test for X-unit reloc.
* gas/ia64/pcrel.d: Fix output for X-unit reloc.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 22 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/ia64.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/pcrel.d | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/reloc-mlx.d | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/reloc-mlx.s | 7 |
7 files changed, 43 insertions, 14 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index f60fd45..a9b9104 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2013-03-26 Douglas B Rupp <rupp@gnat.com> + + * config/tc-ia64.c (emit_one_bundle): Move last_slot adjustment + after fixup. + 2013-03-21 Will Newton <will.newton@linaro.org> * config/tc-arm.c (encode_thumb32_addr_mode): Emit an error for all diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c index a4e702f..0542410 100644 --- a/gas/config/tc-ia64.c +++ b/gas/config/tc-ia64.c @@ -1,6 +1,6 @@ /* tc-ia64.c -- Assembler for the HP/Intel IA-64 architecture. Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009, 2011, 2012 Free Software Foundation, Inc. + 2008, 2009, 2011, 2012, 2013 Free Software Foundation, Inc. Contributed by David Mosberger-Tang <davidm@hpl.hp.com> This file is part of GAS, the GNU Assembler. @@ -6934,15 +6934,6 @@ emit_one_bundle (void) md.slot[curr].unwind_record = NULL; } - if (required_unit == IA64_UNIT_L) - { - know (i == 1); - /* skip one slot for long/X-unit instructions */ - ++i; - } - --md.num_slots_in_use; - last_slot = i; - for (j = 0; j < md.slot[curr].num_fixups; ++j) { ifix = md.slot[curr].fixup + j; @@ -6955,6 +6946,17 @@ emit_one_bundle (void) end_of_insn_group = md.slot[curr].end_of_insn_group; + /* This adjustment to "i" must occur after the fix, otherwise the fix + is assigned to the wrong slot, and the VMS linker complains. */ + if (required_unit == IA64_UNIT_L) + { + know (i == 1); + /* skip one slot for long/X-unit instructions */ + ++i; + } + --md.num_slots_in_use; + last_slot = i; + /* clear slot: */ ia64_free_opcode (md.slot[curr].idesc); memset (md.slot + curr, 0, sizeof (md.slot[curr])); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 29fe5cd..8f28d3c 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-03-26 Douglas B Rupp <rupp@adacore.com + + * gas/ia64/ia64.exp: Add new test reloc-mlx + * gas/ia64/reloc-mlx.[sd]: New test for X-unit reloc. + * gas/ia64/pcrel.d: Fix output for X-unit reloc. + 2013-03-21 Will Newton <will.newton@linaro.org> * gas/arm/thumb2_relax.d: Strip out invalid pc-relative strs. diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp index 74d0491..dffd56c 100644 --- a/gas/testsuite/gas/ia64/ia64.exp +++ b/gas/testsuite/gas/ia64/ia64.exp @@ -65,6 +65,7 @@ if [istarget "ia64-*"] then { run_dump_test "dependency-1" run_dump_test "reloc" + run_dump_test "reloc-mlx" run_list_test "reloc-bad" "" run_dump_test "pcrel" diff --git a/gas/testsuite/gas/ia64/pcrel.d b/gas/testsuite/gas/ia64/pcrel.d index a01c006f..79617b9 100644 --- a/gas/testsuite/gas/ia64/pcrel.d +++ b/gas/testsuite/gas/ia64/pcrel.d @@ -13,10 +13,10 @@ OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]* RELOCATION RECORDS FOR \[\.movl\]: OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]* -0+12[[:space:]]+PCREL64I[[:space:]]+esym -0+22[[:space:]]+PCREL64I[[:space:]]+esym\+0x0+20 -0+32[[:space:]]+PCREL64I[[:space:]]+esym -0+42[[:space:]]+PCREL64I[[:space:]]+esym-0x0+20 +0+11[[:space:]]+PCREL64I[[:space:]]+esym +0+21[[:space:]]+PCREL64I[[:space:]]+esym\+0x0+20 +0+31[[:space:]]+PCREL64I[[:space:]]+esym +0+41[[:space:]]+PCREL64I[[:space:]]+esym-0x0+20 RELOCATION RECORDS FOR \[\.data8\]: OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]* diff --git a/gas/testsuite/gas/ia64/reloc-mlx.d b/gas/testsuite/gas/ia64/reloc-mlx.d new file mode 100644 index 0000000..cd210f6 --- /dev/null +++ b/gas/testsuite/gas/ia64/reloc-mlx.d @@ -0,0 +1,8 @@ +#objdump: -r +#name: ia64 mlx reloc + +.*: +file format .* + +RELOCATION RECORDS FOR \[\.text\]: +OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]* +0+1[[:space:]]+PCREL60B[[:space:]]+bar diff --git a/gas/testsuite/gas/ia64/reloc-mlx.s b/gas/testsuite/gas/ia64/reloc-mlx.s new file mode 100644 index 0000000..1cab555 --- /dev/null +++ b/gas/testsuite/gas/ia64/reloc-mlx.s @@ -0,0 +1,7 @@ + .text + .proc foo# +foo: + .mlx + mov r25 = r0 + brl.call.sptk.many b0 = bar# + .endp foo# |