aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@codesourcery.com>2006-12-04 17:25:36 +0000
committerCarlos O'Donell <carlos@gcc.gnu.org>2006-12-04 17:25:36 +0000
commit7f575bf6d48e70be2184a4f7d19dd7c78c6f5113 (patch)
tree9d8112b2c029ac05a89b08e2bcee3599ff6350c3 /gcc
parent32ace6e2a6f1d2b9307df202722cc092d4ce513d (diff)
downloadgcc-7f575bf6d48e70be2184a4f7d19dd7c78c6f5113.zip
gcc-7f575bf6d48e70be2184a4f7d19dd7c78c6f5113.tar.gz
gcc-7f575bf6d48e70be2184a4f7d19dd7c78c6f5113.tar.bz2
unwind-arm.c: Adjust __cxa_type_match declaration.
gcc/ 2006-12-04 Carlos O'Donell <carlos@codesourcery.com> * config/arm/unwind-arm.c: Adjust __cxa_type_match declaration. (__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match. From-SVN: r119498
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/unwind-arm.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8e51deb..a36a042 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-04 Carlos O'Donell <carlos@codesourcery.com>
+
+ * config/arm/unwind-arm.c: Adjust __cxa_type_match declaration.
+ (__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match.
+
2006-12-04 Andrew MacLeod <amacleod@redhat.com>
* tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
diff --git a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
index 6b7e2dd..9b7229e 100644
--- a/gcc/config/arm/unwind-arm.c
+++ b/gcc/config/arm/unwind-arm.c
@@ -41,6 +41,7 @@ void __attribute__((weak)) __cxa_call_unexpected(_Unwind_Control_Block *ucbp);
bool __attribute__((weak)) __cxa_begin_cleanup(_Unwind_Control_Block *ucbp);
bool __attribute__((weak)) __cxa_type_match(_Unwind_Control_Block *ucbp,
const type_info *rttip,
+ bool is_reference,
void **matched_object);
_Unwind_Ptr __attribute__((weak))
@@ -847,6 +848,7 @@ __gnu_unwind_pr_common (_Unwind_State state,
{
/* Check for a barrier. */
_uw rtti;
+ bool is_reference = (data[0] & uint32_highbit) != 0;
void *matched;
/* Check for no-throw areas. */
@@ -860,6 +862,7 @@ __gnu_unwind_pr_common (_Unwind_State state,
/* Match a catch specification. */
rtti = _Unwind_decode_target2 ((_uw) &data[1]);
if (!__cxa_type_match (ucbp, (type_info *) rtti,
+ is_reference,
&matched))
matched = (void *)0;
}
@@ -907,7 +910,7 @@ __gnu_unwind_pr_common (_Unwind_State state,
{
matched = (void *)(ucbp + 1);
rtti = _Unwind_decode_target2 ((_uw) &data[i + 1]);
- if (__cxa_type_match (ucbp, (type_info *) rtti,
+ if (__cxa_type_match (ucbp, (type_info *) rtti, 0,
&matched))
break;
}