diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/arm-tdep.c | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 708b78b..6767931 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2014-10-29 Joel Brobecker <brobecker@adacore.com> + + * arm-tdep.c (arm_skip_stack_protector): Return early if + address loaded by first "ldr" instruction does not have + a corresponding minimal symbol. Update comment. + 2014-10-29 Yao Qi <yao@codesourcery.com> * arm-tdep.c (arm_analyze_load_stack_chk_guard): Compute the diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 699254b..43520cc 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -1311,11 +1311,10 @@ arm_skip_stack_protector(CORE_ADDR pc, struct gdbarch *gdbarch) return pc; stack_chk_guard = lookup_minimal_symbol_by_pc (addr); - /* If name of symbol doesn't start with '__stack_chk_guard', this - instruction sequence is not for stack protector. If symbol is - removed, we conservatively think this sequence is for stack protector. */ - if (stack_chk_guard.minsym - && strncmp (MSYMBOL_LINKAGE_NAME (stack_chk_guard.minsym), + /* ADDR must correspond to a symbol whose name is __stack_chk_guard. + Otherwise, this sequence cannot be for stack protector. */ + if (stack_chk_guard.minsym == NULL + || strncmp (MSYMBOL_LINKAGE_NAME (stack_chk_guard.minsym), "__stack_chk_guard", strlen ("__stack_chk_guard")) != 0) return pc; |