mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 09:10:48 +08:00
exception.c (parse_lsda_header): hardcode ttype_encoding for older ARM EABI toolchains.
2011-10-17 Paul Brook <paul@codesourcery.com> Matthias Klose <doko@ubuntu.com> * exception.c (parse_lsda_header): hardcode ttype_encoding for older ARM EABI toolchains. (get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant. Co-Authored-By: Matthias Klose <doko@ubuntu.com> From-SVN: r180255
This commit is contained in:
parent
86220f3f94
commit
eb405c4669
@ -1,3 +1,10 @@
|
||||
2011-10-17 Paul Brook <paul@codesourcery.com>
|
||||
Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
* exception.c (parse_lsda_header): hardcode ttype_encoding for older
|
||||
ARM EABI toolchains.
|
||||
(get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant.
|
||||
|
||||
2011-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
|
||||
PR libobjc/49883
|
||||
|
@ -159,6 +159,11 @@ parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p,
|
||||
info->ttype_encoding = *p++;
|
||||
if (info->ttype_encoding != DW_EH_PE_omit)
|
||||
{
|
||||
#if _GLIBCXX_OVERRIDE_TTYPE_ENCODING
|
||||
/* Older ARM EABI toolchains set this value incorrectly, so use a
|
||||
hardcoded OS-specific format. */
|
||||
info->ttype_encoding = _GLIBCXX_OVERRIDE_TTYPE_ENCODING;
|
||||
#endif
|
||||
p = read_uleb128 (p, &tmp);
|
||||
info->TType = p + tmp;
|
||||
}
|
||||
@ -174,26 +179,6 @@ parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p,
|
||||
return p;
|
||||
}
|
||||
|
||||
#ifdef __ARM_EABI_UNWINDER__
|
||||
|
||||
static Class
|
||||
get_ttype_entry (struct lsda_header_info *info, _uleb128_t i)
|
||||
{
|
||||
_Unwind_Ptr ptr;
|
||||
|
||||
ptr = (_Unwind_Ptr) (info->TType - (i * 4));
|
||||
ptr = _Unwind_decode_target2 (ptr);
|
||||
|
||||
/* NULL ptr means catch-all. Note that if the class is not found,
|
||||
this will abort the program. */
|
||||
if (ptr)
|
||||
return objc_getRequiredClass ((const char *) ptr);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static Class
|
||||
get_ttype_entry (struct lsda_header_info *info, _Unwind_Word i)
|
||||
{
|
||||
@ -211,8 +196,6 @@ get_ttype_entry (struct lsda_header_info *info, _Unwind_Word i)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Using a different personality function name causes link failures
|
||||
when trying to mix code using different exception handling
|
||||
models. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user