diff options
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/vax-dis.c | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 38f7fdf..32185d8 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2001-03-19 John David Anglin <dave@hiauly1.hia.nrc.ca> + + * vax-dis.c (print_insn_vax): Only fetch two bytes if the info buffer + has more than one byte left to read. + 2001-03-16 Martin Schwidefsky <schwidefsky@de.ibm.com> * s390-opc.c: Add new opcodes. Smooth out formatting. diff --git a/opcodes/vax-dis.c b/opcodes/vax-dis.c index d6cb900..e33f87e 100644 --- a/opcodes/vax-dis.c +++ b/opcodes/vax-dis.c @@ -1,5 +1,5 @@ /* Print VAX instructions. - Copyright 1995, 1998, 2000 Free Software Foundation, Inc. + Copyright 1995, 1998, 2000, 2001 Free Software Foundation, Inc. Contributed by Pauline Middelink <middelin@polyware.iaf.nl> This program is free software; you can redistribute it and/or modify @@ -126,7 +126,18 @@ print_insn_vax (memaddr, info) return -1; } - FETCH_DATA (info, buffer + 2); + /* Check if the info buffer has more than one byte left since + the last opcode might be a single byte with no argument data. */ + if (info->buffer_length - (memaddr - info->buffer_vma) > 1) + { + FETCH_DATA (info, buffer + 2); + } + else + { + FETCH_DATA (info, buffer + 1); + buffer[1] = 0; + } + for (votp = &votstrs[0]; votp->name[0]; votp++) { register vax_opcodeT opcode = votp->detail.code; |