diff options
author | Steve Ellcey <sje@cup.hp.com> | 2003-05-27 21:45:48 +0000 |
---|---|---|
committer | Steve Ellcey <sje@gcc.gnu.org> | 2003-05-27 21:45:48 +0000 |
commit | ed0d100f7c513dbd9b150385fb6aa8552f6ccb3e (patch) | |
tree | ba4d1028c4a9011418fd30d489ec6f32a6050c4b | |
parent | 87a7c5a1efaa2c339149c3ccbabdf2952824e424 (diff) | |
download | gcc-ed0d100f7c513dbd9b150385fb6aa8552f6ccb3e.zip gcc-ed0d100f7c513dbd9b150385fb6aa8552f6ccb3e.tar.gz gcc-ed0d100f7c513dbd9b150385fb6aa8552f6ccb3e.tar.bz2 |
os_defines.h: Define _LIBUNWIND_STD_ABI if we are on IA64 HP-UX.
* config/os/hpux/os_defines.h: Define _LIBUNWIND_STD_ABI if we are
on IA64 HP-UX.
* libsupc++/eh_throw.cc: Don't call _Unwind_Resume_or_Rethrow if
_LIBUNWIND_STD_ABI is set.
From-SVN: r67193
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/config/os/hpux/os_defines.h | 7 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_throw.cc | 4 |
3 files changed, 18 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 49115a4..5e70b6e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2003-05-27 Steve Ellcey <sje@cup.hp.com> + + * config/os/hpux/os_defines.h: Define _LIBUNWIND_STD_ABI if we are + on IA64 HP-UX. + * libsupc++/eh_throw.cc: Don't call _Unwind_Resume_or_Rethrow if + _LIBUNWIND_STD_ABI is set. + 2003-05-26 Brendan Kehoe <brendan@zen.org> * include/bits/locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and diff --git a/libstdc++-v3/config/os/hpux/os_defines.h b/libstdc++-v3/config/os/hpux/os_defines.h index 87d9d4f..27951c1 100644 --- a/libstdc++-v3/config/os/hpux/os_defines.h +++ b/libstdc++-v3/config/os/hpux/os_defines.h @@ -84,6 +84,13 @@ namespace std typedef long int __padding_type; #endif +// GCC on IA64 HP-UX uses the HP-UX system unwind library, +// it does not have the _Unwind_Resume_or_Rethrow entry point +// because that is not part of the standard IA64 Unwind ABI. +#if defined (__ia64__) +#define _LIBUNWIND_STD_ABI 1 +#endif + /* We need explicit instantiation of the atomicity lock on HPPA if there is no weak support. */ #if !defined(_GLIBCPP_SUPPORTS_WEAK) && defined (__hppa__) diff --git a/libstdc++-v3/libsupc++/eh_throw.cc b/libstdc++-v3/libsupc++/eh_throw.cc index c69c021..54d10fb 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -98,8 +98,12 @@ __cxa_rethrow () #ifdef _GLIBCPP_SJLJ_EXCEPTIONS _Unwind_SjLj_Resume_or_Rethrow (&header->unwindHeader); #else +#ifdef _LIBUNWIND_STD_ABI + _Unwind_RaiseException (&header->unwindHeader); +#else _Unwind_Resume_or_Rethrow (&header->unwindHeader); #endif +#endif // Some sort of unwinding error. Note that terminate is a handler. __cxa_begin_catch (&header->unwindHeader); |