+ if (DebugDontCrash) {
+ char *buf3;
+ asprintf(&buf3, "objc[%d]: HALTED\n", getpid());
+ _objc_syslog(buf3);
+ _Exit(1);
+ }
+ else {
+ _objc_crashlog(buf1);
+ abort_with_reason(OS_REASON_OBJC, reason, buf1, flags);
+ }
+}
+
+void _objc_fatal_with_reason(uint64_t reason, uint64_t flags,
+ const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ _objc_fatalv(reason, flags, fmt, ap);
+}
+
+void _objc_fatal(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap,fmt);
+ _objc_fatalv(OBJC_EXIT_REASON_UNSPECIFIED,
+ OS_REASON_FLAG_ONE_TIME_FAILURE,
+ fmt, ap);