summaryrefslogtreecommitdiff
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
(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 */