diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 49115a46864c..5e70b6e8838b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2003-05-27 Steve Ellcey + + * 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 * 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 87d9d4f8d8e0..27951c199cb4 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 c69c02140685..54d10fbc4f5b 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -97,8 +97,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.