From c78858285bb60ac2031d4d68fe6d06190803231a Mon Sep 17 00:00:00 2001 From: Jonathan Larmour Date: Fri, 24 Mar 2000 21:33:35 +0000 Subject: [PATCH] * arm-tdep.c (thumb_skip_prologue): Take function end addr argument so that we can stop searching for the prologue past the function end (arm_skip_prologue): Call thumb_skip_prologue with function end addr --- gdb/ChangeLog | 6 ++++++ gdb/arm-tdep.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 41b7a768500..2e8b4cac808 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2000-03-24 Jonathan Larmour + + * arm-tdep.c (thumb_skip_prologue): Take function end addr argument + so that we can stop searching for the prologue past the function end + (arm_skip_prologue): Call thumb_skip_prologue with function end addr + 2000-03-24 Kevin Buettner * linux-thread.c, lin-thread.c (save_inferior_pid, diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index eaaa19cedfc..7112c4caf71 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -328,7 +328,7 @@ arm_frameless_function_invocation (struct frame_info *fi) */ static CORE_ADDR -thumb_skip_prologue (CORE_ADDR pc) +thumb_skip_prologue (CORE_ADDR pc, CORE_ADDR func_end) { CORE_ADDR current_pc; int findmask = 0; /* findmask: @@ -337,7 +337,7 @@ thumb_skip_prologue (CORE_ADDR pc) bit 2 - sub sp, #simm OR add sp, #simm (adjusting of sp) */ - for (current_pc = pc; current_pc < pc + 40; current_pc += 2) + for (current_pc = pc; current_pc + 2 < func_end && current_pc < pc + 40; current_pc += 2) { unsigned short insn = read_memory_unsigned_integer (current_pc, 2); @@ -399,7 +399,7 @@ arm_skip_prologue (CORE_ADDR pc) /* Check if this is Thumb code. */ if (arm_pc_is_thumb (pc)) - return thumb_skip_prologue (pc); + return thumb_skip_prologue (pc, func_end); /* Can't find the prologue end in the symbol table, try it the hard way by disassembling the instructions. */ -- 2.30.2