This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Fix uninitialised CRIS insn
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Date: Mon, 16 Jun 2014 13:07:36 +0930
- Subject: Fix uninitialised CRIS insn
- Authentication-results: sourceware.org; auth=none
- References: <20140614004846 dot GI7683 at bubble dot grove dot modra dot org>
Fixes "FAIL: gas/cris/rd-bkw4v32" with MALLOC_PERTURB_=1
gas/
* config/tc-cris.c (md_create_long_jump): Follow "short" jump
with a nop rather than leaving uninitialised.
gas/testsuite/
* gas/cris/rd-bkw4v32.d: Update.
diff --git a/gas/config/tc-cris.c b/gas/config/tc-cris.c
index 86d8062..aba4ef7 100644
--- a/gas/config/tc-cris.c
+++ b/gas/config/tc-cris.c
@@ -1124,9 +1124,15 @@ md_create_long_jump (char *storep, addressT from_addr, addressT to_addr,
if (max_short_minus_distance <= distance
&& distance <= max_short_plus_distance)
- /* Then make it a "short" long jump. */
- md_create_short_jump (storep, from_addr, to_addr, fragP,
+ {
+ /* Then make it a "short" long jump. */
+ md_create_short_jump (storep, from_addr, to_addr, fragP,
to_symbol);
+ if (cris_arch == arch_crisv32)
+ md_number_to_chars (storep + 6, NOP_OPCODE_V32, 2);
+ else
+ md_number_to_chars (storep + 6, NOP_OPCODE, 2);
+ }
else
{
/* We have a "long" long jump: "JUMP [PC+]". If CRISv32, always
diff --git a/gas/testsuite/gas/cris/rd-bkw4v32.d b/gas/testsuite/gas/cris/rd-bkw4v32.d
index 210746c..35fa5b2 100644
--- a/gas/testsuite/gas/cris/rd-bkw4v32.d
+++ b/gas/testsuite/gas/cris/rd-bkw4v32.d
@@ -43,7 +43,7 @@ Disassembly of section \.text:
4acc: b005 nop
4ace: ffed 4635 ba 8014 <x\+0x8014>
4ad2: b005 nop
- 4ad4: 0000 bcc \.
+ 4ad4: b005 nop
4ad6: 6f9e 0000 0000 move.d 0 <x>,r9
4ad8: R_CRIS_32 x336
4adc: bfbd 0000 0000 jsr 0 <x>
--
Alan Modra
Australia Development Lab, IBM