clang -cc1 -cc1 -triple amd64-unknown-openbsd7.0 -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name conftest.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/gnu/usr.bin/cvs/obj -resource-dir /usr/local/lib/clang/13.0.0 -internal-isystem /usr/local/lib/clang/13.0.0/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/gnu/usr.bin/cvs/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/vmm/scan-build/2022-01-12-194120-40624-1 -x c conftest.c
| 1 | #line 3086 "configure" |
| 2 | #include "confdefs.h" |
| 3 | |
| 4 | #include <stdio.h> |
| 5 | #include <sys/types.h> |
| 6 | #include <sys/stat.h> |
| 7 | #ifdef HAVE_UNISTD_H |
| 8 | #include <unistd.h> |
| 9 | #endif |
| 10 | #ifdef HAVE_VFORK_H |
| 11 | #include <vfork.h> |
| 12 | #endif |
| 13 | |
| 14 | |
| 15 | |
| 16 | |
| 17 | |
| 18 | |
| 19 | static |
| 20 | #ifdef __cplusplus |
| 21 | sparc_address_test (int arg) |
| 22 | #else |
| 23 | sparc_address_test (arg) int arg; |
| 24 | #endif |
| 25 | { |
| 26 | static pid_t child; |
| 27 | if (!child) { |
| |
| 28 | child = vfork (); |
| 29 | if (child < 0) { |
| |
| 30 | perror ("vfork"); |
| 31 | _exit(2); |
| 32 | } |
| 33 | if (!child) { |
| |
| 34 | arg = getpid(); |
| 4 | | This function call is prohibited after a successful vfork |
|
| 35 | write(-1, "", 0); |
| 36 | _exit (arg); |
| 37 | } |
| 38 | } |
| 39 | } |
| 40 | main() { |
| 41 | pid_t parent = getpid (); |
| 42 | pid_t child; |
| 43 | |
| 44 | sparc_address_test (); |
| 45 | |
| 46 | child = vfork (); |
| 47 | |
| 48 | if (child == 0) { |
| 49 | |
| 50 | |
| 51 | |
| 52 | |
| 53 | |
| 54 | |
| 55 | |
| 56 | |
| 57 | |
| 58 | |
| 59 | pid_t |
| 60 | p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), |
| 61 | p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); |
| 62 | |
| 63 | |
| 64 | if (p != p1 || p != p2 || p != p3 || p != p4 |
| 65 | || p != p5 || p != p6 || p != p7) |
| 66 | _exit(1); |
| 67 | |
| 68 | |
| 69 | |
| 70 | |
| 71 | |
| 72 | |
| 73 | _exit(close(fileno(stdout)) != 0); |
| 74 | } else { |
| 75 | int status; |
| 76 | struct stat st; |
| 77 | |
| 78 | while (wait(&status) != child) |
| 79 | ; |
| 80 | exit( |
| 81 | |
| 82 | child < 0 |
| 83 | |
| 84 | |
| 85 | || status |
| 86 | |
| 87 | |
| 88 | || parent != getpid() |
| 89 | |
| 90 | |
| 91 | || fstat(fileno(stdout), &st) != 0 |
| 92 | ); |
| 93 | } |
| 94 | } |