aboutsummaryrefslogtreecommitdiff
path: root/libitm
diff options
context:
space:
mode:
Diffstat (limited to 'libitm')
-rw-r--r--libitm/ChangeLog9
-rw-r--r--libitm/eh_cpp.cc6
-rw-r--r--libitm/libitm.h2
-rw-r--r--libitm/libitm.texi2
4 files changed, 14 insertions, 5 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index bda0985..5ca36bb 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,12 @@
+2018-12-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88482
+ * eh_cpp.cc (__cxa_throw): Change DEST argument type from
+ void * to void (*) (void *).
+ (_ITM_cxa_throw): Likewise.
+ * libitm.h (_ITM_cxa_throw): Likewise.
+ * libitm.texi (_ITM_cxa_throw): Likewise.
+
2018-12-13 Peter Bergner <bergner@linux.ibm.com>
* config/powerpc/target.h (htm_available): Add support for
diff --git a/libitm/eh_cpp.cc b/libitm/eh_cpp.cc
index 7a6c376..55b0c4e 100644
--- a/libitm/eh_cpp.cc
+++ b/libitm/eh_cpp.cc
@@ -89,7 +89,7 @@ struct __cxa_eh_globals
extern void *__cxa_allocate_exception (size_t) WEAK;
extern void __cxa_free_exception (void *) WEAK;
-extern void __cxa_throw (void *, void *, void *) WEAK;
+extern void __cxa_throw (void *, void *, void (*) (void *)) WEAK;
extern void *__cxa_begin_catch (void *) WEAK;
extern void __cxa_end_catch (void) WEAK;
extern void __cxa_tm_cleanup (void *, void *, unsigned int) WEAK;
@@ -98,7 +98,7 @@ extern __cxa_eh_globals *__cxa_get_globals (void) WEAK;
#if !defined (HAVE_ELF_STYLE_WEAKREF)
void *__cxa_allocate_exception (size_t) { return NULL; }
void __cxa_free_exception (void *) { return; }
-void __cxa_throw (void *, void *, void *) { return; }
+void __cxa_throw (void *, void *, void (*) (void *)) { return; }
void *__cxa_begin_catch (void *) { return NULL; }
void __cxa_end_catch (void) { return; }
void __cxa_tm_cleanup (void *, void *, unsigned int) { return; }
@@ -136,7 +136,7 @@ _ITM_cxa_free_exception (void *exc_ptr)
}
void
-_ITM_cxa_throw (void *obj, void *tinfo, void *dest)
+_ITM_cxa_throw (void *obj, void *tinfo, void (*dest) (void *))
{
// This used to be instrumented, but does not need to be anymore.
__cxa_throw (obj, tinfo, dest);
diff --git a/libitm/libitm.h b/libitm/libitm.h
index daf342e..dd9b5de 100644
--- a/libitm/libitm.h
+++ b/libitm/libitm.h
@@ -284,7 +284,7 @@ extern void _ITM_deregisterTMCloneTable (void *);
extern void *_ITM_cxa_allocate_exception (size_t);
extern void _ITM_cxa_free_exception (void *exc_ptr);
-extern void _ITM_cxa_throw (void *obj, void *tinfo, void *dest);
+extern void _ITM_cxa_throw (void *obj, void *tinfo, void (*dest) (void *));
extern void *_ITM_cxa_begin_catch (void *exc_ptr);
extern void _ITM_cxa_end_catch (void);
extern void _ITM_commitTransactionEH(void *exc_ptr) ITM_REGPARM;
diff --git a/libitm/libitm.texi b/libitm/libitm.texi
index 7a91348..d0b7b07 100644
--- a/libitm/libitm.texi
+++ b/libitm/libitm.texi
@@ -269,7 +269,7 @@ transactions.
void _ITM_commitTransactionEH(void *exc_ptr) ITM_REGPARM;
void *_ITM_cxa_allocate_exception (size_t);
void _ITM_cxa_free_exception (void *exc_ptr);
-void _ITM_cxa_throw (void *obj, void *tinfo, void *dest);
+void _ITM_cxa_throw (void *obj, void *tinfo, void (*dest) (void *));
void *_ITM_cxa_begin_catch (void *exc_ptr);
void _ITM_cxa_end_catch (void);
@end example