The test accidentally tested something else that makes lld fail with a different (correct-looking) error that wasn't the one the test tries to test for. (The test case before this change makes ld64 hang in an infinite loop.)
116 lines
3.7 KiB
ArmAsm
116 lines
3.7 KiB
ArmAsm
# REQUIRES: aarch64
|
|
|
|
## --no-leading-lines is needed for .tbd files.
|
|
# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
|
|
|
# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/foo.o %t/foo.s
|
|
# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/bar.o %t/bar.s
|
|
|
|
## MH_APP_EXTENSION_SAFE is only set on dylibs, and only if requested.
|
|
# RUN: %lld -arch arm64 -dylib -o %t/foo.dylib %t/foo.o
|
|
# RUN: llvm-otool -hv %t/foo.dylib | FileCheck --check-prefix=NOAPPEXT %s
|
|
# RUN: %lld -arch arm64 -dylib -o %t/foo-appext.dylib %t/foo.o \
|
|
# RUN: -application_extension
|
|
# RUN: llvm-otool -hv %t/foo-appext.dylib | FileCheck --check-prefix=APPEXT %s
|
|
# RUN: %lld -arch arm64 -dylib -o %t/foo-noappext.dylib %t/foo.o \
|
|
# RUN: -application_extension -no_application_extension
|
|
# RUN: llvm-otool -hv %t/foo-noappext.dylib \
|
|
# RUN: | FileCheck --check-prefix=NOAPPEXT %s
|
|
# RUN: %lld -arch arm64 -bundle -o %t/foo.so %t/foo.o \
|
|
# RUN: -application_extension
|
|
# RUN: llvm-otool -hv %t/foo.so | FileCheck --check-prefix=NOAPPEXT %s
|
|
|
|
# APPEXT: APP_EXTENSION_SAFE
|
|
# NOAPPEXT-NOT: APP_EXTENSION_SAFE
|
|
|
|
## The warning is emitted for all target types.
|
|
# RUN: %lld -arch arm64 -dylib -o %t/bar.dylib %t/bar.o \
|
|
# RUN: -application_extension %t/foo-appext.dylib
|
|
# RUN: %lld -arch arm64 -dylib -o %t/bar.dylib %t/bar.o \
|
|
# RUN: -application_extension -L %t -ltbd-appext
|
|
# RUN: not %lld -arch arm64 -dylib -o %t/bar.dylib %t/bar.o \
|
|
# RUN: -application_extension %t/foo-noappext.dylib \
|
|
# RUN: 2>&1 | FileCheck --check-prefix=WARN %s
|
|
# RUN: not %lld -arch arm64 -dylib -o %t/bar.dylib %t/bar.o \
|
|
# RUN: -application_extension -L %t -ltbd-noappext \
|
|
# RUN: 2>&1 | FileCheck --check-prefix=WARN %s
|
|
# RUN: not %lld -arch arm64 -bundle -o %t/bar.so %t/bar.o \
|
|
# RUN: -application_extension %t/foo-noappext.dylib \
|
|
# RUN: 2>&1 | FileCheck --check-prefix=WARN %s
|
|
# RUN: not %lld -arch arm64 -bundle -o %t/bar.so %t/bar.o \
|
|
# RUN: -application_extension -L %t -ltbd-noappext \
|
|
# RUN: 2>&1 | FileCheck --check-prefix=WARN %s
|
|
|
|
# WARN: using '-application_extension' with unsafe dylib:
|
|
|
|
## Test we warn on dylibs loaded indirectly via reexports.
|
|
# RUN: not %lld -arch arm64 -dylib -o %t/bar.dylib %t/bar.o \
|
|
# RUN: -application_extension -L %t -lbaz-noappext-reexport \
|
|
# RUN: -u _baz 2>&1 | FileCheck --check-prefix=WARN %s
|
|
|
|
#--- foo.s
|
|
.globl _foo
|
|
.p2align 2
|
|
_foo:
|
|
ret
|
|
|
|
#--- libtbd-appext.tbd
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ arm64-macos ]
|
|
uuids:
|
|
- target: arm64-macos
|
|
value: 2E994C7F-3F03-3A07-879C-55690D22BEDA
|
|
install-name: '/usr/lib/libtbd-appext.dylib'
|
|
exports:
|
|
- targets: [ arm64-macos ]
|
|
symbols: [ _foo ]
|
|
...
|
|
|
|
#--- libtbd-noappext.tbd
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ arm64-macos ]
|
|
flags: [ not_app_extension_safe ]
|
|
uuids:
|
|
- target: arm64-macos
|
|
value: 2E994C7F-3F03-3A07-879C-55690D22BEDA
|
|
install-name: '/usr/lib/libtbd-noappext.dylib'
|
|
exports:
|
|
- targets: [ arm64-macos ]
|
|
symbols: [ _foo ]
|
|
...
|
|
|
|
#--- bar.s
|
|
.globl _bar
|
|
.p2align 2
|
|
_bar:
|
|
ret
|
|
|
|
#--- libbaz-noappext-reexport.tbd
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ arm64-macos ]
|
|
uuids:
|
|
- target: arm64-macos
|
|
value: 00000000-0000-0000-0000-000000000001
|
|
install-name: '/usr/lib/libbaz.dylib'
|
|
reexported-libraries:
|
|
- targets: [ arm64-macos ]
|
|
libraries: [ '/usr/lib/libbaz-noappext-reexported.dylib']
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ arm64-macos ]
|
|
flags: [ not_app_extension_safe ]
|
|
uuids:
|
|
- target: arm64-macos
|
|
value: 00000000-0000-0000-0000-000000000003
|
|
install-name: '/usr/lib/libbaz-noappext-reexported.dylib'
|
|
parent-umbrella:
|
|
- targets: [ arm64-macos ]
|
|
umbrella: baz
|
|
exports:
|
|
- targets: [ arm64-macos ]
|
|
symbols: [ _baz ]
|
|
...
|