# RUN: ld64.lld -arch x86_64 -macosx_version_min 10.8 -dylib \ # RUN: %s %p/Inputs/x86_64/libSystem.yaml -o %t \ # RUN: -exported_symbols_list %p/Inputs/exported_symbols_list.exp && \ # RUN: llvm-nm -m %t | FileCheck %s # # RUN: ld64.lld -arch x86_64 -macosx_version_min 10.8 -dylib \ # RUN: %s %p/Inputs/x86_64/libSystem.yaml -o %t2 \ # RUN: -exported_symbol _foo -exported_symbol _b && \ # RUN: llvm-nm -m %t2 | FileCheck %s # # RUN: ld64.lld -arch x86_64 -macosx_version_min 10.8 -dylib \ # RUN: %s %p/Inputs/x86_64/libSystem.yaml -o %t3 \ # RUN: -unexported_symbol _bar -unexported_symbol _a && \ # RUN: llvm-nm -m %t3 | FileCheck %s # # RUN: ld64.lld -arch x86_64 -macosx_version_min 10.8 -dylib \ # RUN: %s %p/Inputs/x86_64/libSystem.yaml -dead_strip -o %t \ # RUN: -exported_symbols_list %p/Inputs/exported_symbols_list.exp && \ # RUN: llvm-nm -m %t | FileCheck -check-prefix=CHECK_DEAD %s # # Test -exported_symbols_list and -exported_symbol properly changes visibility. # --- !mach-o arch: x86_64 file-type: MH_OBJECT flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ] sections: - segment: __TEXT section: __text type: S_REGULAR attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ] address: 0x0000000000000000 content: [ 0x55, 0x48, 0x89, 0xE5, 0x5D, 0xC3, 0x55, 0x48, 0x89, 0xE5, 0x5D, 0xC3 ] - segment: __DATA section: __data type: S_REGULAR attributes: [ ] alignment: 2 address: 0x000000000000000C content: [ 0x0A, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 ] global-symbols: - name: _a type: N_SECT scope: [ N_EXT ] sect: 2 value: 0x000000000000000C - name: _b type: N_SECT scope: [ N_EXT ] sect: 2 value: 0x0000000000000010 - name: _bar type: N_SECT scope: [ N_EXT ] sect: 1 value: 0x0000000000000006 - name: _foo type: N_SECT scope: [ N_EXT ] sect: 1 value: 0x0000000000000000 ... # CHECK: (__DATA,__data) non-external (was a private external) _a # CHECK: (__DATA,__data) external _b # CHECK: (__TEXT,__text) non-external (was a private external) _bar # CHECK: (__TEXT,__text) external _foo # CHECK_DEAD-NOT: (__DATA,__data) non-external (was a private external) _a # CHECK_DEAD: (__DATA,__data) external _b # CHECK_DEAD-NOT: (__TEXT,__text) non-external (was a private external) _bar # CHECK_DEAD: (__TEXT,__text) external _foo