Coverage Report

Created: 2022-01-18 06:27

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/source/Host/macosx/objcxx/PosixSpawnResponsible.h
Line
Count
Source (jump to first uncovered line)
1
//===-- PosixSpawnResponsible.h ---------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLDB_HOST_POSIXSPAWNRESPONSIBLE_H
10
#define LLDB_HOST_POSIXSPAWNRESPONSIBLE_H
11
12
#include <spawn.h>
13
14
#if __has_include(<responsibility.h>)
15
#include <dispatch/dispatch.h>
16
#include <dlfcn.h>
17
#include <responsibility.h>
18
19
// Older SDKs  have responsibility.h but not this particular function. Let's
20
// include the prototype here.
21
errno_t responsibility_spawnattrs_setdisclaim(posix_spawnattr_t *attrs,
22
                                              bool disclaim);
23
24
#endif
25
26
0
static inline int setup_posix_spawn_responsible_flag(posix_spawnattr_t *attr) {
27
0
  if (@available(macOS 10.14, *)) {
28
#if __has_include(<responsibility.h>)
29
    static __typeof__(responsibility_spawnattrs_setdisclaim)
30
        *responsibility_spawnattrs_setdisclaim_ptr;
31
    static dispatch_once_t pred;
32
    dispatch_once(&pred, ^{
33
      responsibility_spawnattrs_setdisclaim_ptr =
34
#ifdef __cplusplus
35
          reinterpret_cast<__typeof__(&responsibility_spawnattrs_setdisclaim)>
36
#endif
37
          (dlsym(RTLD_DEFAULT, "responsibility_spawnattrs_setdisclaim"));
38
    });
39
    if (responsibility_spawnattrs_setdisclaim_ptr)
40
      return responsibility_spawnattrs_setdisclaim_ptr(attr, true);
41
#endif
42
0
  }
43
0
  return 0;
44
0
}
45
46
#endif // LLDB_HOST_POSIXSPAWNRESPONSIBLE_H