about summary refs log tree commit diff
path: root/nptl/unwind.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-05-09 03:00:52 +0000
committerUlrich Drepper <drepper@redhat.com>2003-05-09 03:00:52 +0000
commit29b095a1561f866b995b23621d1e2ee78e473dc4 (patch)
treec8f799914d7e2ecb442341f1c3e0e49cf16bbd81 /nptl/unwind.c
parent7618d44c9a97b7af563e4ac83e8cb3e46d4cdfb3 (diff)
downloadglibc-29b095a1561f866b995b23621d1e2ee78e473dc4.tar.gz
glibc-29b095a1561f866b995b23621d1e2ee78e473dc4.tar.xz
glibc-29b095a1561f866b995b23621d1e2ee78e473dc4.zip
(unwind_cleanup): Print error message and then abort. This function must never be reached.
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 */