Commit 75e479a8 by Ian Lance Taylor

runtime: on ARM32 EABI, don't get LSDA if compact model is used

    
    On ARM32 EABI, when the "compact" unwinding model is used, it
    does not have standard LSDA and _Unwind_GetLanguageSpecificData
    will not return data that is parseable by us. Check this
    conditon before calling _Unwind_GetLanguageSpecificData.
    
    Fix ARM32 build.
    
    Reviewed-on: https://go-review.googlesource.com/c/155758

From-SVN: r267428
parent 257992db
16a48dbc1c69075321b388d235651b59abcb58ce 785414705628bf9d1279a8042e1886440424aade
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -646,6 +646,17 @@ findstackmaps (struct _Unwind_Context *context, _Unwind_Ptr *ip, _Unwind_Ptr *sp ...@@ -646,6 +646,17 @@ findstackmaps (struct _Unwind_Context *context, _Unwind_Ptr *ip, _Unwind_Ptr *sp
_sleb128_t index; _sleb128_t index;
int size; int size;
#ifdef __ARM_EABI_UNWINDER__
{
_Unwind_Control_Block *ucbp;
ucbp = (_Unwind_Control_Block *) _Unwind_GetGR (context, 12);
if (*ucbp->pr_cache.ehtp & (1u << 31))
// The "compact" model is used, with one of the predefined
// personality functions. It doesn't have standard LSDA.
return NOTFOUND_OK;
}
#endif
language_specific_data = (const unsigned char *) language_specific_data = (const unsigned char *)
_Unwind_GetLanguageSpecificData (context); _Unwind_GetLanguageSpecificData (context);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment