mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
257992db89
commit
75e479a8b5
|
|
@ -1,4 +1,4 @@
|
||||||
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
|
||||||
_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);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue