The quick grep of the libstd++ code base showed the following two uses of __gx_personality_v0 :
In libsupC ++ / unwind-cxx.h
// GNU C++ personality routine, Version 0. extern "C" _Unwind_Reason_Code __gxx_personality_v0 (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *);
In libsupC ++ / eh_personality.cc
#define PERSONALITY_FUNCTION __gxx_personality_v0 extern "C" _Unwind_Reason_Code PERSONALITY_FUNCTION (int version, _Unwind_Action actions, _Unwind_Exception_Class exception_class, struct _Unwind_Exception *ue_header, struct _Unwind_Context *context) {
(Note: this is actually a little more complicated than this, there is conditional compilation that can change some details).
So, until your code actually uses exception handling, defining a character as void* will not affect anything, but as soon as this happens, you are going to crash - __gxx_personality_v0 is a function, not some global object, so trying to call a function will go to address 0 and call segfault.
Adam Rosenfield Nov 30 '08 at 17:35 2008-11-30 17:35
source share