summary refs log tree commit diff
path: root/nptl/unwind.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/unwind.c')
-rw-r--r--nptl/unwind.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/nptl/unwind.c b/nptl/unwind.c
index 7529174d5a..f6537ba69b 100644
--- a/nptl/unwind.c
+++ b/nptl/unwind.c
@@ -50,7 +50,13 @@ unwind_stop (int version, _Unwind_Action actions,
 static void
 unwind_cleanup (_Unwind_Reason_Code reason, struct _Unwind_Exception *exc)
 {
-  /* Nothing to do.  */
+  /* When we get here a C++ catch block didn't rethrow the object.  We
+     cannot handle this case and therefore abort.  */
+# define STR_N_LEN(str) str, strlen (str)
+  INTERNAL_SYSCALL_DECL (err);
+  INTERNAL_SYSCALL (write, err, 3, STDERR_FILENO,
+		    STR_N_LEN ("FATAL: exception not rethrown\n"));
+  abort ();
 }
 
 #endif	/* have forced unwind */