Fix the return value from _Unwind_Backtrace() on arm.
If unwinding stops due to hitting the end of the call chain, the return value is supposed to be _URC_END_OF_STACK; other values indicate internal errors. The return value from get_eit_entry() is now returned without translating it to _URC_FAILURE, so that callers can see _URC_END_OF_STACK when it happens.
This commit is contained in:
parent
237d41f89e
commit
996a93432a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=323998
@ -773,11 +773,8 @@ __gnu_Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument,
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
/* Find the entry for this routine. */
|
/* Find the entry for this routine. */
|
||||||
if (get_eit_entry (ucbp, saved_vrs.core.r[R_PC]) != _URC_OK)
|
if ((code = get_eit_entry (ucbp, saved_vrs.core.r[R_PC])) != _URC_OK)
|
||||||
{
|
|
||||||
code = _URC_FAILURE;
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
/* The dwarf unwinder assumes the context structure holds things
|
/* The dwarf unwinder assumes the context structure holds things
|
||||||
like the function and LSDA pointers. The ARM implementation
|
like the function and LSDA pointers. The ARM implementation
|
||||||
|
Loading…
Reference in New Issue
Block a user