## a) Test that obj2yaml is able to dump the __debug_str section.
# RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x0000000A
ncmds: 6
sizeofcmds: 1376
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_UUID
cmdsize: 24
uuid: 9304404B-E522-3BBA-A861-AF5938908725
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 4096
nsyms: 2
stroff: 4128
strsize: 28
- 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: 232
segname: __TEXT
vmaddr: 4294967296
vmsize: 4096
fileoff: 0
filesize: 0
maxprot: 7
initprot: 5
nsects: 2
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000100000FA0
size: 22
offset: 0x00000000
align: 4
reloff: 0x00000000
nreloc: 0
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __unwind_info
segname: __TEXT
addr: 0x0000000100000FB8
size: 72
offset: 0x00000000
align: 2
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- cmd: LC_SEGMENT_64
cmdsize: 72
segname: __LINKEDIT
vmaddr: 4294971392
vmsize: 4096
fileoff: 4096
filesize: 60
maxprot: 7
initprot: 1
nsects: 0
flags: 0
- cmd: LC_SEGMENT_64
cmdsize: 952
segname: __DWARF
vmaddr: 4294975488
vmsize: 4096
fileoff: 8192
filesize: 765
maxprot: 7
initprot: 3
nsects: 11
flags: 0
Sections:
- sectname: __debug_line
segname: __DWARF
addr: 0x0000000100002000
size: 70
offset: 0x00002000
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_pubnames
segname: __DWARF
addr: 0x0000000100002046
size: 27
offset: 0x00002046
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_pubtypes
segname: __DWARF
addr: 0x0000000100002061
size: 35
offset: 0x00002061
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_info
segname: __DWARF
addr: 0x00000001000020B4
size: 121
offset: 0x000020B4
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_abbrev
segname: __DWARF
addr: 0x000000010000212D
size: 76
offset: 0x0000212D
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_str
segname: __DWARF
addr: 0x0000000100002179
size: 142
offset: 0x00002179
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_names
segname: __DWARF
addr: 0x0000000100002207
size: 60
offset: 0x00002207
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_namespac
segname: __DWARF
addr: 0x0000000100002243
size: 36
offset: 0x00002243
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_types
segname: __DWARF
addr: 0x0000000100002267
size: 114
offset: 0x00002267
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __apple_objc
segname: __DWARF
addr: 0x00000001000022D9
size: 36
offset: 0x000022D9
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: 4294971296
StringTable:
- ''
- ''
- __mh_execute_header
- _main
DWARF:
debug_str:
- ''
- 'clang version 4.0.0 (trunk 288677) (llvm/trunk 288676)'
- hello_world.c
- /Users/cbieneman/dev/open-source/llvm-build-rel
- main
- argc
- argv
- int
- char
...
#CHECK: DWARF:
#CHECK: debug_str:
#CHECK: - ''
#CHECK: - 'clang version 4.0.0 (trunk 288677) (llvm/trunk 288676)'
#CHECK: - hello_world.c
#CHECK: - '/Users/cbieneman/dev/open-source/llvm-build-rel'
#CHECK: - main
#CHECK: - argc
#CHECK: - argv
#CHECK: - int
#CHECK: - char
## b) Test dumping an empty __debug_str section.
# RUN: yaml2obj --docnum=2 -DCONTENT='[]' %s | obj2yaml | FileCheck %s --check-prefix=EMPTY-CONTENT
# EMPTY-CONTENT: Sections:
# EMPTY-CONTENT-NEXT: - sectname: __debug_str
# EMPTY-CONTENT-NEXT: segname: __DWARF
# EMPTY-CONTENT-NEXT: addr: 0x0
# EMPTY-CONTENT-NEXT: size: 0
# EMPTY-CONTENT-NEXT: offset: 0x210
# EMPTY-CONTENT-NEXT: align: 0
# EMPTY-CONTENT-NEXT: reloff: 0x0
# EMPTY-CONTENT-NEXT: nreloc: 0
# EMPTY-CONTENT-NEXT: flags: 0x0
# EMPTY-CONTENT-NEXT: reserved1: 0x0
# EMPTY-CONTENT-NEXT: reserved2: 0x0
# EMPTY-CONTENT-NEXT: reserved3: 0x0
# EMPTY-CONTENT-NEXT: DWARF:
# EMPTY-CONTENT-NEXT: debug_str: []
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x0000000A
ncmds: 1
sizeofcmds: 232
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: __DWARF
vmaddr: 0x00
vmsize: 0x00
fileoff: 0x00
filesize: 0x00
maxprot: 0
initprot: 0
nsects: 1
flags: 0
Sections:
- sectname: __debug_str
segname: __DWARF
addr: 0x00
size: [[SIZE=0]]
offset: 0x210
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
DWARF:
debug_str:
[[CONTENT]]
## c) Test generating and dumping a __debug_str section who only has an empty string.
# RUN: yaml2obj --docnum=2 -DCONTENT='[ "" ]' -DSIZE=1 %s | obj2yaml | FileCheck %s --check-prefix=EMPTY-STRING
# EMPTY-STRING: DWARF:
# EMPTY-STRING-NEXT: debug_str:
# EMPTY-STRING-NEXT: - ''
# EMPTY-STRING-NEXT: ...
## d) Test generating and dumping a __debug_str section which contains a string without a null terminator.
# RUN: yaml2obj --docnum=3 %s | obj2yaml | FileCheck %s --check-prefix=NO-TERMINATOR
# NO-TERMINATOR-NOT: DWARF:
# NO-TERMINATOR: Sections:
# NO-TERMINATOR-NEXT: - sectname: __debug_str
# NO-TERMINATOR-NEXT: segname: __DWARF
# NO-TERMINATOR-NEXT: addr: 0x0
# NO-TERMINATOR-NEXT: size: 7
# NO-TERMINATOR-NEXT: offset: 0x210
# NO-TERMINATOR-NEXT: align: 0
# NO-TERMINATOR-NEXT: reloff: 0x0
# NO-TERMINATOR-NEXT: nreloc: 0
# NO-TERMINATOR-NEXT: flags: 0x0
# NO-TERMINATOR-NEXT: reserved1: 0x0
# NO-TERMINATOR-NEXT: reserved2: 0x0
# NO-TERMINATOR-NEXT: reserved3: 0x0
# NO-TERMINATOR-NEXT: content: '61626300616263'
# NO-TERMINATOR-NEXT: ...
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x0000000A
ncmds: 1
sizeofcmds: 232
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: __DWARF
vmaddr: 0x00
vmsize: 0x00
fileoff: 0x00
filesize: 0x00
maxprot: 0
initprot: 0
nsects: 1
flags: 0
Sections:
- sectname: __debug_str
segname: __DWARF
addr: 0x00
size: 7
offset: 0x210
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: '61626300616263' ## "abc\0abc"