libstd++
코드베이스 의 빠른 grep은 다음 두 가지 사용법을 보여줍니다 __gx_personality_v0
.
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 *);
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)
{
// ... code to handle exceptions and stuff ...
}
(참고 : 실제로는 그것보다 조금 더 복잡합니다. 일부 세부 사항을 변경할 수있는 조건부 컴파일이 있습니다).
따라서 코드가 실제로 예외 처리를 사용하지 않는 한, 심볼을 정의하는 void*
것은 아무 영향도 미치지 않지만 즉시 충돌하게 될 것 __gxx_personality_v0
입니다. 함수를 호출하면 주소 0으로 점프하여 세그 폴트가 발생합니다.
-fno-exceptions
.CPPFLAGS += -fno-exceptions
내 makefile에 추가 했는데 오류가 해결되었습니다.