From: Paul Fertser Date: Sun, 16 Jun 2013 07:11:32 +0000 (+0400) Subject: armv4_5: prevent segfault when gdb connects to an underinitialised target X-Git-Tag: v0.8.0-rc1~387 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=refs%2Fchanges%2F46%2F1446%2F2 armv4_5: prevent segfault when gdb connects to an underinitialised target This prevents segmentation fault that can occur on cortex_a targets if gdb connection is established before it's halted and CPSR examined. Change-Id: Id996200e0fd95440496509c1fecaabbdbf425e23 Tested-by: Henrik Nordstrom Signed-off-by: Paul Fertser Reviewed-on: http://openocd.zylin.com/1446 Tested-by: jenkins Reviewed-by: Spencer Oliver --- diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c index 10f84d8124..91830f57c9 100644 --- a/src/target/armv4_5.c +++ b/src/target/armv4_5.c @@ -429,7 +429,11 @@ struct reg *arm_reg_current(struct arm *arm, unsigned regnum) if (regnum > 16) return NULL; - r = arm->core_cache->reg_list + arm->map[regnum]; + if (!arm->map) { + LOG_ERROR("Register map is not available yet, the target is not fully initialised"); + r = arm->core_cache->reg_list + regnum; + } else + r = arm->core_cache->reg_list + arm->map[regnum]; /* e.g. invalid CPSR said "secure monitor" mode on a core * that doesn't support it...