Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision 2554f2465980526a772aa75500f16cbd403fd235)
+++ libcfa/src/exception.c	(revision c40157ec46899c5e6a8afa9d8f9f0dba822d528f)
@@ -414,9 +414,9 @@
 				_Unwind_Word match_pos =
 #				if defined( __x86_64 )
-				    _Unwind_GetCFA(unwind_context);
+				    _Unwind_GetCFA(unwind_context) + 8;
 #				elif defined( __i386 )
-				    _Unwind_GetCFA(unwind_context) + 8;
+				    _Unwind_GetCFA(unwind_context) + 24;
 #				elif defined( __ARM_ARCH )
-				    _Unwind_GetCFA(unwind_context) + 16;
+				    _Unwind_GetCFA(unwind_context) + 40;
 #				endif
 				int (*matcher)(exception_t *) = *(int(**)(exception_t *))match_pos;
@@ -483,4 +483,5 @@
 __attribute__((noinline))
 int __cfaehm_try_terminate(void (*try_block)(),
+		__attribute__((unused)) void (*catch_block)(int index, exception_t * except),
 		__attribute__((unused)) int (*match_block)(exception_t * except)) {
 	//! volatile int xy = 0;
Index: libcfa/src/exception.h
===================================================================
--- libcfa/src/exception.h	(revision 2554f2465980526a772aa75500f16cbd403fd235)
+++ libcfa/src/exception.h	(revision c40157ec46899c5e6a8afa9d8f9f0dba822d528f)
@@ -60,4 +60,5 @@
 int __cfaehm_try_terminate(
 	void (*try_block)(),
+	void (*catch_block)(int index, exception_t * except),
 	int (*match_block)(exception_t * except));
 
