diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 688eddac1593f00fe50777d3a1ad67e0fd5696da..0ccdf42c592d53b30d32e007921cae9b894adb55 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-21  Patrick Marlier  <patrick.marlier@gmail.com>
+
+	* eh_cpp.cc: Fix __cxa_end_catch declaration.
+
 2012-05-16  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* configure: Regenerated.
diff --git a/libitm/eh_cpp.cc b/libitm/eh_cpp.cc
index 5c4ca2843597c0137d4ae4fc103d5ad7fd4b4367..27e38542d43453b6af9a5f46ac2b68c35a7657e1 100644
--- a/libitm/eh_cpp.cc
+++ b/libitm/eh_cpp.cc
@@ -36,14 +36,14 @@ extern "C" {
 extern void *__cxa_allocate_exception (size_t) WEAK;
 extern void __cxa_throw (void *, void *, void *) WEAK;
 extern void *__cxa_begin_catch (void *) WEAK;
-extern void *__cxa_end_catch (void) WEAK;
+extern void __cxa_end_catch (void) WEAK;
 extern void __cxa_tm_cleanup (void *, void *, unsigned int) WEAK;
 
 #if !defined (HAVE_ELF_STYLE_WEAKREF) && !defined (__MACH__)
 void *__cxa_allocate_exception (size_t) { return NULL; }
 void __cxa_throw (void *, void *, void *) { return; }
 void *__cxa_begin_catch (void *) { return NULL; }
-void *__cxa_end_catch (void) { return NULL; }
+void __cxa_end_catch (void) { return; }
 void __cxa_tm_cleanup (void *, void *, unsigned int) { return; }
 void _Unwind_DeleteException (_Unwind_Exception *) { return; }
 #endif /* HAVE_ELF_STYLE_WEAKREF */