armv4_5: fix segmentation fault in command 'arm reg'
authorAntonio Borneo <borneo.antonio@gmail.com>
Sat, 21 Nov 2020 23:15:44 +0000 (00:15 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 5 Dec 2020 23:18:15 +0000 (23:18 +0000)
Commit fed713104904 ("armv4_5: support weirdo ARMv6 secure monitor
mode") introduces the secure mode 28 of ARMv6 as a synonymous of
mode 22 (MON), but does not add it in the switch/case in command
'arm reg'.
When command 'arm reg' scans the array arm_mode_data[] on targets
without secure modes, it does not detect the new secure mode as
not supported by the architecture, thus triggers a segmentation
fault when it try to read the register's value from unallocated
memory.
Issue detected with target arm926ejs.

Add the new mode in the switch/case and treat it as the mode MON.

Change-Id: I2b72cc558e097879a7ee6ea601200bfda6b60270
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: fed713104904 ("armv4_5: support weirdo ARMv6 secure monitor mode")
Reviewed-on: http://openocd.zylin.com/5941
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
src/target/armv4_5.c

index 7da28e349d95eb999bda92305c757a4c62880803..8ac4825042ae0a63feb52051905fef6f65209ebe 100644 (file)
@@ -869,6 +869,7 @@ COMMAND_HANDLER(handle_armv4_5_reg_command)
                                        continue;
                        /* FALLTHROUGH */
                        case ARM_MODE_MON:
+                       case ARM_MODE_1176_MON:
                                if (arm->core_type != ARM_CORE_TYPE_SEC_EXT
                                        && arm->core_type != ARM_CORE_TYPE_VIRT_EXT)
                                        continue;