Fix building without ObjC++ support.

main
Frederik Seiffert 6 years ago committed by David Chisnall
parent ed8eec6c6a
commit cca84b183c

@ -326,6 +326,8 @@ if (ENABLE_OBJCXX)
endif()
list(APPEND libobjc_CXX_SRCS ${libobjcxx_CXX_SRCS})
target_sources(objc PRIVATE ${libobjc_CXX_SRCS})
else()
add_definitions(-DNO_OBJCXX)
endif()

@ -555,6 +555,7 @@ BEGIN_PERSONALITY_FUNCTION(__gnustep_objc_personality_v0)
}
BEGIN_PERSONALITY_FUNCTION(__gnustep_objcxx_personality_v0)
#ifndef NO_OBJCXX
if (cxx_exception_class == 0)
{
test_cxx_eh_implementation();
@ -579,6 +580,7 @@ BEGIN_PERSONALITY_FUNCTION(__gnustep_objcxx_personality_v0)
}
return ret;
}
#endif
return CALL_PERSONALITY_FUNCTION(__gxx_personality_v0);
}
@ -621,6 +623,7 @@ id objc_begin_catch(struct _Unwind_Exception *exceptionObject)
// exceptions are in-flight
abort();
}
#ifndef NO_OBJCXX
// If this is a C++ exception, let the C++ runtime handle it.
if (exceptionObject->exception_class == cxx_exception_class)
{
@ -628,6 +631,7 @@ id objc_begin_catch(struct _Unwind_Exception *exceptionObject)
td->current_exception_type = CXX;
return __cxa_begin_catch(exceptionObject);
}
#endif
DEBUG_LOG("foreign exception catch\n");
// Box if we have a boxing function.
if (_objc_class_for_boxing_foreign_exception)
@ -719,11 +723,13 @@ void objc_exception_rethrow(struct _Unwind_Exception *e)
}
abort();
}
#ifndef NO_OBJCXX
else if (td->current_exception_type == CXX)
{
assert(e->exception_class == cxx_exception_class);
__cxa_rethrow();
}
#endif
if (td->current_exception_type == BOXED_FOREIGN)
{
SEL rethrow_sel = sel_registerName("rethrow");

Loading…
Cancel
Save