| Index: opcodes/arm-dis.c
|
| diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
|
| index 03062ad4d943d0bbd3882ef7e4e11766ba28fbc6..e987140294ce8cf517f113ee3b7aac8a537232c3 100644
|
| --- a/opcodes/arm-dis.c
|
| +++ b/opcodes/arm-dis.c
|
| @@ -1159,12 +1159,46 @@ static const struct opcode32 arm_opcodes[] =
|
| {ARM_EXT_V1, 0x04300000, 0x0d700000, "ldrt%c\t%12-15R, %a"},
|
| {ARM_EXT_V1, 0x04100000, 0x0c500000, "ldr%c\t%12-15r, %a"},
|
|
|
| + {ARM_EXT_V1, 0x092d0001, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0002, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0004, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0008, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0010, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0020, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0040, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0080, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0100, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0200, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0400, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d0800, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d1000, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d2000, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d4000, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x092d8000, 0x0fffffff, "stmfd%c\t%16-19R!, %m"},
|
| {ARM_EXT_V1, 0x092d0000, 0x0fff0000, "push%c\t%m"},
|
| {ARM_EXT_V1, 0x08800000, 0x0ff00000, "stm%c\t%16-19R%21'!, %m%22'^"},
|
| {ARM_EXT_V1, 0x08000000, 0x0e100000, "stm%23?id%24?ba%c\t%16-19R%21'!, %m%22'^"},
|
| +
|
| + {ARM_EXT_V1, 0x08bd0001, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0002, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0004, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0008, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0010, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0020, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0040, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0080, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0100, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0200, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0400, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd0800, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd1000, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd2000, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd4000, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| + {ARM_EXT_V1, 0x08bd8000, 0x0fffffff, "ldmfd%c\t%16-19R!, %m"},
|
| {ARM_EXT_V1, 0x08bd0000, 0x0fff0000, "pop%c\t%m"},
|
| {ARM_EXT_V1, 0x08900000, 0x0f900000, "ldm%c\t%16-19R%21'!, %m%22'^"},
|
| {ARM_EXT_V1, 0x08100000, 0x0e100000, "ldm%23?id%24?ba%c\t%16-19R%21'!, %m%22'^"},
|
| +
|
| {ARM_EXT_V1, 0x0a000000, 0x0e000000, "b%24'l%c\t%b"},
|
| {ARM_EXT_V1, 0x0f000000, 0x0f000000, "svc%c\t%0-23x"},
|
|
|
| @@ -4697,9 +4731,19 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
|
|
|
| /* Start scanning at the start of the function, or wherever
|
| we finished last time. */
|
| - start = info->symtab_pos + 1;
|
| - if (start < private_data->last_mapping_sym)
|
| - start = private_data->last_mapping_sym;
|
| + /* PR 14006. When the address is 0 we are either at the start of the
|
| + very first function, or else the first function in a new, unlinked
|
| + executable section (eg because uf -ffunction-sections). Either way
|
| + start scanning from the beginning of the symbol table, not where we
|
| + left off last time. */
|
| + if (pc == 0)
|
| + start = 0;
|
| + else
|
| + {
|
| + start = info->symtab_pos + 1;
|
| + if (start < private_data->last_mapping_sym)
|
| + start = private_data->last_mapping_sym;
|
| + }
|
| found = FALSE;
|
|
|
| /* First, look for mapping symbols. */
|
|
|