X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/d190cdc3f5544636abb56dc1874be391d3e1b148..94ff46dc2849db4d43eaaf144872decc522aafb4:/libsyscall/wrappers/terminate_with_reason.c?ds=sidebyside diff --git a/libsyscall/wrappers/terminate_with_reason.c b/libsyscall/wrappers/terminate_with_reason.c index 3bb8a6683..dd7719b47 100644 --- a/libsyscall/wrappers/terminate_with_reason.c +++ b/libsyscall/wrappers/terminate_with_reason.c @@ -28,38 +28,39 @@ /* System call entry points */ int __terminate_with_payload(int pid, uint32_t reason_namespace, uint64_t reason_code, - void *payload, uint32_t payload_size, const char *reason_string, - uint64_t reason_flags); + void *payload, uint32_t payload_size, const char *reason_string, + uint64_t reason_flags); void __abort_with_payload(uint32_t reason_namespace, uint64_t reason_code, - void *payload, uint32_t payload_size, const char *reason_string, - uint64_t reason_flags); + void *payload, uint32_t payload_size, const char *reason_string, + uint64_t reason_flags); static void abort_with_payload_wrapper_internal(uint32_t reason_namespace, uint64_t reason_code, - void *payload, uint32_t payload_size, const char *reason_string, - uint64_t reason_flags) __attribute__((noreturn)); + void *payload, uint32_t payload_size, const char *reason_string, + uint64_t reason_flags) __attribute__((noreturn, cold)); /* System call wrappers */ int terminate_with_reason(int pid, uint32_t reason_namespace, uint64_t reason_code, - const char *reason_string, uint64_t reason_flags) + const char *reason_string, uint64_t reason_flags) { return __terminate_with_payload(pid, reason_namespace, reason_code, 0, 0, - reason_string, reason_flags); + reason_string, reason_flags); } int terminate_with_payload(int pid, uint32_t reason_namespace, uint64_t reason_code, - void *payload, uint32_t payload_size, - const char *reason_string, uint64_t reason_flags) + void *payload, uint32_t payload_size, + const char *reason_string, uint64_t reason_flags) { return __terminate_with_payload(pid, reason_namespace, reason_code, payload, - payload_size, reason_string, reason_flags); + payload_size, reason_string, reason_flags); } -static void abort_with_payload_wrapper_internal(uint32_t reason_namespace, uint64_t reason_code, - void *payload, uint32_t payload_size, const char *reason_string, - uint64_t reason_flags) +static void +abort_with_payload_wrapper_internal(uint32_t reason_namespace, uint64_t reason_code, + void *payload, uint32_t payload_size, const char *reason_string, + uint64_t reason_flags) { sigset_t unmask_signal; @@ -69,28 +70,27 @@ static void abort_with_payload_wrapper_internal(uint32_t reason_namespace, uint6 sigprocmask(SIG_UNBLOCK, &unmask_signal, NULL); __abort_with_payload(reason_namespace, reason_code, payload, payload_size, - reason_string, reason_flags); + reason_string, reason_flags); /* If sending a SIGABRT failed, we fall back to SIGKILL */ terminate_with_payload(getpid(), reason_namespace, reason_code, payload, payload_size, - reason_string, reason_flags); + reason_string, reason_flags | OS_REASON_FLAG_ABORT); __builtin_unreachable(); } void abort_with_reason(uint32_t reason_namespace, uint64_t reason_code, const char *reason_string, - uint64_t reason_flags) + uint64_t reason_flags) { abort_with_payload_wrapper_internal(reason_namespace, reason_code, 0, 0, reason_string, reason_flags); } void abort_with_payload(uint32_t reason_namespace, uint64_t reason_code, void *payload, - uint32_t payload_size, const char *reason_string, - uint64_t reason_flags) + uint32_t payload_size, const char *reason_string, + uint64_t reason_flags) { abort_with_payload_wrapper_internal(reason_namespace, reason_code, payload, payload_size, - reason_string, reason_flags); + reason_string, reason_flags); } -