summaryrefslogtreecommitdiffstats
path: root/disas
diff options
context:
space:
mode:
authorPeter Crosthwaite <crosthwaitepeter@gmail.com>2015-06-23 20:57:37 -0700
committerAndreas Färber <afaerber@suse.de>2015-07-09 15:20:41 +0200
commit51d373cf5f5a39fa315342d12ec910fe59d87090 (patch)
tree4495a8658aad28abbb7bf65ff8bf06045bb50e19 /disas
parentefc6674be845e40d443b62e80eb9ea9a9adfee3c (diff)
downloadhqemu-51d373cf5f5a39fa315342d12ec910fe59d87090.zip
hqemu-51d373cf5f5a39fa315342d12ec910fe59d87090.tar.gz
disas: cris: Fix 0 buffer length case
Cris has the complication of variable length instructions and has a check in place to clamp memory reads in case the disas request doesn't have enough bytes for the instruction being disas'd. This breaks down in the case where disassembling for the monitor where the buffer length is defaulted to 0. The buffer length should never be zero for a regular target_disas, so we can safely assume the 0 case is for the monitor in which case consider the buffer length to be the max for cris instructions. Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'disas')
-rw-r--r--disas/cris.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/disas/cris.c b/disas/cris.c
index e6cff7a..1b76a09 100644
--- a/disas/cris.c
+++ b/disas/cris.c
@@ -2575,9 +2575,9 @@ print_insn_cris_generic (bfd_vma memaddr,
If we can't get any data, or we do not get enough data, we print
the error message. */
- nbytes = info->buffer_length;
- if (nbytes > MAX_BYTES_PER_CRIS_INSN)
- nbytes = MAX_BYTES_PER_CRIS_INSN;
+ nbytes = info->buffer_length ? info->buffer_length
+ : MAX_BYTES_PER_CRIS_INSN;
+ nbytes = MIN(nbytes, MAX_BYTES_PER_CRIS_INSN);
status = (*info->read_memory_func) (memaddr, buffer, nbytes, info);
/* If we did not get all we asked for, then clear the rest.
OpenPOWER on IntegriCloud