blob: 0bc510dca5f09cea0df2531cf475a5e73c005d84 [file] [log] [blame]
## This file contains test cases for generating .debug_pubnames/.debug_pubtypes
## section in object files from the DWARF entry of Mach-O YAML inputs
## a) Test that yaml2obj emits the .debug_pubnames and .debug_pubtypes sections and
## obj2yaml converts them back.
# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x0000000A
ncmds: 5
sizeofcmds: 1800
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 72
segname: __PAGEZERO
vmaddr: 0
vmsize: 4294967296
fileoff: 0
filesize: 0
maxprot: 0
initprot: 0
nsects: 0
flags: 0
- cmd: LC_SEGMENT_64
cmdsize: 472
segname: __TEXT
vmaddr: 4294967296
vmsize: 4096
fileoff: 0
filesize: 0
maxprot: 7
initprot: 5
nsects: 5
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000100000F50
size: 52
offset: 0x00000000
align: 4
reloff: 0x00000000
nreloc: 0
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __stubs
segname: __TEXT
addr: 0x0000000100000F84
size: 6
offset: 0x00000000
align: 1
reloff: 0x00000000
nreloc: 0
flags: 0x80000408
reserved1: 0x00000000
reserved2: 0x00000006
reserved3: 0x00000000
- sectname: __stub_helper
segname: __TEXT
addr: 0x0000000100000F8C
size: 26
offset: 0x00000000
align: 2
reloff: 0x00000000
nreloc: 0
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __cstring
segname: __TEXT
addr: 0x0000000100000FA6
size: 14
offset: 0x00000000
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000002
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __unwind_info
segname: __TEXT
addr: 0x0000000100000FB4
size: 72
offset: 0x00000000
align: 2
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- cmd: LC_SEGMENT_64
cmdsize: 232
segname: __DATA
vmaddr: 4294971392
vmsize: 4096
fileoff: 0
filesize: 0
maxprot: 7
initprot: 3
nsects: 2
flags: 0
Sections:
- sectname: __nl_symbol_ptr
segname: __DATA
addr: 0x0000000100001000
size: 16
offset: 0x00000000
align: 3
reloff: 0x00000000
nreloc: 0
flags: 0x00000006
reserved1: 0x00000001
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __la_symbol_ptr
segname: __DATA
addr: 0x0000000100001010
size: 8
offset: 0x00000000
align: 3
reloff: 0x00000000
nreloc: 0
flags: 0x00000007
reserved1: 0x00000003
reserved2: 0x00000000
reserved3: 0x00000000
- cmd: LC_SEGMENT_64
cmdsize: 72
segname: __LINKEDIT
vmaddr: 4294975488
vmsize: 4096
fileoff: 4096
filesize: 60
maxprot: 7
initprot: 1
nsects: 0
flags: 0
- cmd: LC_SEGMENT_64
cmdsize: 952
segname: __DWARF
vmaddr: 4294979584
vmsize: 4096
fileoff: 8192
filesize: 764
maxprot: 7
initprot: 3
nsects: 11
flags: 0
Sections:
- sectname: __debug_line
segname: __DWARF
addr: 0x0000000100003000
size: 69
offset: 0x00002000
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_pubnames
segname: __DWARF
addr: 0x0000000100003045
size: 27
offset: 0x00002045
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_pubtypes
segname: __DWARF
addr: 0x0000000100003060
size: 35
offset: 0x00002060
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_info
segname: __DWARF
addr: 0x00000001000030B3
size: 121
offset: 0x000020B3
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_abbrev
segname: __DWARF
addr: 0x000000010000312C
size: 76
offset: 0x0000212C
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_str
segname: __DWARF
addr: 0x0000000100003178
size: 142
offset: 0x00002178
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_names
segname: __DWARF
addr: 0x0000000100003206
size: 60
offset: 0x00002206
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_namespac
segname: __DWARF
addr: 0x0000000100003242
size: 36
offset: 0x00002242
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_types
segname: __DWARF
addr: 0x0000000100003266
size: 114
offset: 0x00002266
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_objc
segname: __DWARF
addr: 0x00000001000032D8
size: 36
offset: 0x000022D8
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
LinkEditData:
NameList:
- n_strx: 2
n_type: 0x0F
n_sect: 1
n_desc: 16
n_value: 4294967296
- n_strx: 22
n_type: 0x0F
n_sect: 1
n_desc: 0
n_value: 4294971216
StringTable:
- ''
- ''
- __mh_execute_header
- _main
DWARF:
debug_str:
- ''
- 'clang version 4.0.0 (trunk 288923) (llvm/trunk 288991)'
- hello_world.c
- /Users/cbieneman/dev/open-source/llvm-build-rel
- main
- argc
- argv
- int
- char
debug_pubnames:
Length:
TotalLength: 23
Version: 2
UnitOffset: 0
UnitSize: 121
Entries:
- DieOffset: 0x0000002A
Name: main
debug_pubtypes:
Length:
TotalLength: 31
Version: 2
UnitOffset: 0
UnitSize: 121
Entries:
- DieOffset: 0x00000060
Name: int
- DieOffset: 0x00000071
Name: char
...
#CHECK: DWARF:
#CHECK: debug_pubnames:
#CHECK: Length:
#CHECK: TotalLength: 23
#CHECK: Version: 2
#CHECK: UnitOffset: 0
#CHECK: UnitSize: 121
#CHECK: Entries:
#CHECK: - DieOffset: 0x0000002A
#CHECK: Name: main
#CHECK: debug_pubtypes:
#CHECK: Length:
#CHECK: TotalLength: 31
#CHECK: Version: 2
#CHECK: UnitOffset: 0
#CHECK: UnitSize: 121
#CHECK: Entries:
#CHECK: - DieOffset: 0x00000060
#CHECK: Name: int
#CHECK: - DieOffset: 0x00000071
#CHECK: Name: char
#CHECK: ...
## b) Test that yaml2obj will not emit the .debug_pubnames/.debug_pubtypes section's
## contents, if the "debug_pubnames"/"debug_pubtypes" entry doesn't exist in the
## "DWARF" entry.
# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=EMPTY
# EMPTY: Sections:
# EMPTY-NEXT: - sectname: __debug_pubnames
# EMPTY-NEXT: segname: __DWARF
# EMPTY-NEXT: addr: 0x0000000000000000
# EMPTY-NEXT: size: 0
# EMPTY-NEXT: offset: 0x00000000
# EMPTY-NEXT: align: 0
# EMPTY-NEXT: reloff: 0x00000000
# EMPTY-NEXT: nreloc: 0
# EMPTY-NEXT: flags: 0x00000000
# EMPTY-NEXT: reserved1: 0x00000000
# EMPTY-NEXT: reserved2: 0x00000000
# EMPTY-NEXT: reserved3: 0x00000000
# EMPTY-NEXT: content: ''
# EMPTY-NEXT: - sectname: __debug_pubtypes
# EMPTY-NEXT: segname: __DWARF
# EMPTY-NEXT: addr: 0x0000000000000000
# EMPTY-NEXT: size: 0
# EMPTY-NEXT: offset: 0x00000720
# EMPTY-NEXT: align: 0
# EMPTY-NEXT: reloff: 0x00000000
# EMPTY-NEXT: nreloc: 0
# EMPTY-NEXT: flags: 0x00000000
# EMPTY-NEXT: reserved1: 0x00000000
# EMPTY-NEXT: reserved2: 0x00000000
# EMPTY-NEXT: reserved3: 0x00000000
# EMPTY-NEXT: content: ''
# EMPTY-NEXT: ...
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x0000000A
ncmds: 1
sizeofcmds: 1772
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 232
segname: __DWARF
vmaddr: 0x00000000
vmsize: 0x00000000
fileoff: 0
filesize: 0
maxprot: 0
initprot: 0
nsects: 2
flags: 0
Sections:
- sectname: __debug_pubnames
segname: __DWARF
addr: 0x0000000000000000
size: 0
offset: 0x00000000
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_pubtypes
segname: __DWARF
addr: 0x0000000000000000
size: 0
offset: 0x00000720
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
DWARF: