summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-04 18:20:21 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-04 18:20:21 +0000
commit8c5845924576f2fcdf955f299830454c290d5943 (patch)
tree5e966e9d60dc8b553e7925abbaff08734452bc3e
parent2bfbbd2b275955dece7fedae08ed99e649ba8318 (diff)
downloadppe42-gcc-8c5845924576f2fcdf955f299830454c290d5943.tar.gz
ppe42-gcc-8c5845924576f2fcdf955f299830454c290d5943.zip
* unwind.h (_UA_END_OF_STACK): New flag.
* unwind.inc (_Unwind_ForcedUnwind_Phase2): Set it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45384 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/unwind.h1
-rw-r--r--gcc/unwind.inc8
3 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 22c8efe7cbc..1de0a42fb77 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-09-04 Richard Henderson <rth@redhat.com>
+
+ * unwind.h (_UA_END_OF_STACK): New flag.
+ * unwind.inc (_Unwind_ForcedUnwind_Phase2): Set it.
+
Tue Sep 4 11:16:35 2001 Jeffrey A Law (law@cygnus.com)
* h8300/elf.h (LINK_SPEC): Redefine appropriately for the H8.
diff --git a/gcc/unwind.h b/gcc/unwind.h
index 0ad58144896..fc36913d979 100644
--- a/gcc/unwind.h
+++ b/gcc/unwind.h
@@ -87,6 +87,7 @@ typedef int _Unwind_Action;
#define _UA_CLEANUP_PHASE 2
#define _UA_HANDLER_FRAME 4
#define _UA_FORCE_UNWIND 8
+#define _UA_END_OF_STACK 16
/* This is an opaque type used to refer to a system-specific data
structure used by the system unwinder. This context is created and
diff --git a/gcc/unwind.inc b/gcc/unwind.inc
index 2b51ab7964b..bd867e60892 100644
--- a/gcc/unwind.inc
+++ b/gcc/unwind.inc
@@ -142,14 +142,18 @@ _Unwind_ForcedUnwind_Phase2(struct _Unwind_Exception *exc,
while (1)
{
_Unwind_FrameState fs;
+ int action;
code = uw_frame_state_for (context, &fs);
if (code != _URC_NO_REASON && code != _URC_END_OF_STACK)
return _URC_FATAL_PHASE2_ERROR;
/* Unwind successful. */
- stop_code = (*stop) (1, _UA_FORCE_UNWIND | _UA_CLEANUP_PHASE,
- exc->exception_class, exc, context, stop_argument);
+ action = _UA_FORCE_UNWIND | _UA_CLEANUP_PHASE;
+ if (code == _URC_END_OF_STACK)
+ action |= _UA_END_OF_STACK;
+ stop_code = (*stop) (1, action, exc->exception_class, exc,
+ context, stop_argument);
if (stop_code != _URC_NO_REASON)
return _URC_FATAL_PHASE2_ERROR;
OpenPOWER on IntegriCloud