//===-- PosixSpawnResponsible.h ---------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_HOST_POSIXSPAWNRESPONSIBLE_H #define LLDB_HOST_POSIXSPAWNRESPONSIBLE_H #include #if __has_include() #include #include #include // Older SDKs have responsibility.h but not this particular function. Let's // include the prototype here. errno_t responsibility_spawnattrs_setdisclaim(posix_spawnattr_t *attrs, bool disclaim); #endif static inline int setup_posix_spawn_responsible_flag(posix_spawnattr_t *attr) { if (@available(macOS 10.14, *)) { #if __has_include() static __typeof__(responsibility_spawnattrs_setdisclaim) *responsibility_spawnattrs_setdisclaim_ptr; static dispatch_once_t pred; dispatch_once(&pred, ^{ responsibility_spawnattrs_setdisclaim_ptr = #ifdef __cplusplus reinterpret_cast<__typeof__(&responsibility_spawnattrs_setdisclaim)> #endif (dlsym(RTLD_DEFAULT, "responsibility_spawnattrs_setdisclaim")); }); if (responsibility_spawnattrs_setdisclaim_ptr) return responsibility_spawnattrs_setdisclaim_ptr(attr, true); #endif } return 0; } #endif // LLDB_HOST_POSIXSPAWNRESPONSIBLE_H