forked from OSchip/llvm-project
82 lines
2.1 KiB
YAML
82 lines
2.1 KiB
YAML
## 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
|
|
- ''
|
|
- ''
|
|
- ''
|
|
- ''
|
|
...
|