diff options
author | Paul Brook <paul@codesourcery.com> | 2011-10-20 13:56:12 +0000 |
---|---|---|
committer | Matthias Klose <doko@gcc.gnu.org> | 2011-10-20 13:56:12 +0000 |
commit | 86220f3f94c22f1b52d3406326b797ae9a0ba967 (patch) | |
tree | 1930855e20b442b11112e68a4046d974d71f6320 /libjava | |
parent | 6b2de4c7d8fac7d98a3e152f3905849ac55109fe (diff) | |
download | gcc-86220f3f94c22f1b52d3406326b797ae9a0ba967.zip gcc-86220f3f94c22f1b52d3406326b797ae9a0ba967.tar.gz gcc-86220f3f94c22f1b52d3406326b797ae9a0ba967.tar.bz2 |
exception.cc (parse_lsda_header): hardcode ttype_encoding for older ARM EABI toolchains.
2011-10-17 Paul Brook <paul@codesourcery.com>
* exception.cc (parse_lsda_header): hardcode ttype_encoding for older
ARM EABI toolchains.
(get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant.
From-SVN: r180254
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 6 | ||||
-rw-r--r-- | libjava/exception.cc | 22 |
2 files changed, 11 insertions, 17 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index efbf855..7ff941e 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2011-10-17 Paul Brook <paul@codesourcery.com> + + * exception.cc (parse_lsda_header): hardcode ttype_encoding for older + ARM EABI toolchains. + (get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant. + 2011-10-16 Uros Bizjak <ubizjak@gmail.com> Eric Botcazou <ebotcazou@adacore.com> diff --git a/libjava/exception.cc b/libjava/exception.cc index 5a8a9e2..56f25ad 100644 --- a/libjava/exception.cc +++ b/libjava/exception.cc @@ -161,6 +161,11 @@ parse_lsda_header (_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; } @@ -176,21 +181,6 @@ parse_lsda_header (_Unwind_Context *context, const unsigned char *p, return p; } -#ifdef __ARM_EABI_UNWINDER__ - -static void ** -get_ttype_entry(_Unwind_Context *, lsda_header_info* info, _uleb128_t i) -{ - _Unwind_Ptr ptr; - - ptr = (_Unwind_Ptr) (info->TType - (i * 4)); - ptr = _Unwind_decode_target2(ptr); - - return reinterpret_cast<void **>(ptr); -} - -#else - static void ** get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i) { @@ -202,8 +192,6 @@ get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i) return reinterpret_cast<void **>(ptr); } -#endif - // Using a different personality function name causes link failures // when trying to mix code using different exception handling models. #ifdef SJLJ_EXCEPTIONS |