forked from OSchip/llvm-project
94 lines
3.4 KiB
ArmAsm
94 lines
3.4 KiB
ArmAsm
# REQUIRES: x86
|
|
|
|
# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/ref-all.s -o %t/ref-all.o
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/ref-reexported.s -o %t/ref-reexported.o
|
|
|
|
## Check that the hidden symbols(foo11) can't be referenced from HideFoo.tbd when current version is 11.
|
|
# RUN: not %lld -o /dev/null %t/libHideFoo.tbd %t/ref-all.o -dylib -platform_version macos 11.0.0 11.0.0 2>&1 | FileCheck %s --check-prefix=ERROR
|
|
|
|
## Check that the hidden symbol(foo11) can be referenced when the current version is NOT 11.
|
|
# RUN: %lld -o %t/ref-foo-12.dylib %t/libHideFoo.tbd %t/ref-all.o -dylib -platform_version macos 12.0.0 12.0.0
|
|
# RUN: llvm-objdump --macho --bind %t/ref-foo-12.dylib | FileCheck %s --check-prefix=HAS-FOO
|
|
|
|
## Check that when we link multiple tbd files, foo11 comes from the tbd where it is visible.
|
|
# RUN: %lld -o %t/ref-all.dylib %t/libHideFoo.tbd %t/libHasFoo.tbd %t/ref-all.o -dylib -platform_version macos 11.0.0 11.0.0
|
|
# RUN: llvm-objdump --macho --bind %t/ref-all.dylib | FileCheck %s --check-prefix=FOO
|
|
|
|
## Check that '$hide$' has no effect on reexported symbols.
|
|
# RUN: %lld -o %t/reexport.dylib %t/libReexportSystem2.tbd %t/ref-reexported.o -dylib -platform_version macos 11.0.0 11.0.0
|
|
# RUN: llvm-objdump --macho --bind %t/reexport.dylib | FileCheck %s --check-prefix=REEXP
|
|
|
|
# ERROR: error: undefined symbol: _OBJC_CLASS_$_foo11
|
|
|
|
# HAS-FOO: __DATA __data {{.*}} pointer 0 /HideFoo _OBJC_CLASS_$_foo11
|
|
|
|
# FOO: segment section address type addend dylib symbol
|
|
# FOO-DAG: __DATA __data {{.*}} pointer 0 /HideFoo _OBJC_CLASS_$_bar
|
|
# FOO-DAG: __DATA __data {{.*}} pointer 0 /HideFoo _OBJC_CLASS_$_foo10
|
|
# FOO-DAG: __DATA __data {{.*}} pointer 0 /HasFoo _OBJC_CLASS_$_foo11
|
|
# FOO-DAG: __DATA __data {{.*}} pointer 0 /HideFoo _xxx
|
|
|
|
# REEXP: __DATA __data {{.*}} pointer 0 libSystem ___nan
|
|
|
|
#--- ref-all.s
|
|
.data
|
|
.quad _xxx
|
|
.quad _OBJC_CLASS_$_foo11
|
|
.quad _OBJC_CLASS_$_foo10
|
|
.quad _OBJC_CLASS_$_bar
|
|
|
|
#--- ref-reexported.s
|
|
.data
|
|
.quad ___nan
|
|
|
|
#--- libHideFoo.tbd
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ x86_64-macos ]
|
|
uuids:
|
|
- target: x86_64-macos
|
|
value: 2E994C7F-3F03-3A07-879C-55690D22BEDA
|
|
install-name: '/HideFoo'
|
|
current-version: 9
|
|
compatibility-version: 4.5.6
|
|
exports:
|
|
- targets: [ x86_64-macos ]
|
|
symbols: [ '$ld$hide$os11.0$_OBJC_CLASS_$_foo11', '$ld$hide$os10.0$_OBJC_CLASS_$_foo10', _xxx ]
|
|
objc-classes: [foo10, foo11, bar]
|
|
...
|
|
|
|
#--- libHasFoo.tbd
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ x86_64-macos ]
|
|
uuids:
|
|
- target: x86_64-macos
|
|
value: 2E994C7F-3F03-3A07-879C-55690D22BEDB
|
|
install-name: '/HasFoo'
|
|
current-version: 9
|
|
compatibility-version: 4.5.6
|
|
exports:
|
|
- targets: [ x86_64-macos ]
|
|
symbols: [ _xxx ]
|
|
objc-classes: [foo10, foo11, bar]
|
|
...
|
|
|
|
#--- libReexportSystem2.tbd
|
|
--- !tapi-tbd
|
|
tbd-version: 4
|
|
targets: [ x86_64-macos ]
|
|
uuids:
|
|
- target: x86_64-macos
|
|
value: 00000000-0000-0000-0000-000000000002
|
|
install-name: '/libReexportSystem2'
|
|
current-version: 9
|
|
exports:
|
|
- targets: [ x86_64-macos ]
|
|
symbols: [ '$ld$hide$___nan' ]
|
|
reexported-libraries:
|
|
- targets: [ x86_64-macos ]
|
|
libraries: [ '/usr/lib/libSystem.dylib' ]
|
|
...
|
|
|