# RUN: ld64.lld -arch x86_64 -r %s -o %t -exported_symbol _bar \ # RUN: && llvm-nm -m %t | FileCheck %s # # RUN: ld64.lld -arch x86_64 -r %s -o %t2 -keep_private_externs \ # RUN: -exported_symbol _bar && \ # RUN: llvm-nm -m %t2 | FileCheck -check-prefix=CHECK_KPE %s # # RUN: not ld64.lld -arch x86_64 -r %s -o %t3 \ # RUN: -exported_symbol _foo 2> %t4 # Test -exported_symbols_list properly changes visibility in -r mode. # --- !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, N_PEXT ] sect: 2 value: 0x0000000000000010 - name: _bar type: N_SECT scope: [ N_EXT ] sect: 1 value: 0x0000000000000006 - name: _foo type: N_SECT scope: [ N_EXT, N_PEXT ] sect: 1 value: 0x0000000000000000 ... # CHECK: (__DATA,__data) non-external (was a private external) _a # CHECK: (__DATA,__data) non-external (was a private external) _b # CHECK: (__TEXT,__text) external _bar # CHECK: (__TEXT,__text) non-external (was a private external) _foo # CHECK_KPE: (__DATA,__data) non-external (was a private external) _a # CHECK_KPE: (__DATA,__data) private external _b # CHECK_KPE: (__TEXT,__text) external _bar # CHECK_KPE: (__TEXT,__text) private external _foo