mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-03 01:36:06 +00:00

On macOS/arm, signature verification has kill semantics by default. Signature verification is cached with a file's inode (actually, vnode), and if a new executable is copied over an existing file (which reuses the inode), the cache isn't invalidated. So when the new executable is executed, the kernel still has the old content's signature cached and the kills the executable because the old signatue doesn't match the new contents (https://openradar.appspot.com/FB8914243). As workaround, rm the desitnation files first, to ensure they have a fresh vnode (and hence no stale cached signature) after the copy. Part of PR46647. See also e0e334a9c1ac for a similar change.
28 lines
967 B
LLVM
28 lines
967 B
LLVM
; If the binary looks up libraries using an rpath, we can't test this
|
|
; without copying the whole lib dir or polluting the build dir.
|
|
; REQUIRES: static-libs
|
|
|
|
; The above also applies if the binary is built with libc++.
|
|
; UNSUPPORTED: libcxx-used
|
|
|
|
; RUN: echo > %t.input
|
|
|
|
; workaround for https://openradar.appspot.com/FB8914243
|
|
; RUN: rm -f %t.bin--gisel
|
|
; RUN: rm -f %t.bin--gisel-O2
|
|
; RUN: rm -f %t.bin--unexist
|
|
|
|
; RUN: cp llvm-isel-fuzzer %t.bin--gisel
|
|
; RUN: not %t.bin--gisel %t.input 2>&1 | FileCheck -check-prefix=GISEL %s
|
|
; GISEL: Injected args: -global-isel -O0
|
|
; GISEL: -mtriple must be specified
|
|
|
|
; RUN: cp llvm-isel-fuzzer %t.bin--gisel-O2
|
|
; RUN: not %t.bin--gisel-O2 %t.input 2>&1 | FileCheck -check-prefix=GISEL-O2 %s
|
|
; GISEL-O2: Injected args: -global-isel -O0 -O2
|
|
; GISEL-O2: -mtriple must be specified
|
|
|
|
; RUN: cp llvm-isel-fuzzer %t.bin--unexist
|
|
; RUN: not %t.bin--unexist %t.input 2>&1 | FileCheck -check-prefix=NO-OPT %s
|
|
; NO-OPT: Unknown option:
|