|
@@ -65,7 +65,7 @@ static inline int is_end_of_function_marker(union mips_instruction *ip)
|
|
|
* - handle cases where the stack is adjusted inside a function
|
|
|
* (generally doesn't happen)
|
|
|
* - find optimal value for max_instr_check
|
|
|
- * - try to find a way to handle leaf functions
|
|
|
+ * - try to find a better way to handle leaf functions
|
|
|
*/
|
|
|
|
|
|
static inline int unwind_user_frame(struct stackframe *old_frame,
|
|
@@ -104,7 +104,7 @@ static inline int unwind_user_frame(struct stackframe *old_frame,
|
|
|
}
|
|
|
|
|
|
if (!ra_offset || !stack_size)
|
|
|
- return -1;
|
|
|
+ goto done;
|
|
|
|
|
|
if (ra_offset) {
|
|
|
new_frame.ra = old_frame->sp + ra_offset;
|
|
@@ -121,6 +121,7 @@ static inline int unwind_user_frame(struct stackframe *old_frame,
|
|
|
if (new_frame.sp > old_frame->sp)
|
|
|
return -2;
|
|
|
|
|
|
+done:
|
|
|
new_frame.pc = old_frame->ra;
|
|
|
*old_frame = new_frame;
|
|
|
|