fix __cxa_throw signature
authorPhilip Pronin <philipp@fb.com>
Tue, 30 Dec 2014 10:20:41 +0000 (02:20 -0800)
committerViswanath Sivakumar <viswanath@fb.com>
Tue, 13 Jan 2015 19:01:03 +0000 (11:01 -0800)
Summary: `__cxa_throw` signature didn't match C++ ABI (see 2.4.3 in http://refspecs.linuxfoundation.org/abi-eh-1.22.html), gcc 4.9 was complaining.

Test Plan: fbconfig -r folly && fbmake opt -j32

Reviewed By: soren@fb.com

Subscribers: folly-diffs@

FB internal diff: D1760492

Tasks: 5908365

Signature: t1:1760492:1420251038:6d04683f96ac889ff348ca0485420c975819b90b

folly/experimental/exception_tracer/ExceptionTracerLib.cpp

index 8643623d176b70da70efc541389ddf99d2e4af85..20c0896a90da023f895c288239b69d38966188f5 100644 (file)
@@ -30,7 +30,8 @@ namespace __cxxabiv1 {
 
 extern "C" {
 FOLLY_NORETURN void __cxa_throw(void* thrownException,
-                 std::type_info* type, void (*destructor)(void));
+                                std::type_info* type,
+                                void (*destructor)(void*));
 void* __cxa_begin_catch(void* excObj);
 FOLLY_NORETURN void __cxa_rethrow(void);
 void __cxa_end_catch(void);
@@ -48,8 +49,9 @@ FOLLY_TLS StackTraceStack caughtExceptions;
 pthread_once_t initialized = PTHREAD_ONCE_INIT;
 
 extern "C" {
-FOLLY_NORETURN typedef void (*CxaThrowType)(void*, std::type_info*,
-                                            void (*)(void));
+FOLLY_NORETURN typedef void (*CxaThrowType)(void*,
+                                            std::type_info*,
+                                            void (*)(void*));
 typedef void* (*CxaBeginCatchType)(void*);
 FOLLY_NORETURN typedef void (*CxaRethrowType)(void);
 typedef void (*CxaEndCatchType)(void);
@@ -123,8 +125,9 @@ void moveTopException(StackTraceStack& from, StackTraceStack& to) {
 
 namespace __cxxabiv1 {
 
-void __cxa_throw(void* thrownException, std::type_info* type,
-                 void (*destructor)(void)) {
+void __cxa_throw(void* thrownException,
+                 std::type_info* type,
+                 void (*destructor)(void*)) {
   addActiveException();
   orig_cxa_throw(thrownException, type, destructor);
 }