## Check that local private externs -- symbols without N_EXT but with N_PEXT set ## -- are translation-unit-scoped. These symbols may be generated by `ld -r`, ## which emits an object file. Since LLD does not yet support `-r`, we use ## yaml2obj to construct the input. # RUN: rm -rf %t; mkdir %t # RUN: yaml2obj %s > %t/foo.o ## No duplicate symbol conflict since _foo is not extern # RUN: %lld -dylib %t/foo.o %t/foo.o -o %t/foo # RUN: llvm-nm -m %t/foo | FileCheck %s ## Note that the symbols in the output are no longer marked as "was a private ## external". # CHECK: (absolute) non-external _bar # CHECK: (absolute) non-external _bar # CHECK: (__DATA,__data) non-external _foo # CHECK: (__DATA,__data) non-external _foo --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x1000007 cpusubtype: 0x3 filetype: 0x1 ncmds: 2 sizeofcmds: 208 flags: 0x0 reserved: 0x0 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 152 segname: '' vmaddr: 0 vmsize: 0 fileoff: 272 filesize: 0 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __data segname: __DATA addr: 0x0 size: 0 offset: 0x110 align: 0 reloff: 0x0 nreloc: 0 flags: 0x0 reserved1: 0x0 reserved2: 0x0 reserved3: 0x0 content: '' - cmd: LC_SYMTAB cmdsize: 24 symoff: 272 nsyms: 2 stroff: 304 strsize: 16 LinkEditData: NameList: - n_strx: 2 ## _foo n_type: 0x1E ## N_PEXT | N_SECT n_sect: 1 n_desc: 32 n_value: 0 - n_strx: 7 ## _bar n_type: 0x12 ## N_PEXT | N_ABS n_sect: 0 n_desc: 0 n_value: 291 StringTable: - ' ' - _foo - _bar - '' - '' - '' - '' ...