aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Ellcey <sje@cup.hp.com>2003-05-27 21:45:48 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2003-05-27 21:45:48 +0000
commited0d100f7c513dbd9b150385fb6aa8552f6ccb3e (patch)
treeba4d1028c4a9011418fd30d489ec6f32a6050c4b
parent87a7c5a1efaa2c339149c3ccbabdf2952824e424 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--libstdc++-v3/config/os/hpux/os_defines.h7
-rw-r--r--libstdc++-v3/libsupc++/eh_throw.cc4
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);