# 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 ] ...