X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fvax-dis.c;h=0aec8122911439f12bf1233de29599c1f2a41918;hb=ecf64ec654afe916099f0fe482c2dae417913905;hp=a7a1ccbec8ed3fe28c6147660687c388fca9aacb;hpb=b90efa5b79ac1524ec260f8eb89d1be37e0219a7;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/vax-dis.c b/opcodes/vax-dis.c index a7a1ccbec8..0aec812291 100644 --- a/opcodes/vax-dis.c +++ b/opcodes/vax-dis.c @@ -1,5 +1,5 @@ /* Print VAX instructions. - Copyright (C) 1995-2015 Free Software Foundation, Inc. + Copyright (C) 1995-2016 Free Software Foundation, Inc. Contributed by Pauline Middelink This file is part of the GNU opcodes library. @@ -131,14 +131,14 @@ parse_disassembler_options (char * options) /* A guesstimate of the number of entries we will have to create. */ entry_addr_total_slots += strlen (options) / (strlen (entry_switch) + 5); - + entry_addr = realloc (entry_addr, sizeof (bfd_vma) * entry_addr_total_slots); } if (entry_addr == NULL) return FALSE; - + entry_addr[entry_addr_occupied_slots] = bfd_scan_vma (options, NULL, 0); entry_addr_occupied_slots ++; } @@ -296,6 +296,7 @@ print_insn_mode (const char *d, break; case 0xB0: /* Displacement byte deferred: *displ(Rn). */ (*info->fprintf_func) (info->stream, "*"); + /* Fall through. */ case 0xA0: /* Displacement byte: displ(Rn). */ if (reg == 0xF) (*info->print_address_func) (addr + 2 + NEXTBYTE (p), info); @@ -305,6 +306,7 @@ print_insn_mode (const char *d, break; case 0xD0: /* Displacement word deferred: *displ(Rn). */ (*info->fprintf_func) (info->stream, "*"); + /* Fall through. */ case 0xC0: /* Displacement word: displ(Rn). */ if (reg == 0xF) (*info->print_address_func) (addr + 3 + NEXTWORD (p), info); @@ -314,6 +316,7 @@ print_insn_mode (const char *d, break; case 0xF0: /* Displacement long deferred: *displ(Rn). */ (*info->fprintf_func) (info->stream, "*"); + /* Fall through. */ case 0xE0: /* Displacement long: displ(Rn). */ if (reg == 0xF) (*info->print_address_func) (addr + 5 + NEXTLONG (p), info); @@ -402,7 +405,8 @@ print_insn_vax (bfd_vma memaddr, disassemble_info *info) argp = NULL; /* 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) + if (info->buffer_length - (memaddr - info->buffer_vma) > 1 + && (info->stop_vma == 0 || memaddr < (info->stop_vma - 1))) { FETCH_DATA (info, buffer + 2); }