382 lines · yaml
1## a) Test that obj2yaml is able to dump the __debug_str section.2 3# RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s4 5--- !mach-o6FileHeader: 7 magic: 0xFEEDFACF8 cputype: 0x010000079 cpusubtype: 0x0000000310 filetype: 0x0000000A11 ncmds: 612 sizeofcmds: 137613 flags: 0x0000000014 reserved: 0x0000000015LoadCommands: 16 - cmd: LC_UUID17 cmdsize: 2418 uuid: 9304404B-E522-3BBA-A861-AF593890872519 - cmd: LC_SYMTAB20 cmdsize: 2421 symoff: 409622 nsyms: 223 stroff: 412824 strsize: 2825 - cmd: LC_SEGMENT_6426 cmdsize: 7227 segname: __PAGEZERO28 vmaddr: 029 vmsize: 429496729630 fileoff: 031 filesize: 032 maxprot: 033 initprot: 034 nsects: 035 flags: 036 - cmd: LC_SEGMENT_6437 cmdsize: 23238 segname: __TEXT39 vmaddr: 429496729640 vmsize: 409641 fileoff: 042 filesize: 043 maxprot: 744 initprot: 545 nsects: 246 flags: 047 Sections: 48 - sectname: __text49 segname: __TEXT50 addr: 0x0000000100000FA051 size: 2252 offset: 0x0000000053 align: 454 reloff: 0x0000000055 nreloc: 056 flags: 0x8000040057 reserved1: 0x0000000058 reserved2: 0x0000000059 reserved3: 0x0000000060 - sectname: __unwind_info61 segname: __TEXT62 addr: 0x0000000100000FB863 size: 7264 offset: 0x0000000065 align: 266 reloff: 0x0000000067 nreloc: 068 flags: 0x0000000069 reserved1: 0x0000000070 reserved2: 0x0000000071 reserved3: 0x0000000072 - cmd: LC_SEGMENT_6473 cmdsize: 7274 segname: __LINKEDIT75 vmaddr: 429497139276 vmsize: 409677 fileoff: 409678 filesize: 6079 maxprot: 780 initprot: 181 nsects: 082 flags: 083 - cmd: LC_SEGMENT_6484 cmdsize: 95285 segname: __DWARF86 vmaddr: 429497548887 vmsize: 409688 fileoff: 819289 filesize: 76590 maxprot: 791 initprot: 392 nsects: 1193 flags: 094 Sections: 95 - sectname: __debug_line96 segname: __DWARF97 addr: 0x000000010000200098 size: 7099 offset: 0x00002000100 align: 0101 reloff: 0x00000000102 nreloc: 0103 flags: 0x00000000104 reserved1: 0x00000000105 reserved2: 0x00000000106 reserved3: 0x00000000107 - sectname: __debug_pubnames108 segname: __DWARF109 addr: 0x0000000100002046110 size: 27111 offset: 0x00002046112 align: 0113 reloff: 0x00000000114 nreloc: 0115 flags: 0x00000000116 reserved1: 0x00000000117 reserved2: 0x00000000118 reserved3: 0x00000000119 - sectname: __debug_pubtypes120 segname: __DWARF121 addr: 0x0000000100002061122 size: 35123 offset: 0x00002061124 align: 0125 reloff: 0x00000000126 nreloc: 0127 flags: 0x00000000128 reserved1: 0x00000000129 reserved2: 0x00000000130 reserved3: 0x00000000131 - sectname: __debug_info132 segname: __DWARF133 addr: 0x00000001000020B4134 size: 121135 offset: 0x000020B4136 align: 0137 reloff: 0x00000000138 nreloc: 0139 flags: 0x00000000140 reserved1: 0x00000000141 reserved2: 0x00000000142 reserved3: 0x00000000143 - sectname: __debug_abbrev144 segname: __DWARF145 addr: 0x000000010000212D146 size: 76147 offset: 0x0000212D148 align: 0149 reloff: 0x00000000150 nreloc: 0151 flags: 0x00000000152 reserved1: 0x00000000153 reserved2: 0x00000000154 reserved3: 0x00000000155 - sectname: __debug_str156 segname: __DWARF157 addr: 0x0000000100002179158 size: 142159 offset: 0x00002179160 align: 0161 reloff: 0x00000000162 nreloc: 0163 flags: 0x00000000164 reserved1: 0x00000000165 reserved2: 0x00000000166 reserved3: 0x00000000167 - sectname: __apple_names168 segname: __DWARF169 addr: 0x0000000100002207170 size: 60171 offset: 0x00002207172 align: 0173 reloff: 0x00000000174 nreloc: 0175 flags: 0x00000000176 reserved1: 0x00000000177 reserved2: 0x00000000178 reserved3: 0x00000000179 - sectname: __apple_namespac180 segname: __DWARF181 addr: 0x0000000100002243182 size: 36183 offset: 0x00002243184 align: 0185 reloff: 0x00000000186 nreloc: 0187 flags: 0x00000000188 reserved1: 0x00000000189 reserved2: 0x00000000190 reserved3: 0x00000000191 - sectname: __apple_types192 segname: __DWARF193 addr: 0x0000000100002267194 size: 114195 offset: 0x00002267196 align: 0197 reloff: 0x00000000198 nreloc: 0199 flags: 0x00000000200 reserved1: 0x00000000201 reserved2: 0x00000000202 reserved3: 0x00000000203 - sectname: __apple_objc204 segname: __DWARF205 addr: 0x00000001000022D9206 size: 36207 offset: 0x000022D9208 align: 0209 reloff: 0x00000000210 nreloc: 0211 flags: 0x00000000212 reserved1: 0x00000000213 reserved2: 0x00000000214 reserved3: 0x00000000215LinkEditData: 216 NameList: 217 - n_strx: 2218 n_type: 0x0F219 n_sect: 1220 n_desc: 16221 n_value: 4294967296222 - n_strx: 22223 n_type: 0x0F224 n_sect: 1225 n_desc: 0226 n_value: 4294971296227 StringTable: 228 - ''229 - ''230 - __mh_execute_header231 - _main232DWARF: 233 debug_str: 234 - ''235 - 'clang version 4.0.0 (trunk 288677) (llvm/trunk 288676)'236 - hello_world.c237 - /Users/cbieneman/dev/open-source/llvm-build-rel238 - main239 - argc240 - argv241 - int242 - char243...244 245#CHECK: DWARF: 246#CHECK: debug_str: 247#CHECK: - ''248#CHECK: - 'clang version 4.0.0 (trunk 288677) (llvm/trunk 288676)'249#CHECK: - hello_world.c250#CHECK: - '/Users/cbieneman/dev/open-source/llvm-build-rel'251#CHECK: - main252#CHECK: - argc253#CHECK: - argv254#CHECK: - int255#CHECK: - char256 257## b) Test dumping an empty __debug_str section.258 259# RUN: yaml2obj --docnum=2 -DCONTENT='[]' %s | obj2yaml | FileCheck %s --check-prefix=EMPTY-CONTENT260 261# EMPTY-CONTENT: Sections:262# EMPTY-CONTENT-NEXT: - sectname: __debug_str263# EMPTY-CONTENT-NEXT: segname: __DWARF264# EMPTY-CONTENT-NEXT: addr: 0x0265# EMPTY-CONTENT-NEXT: size: 0266# EMPTY-CONTENT-NEXT: offset: 0x210267# EMPTY-CONTENT-NEXT: align: 0268# EMPTY-CONTENT-NEXT: reloff: 0x0269# EMPTY-CONTENT-NEXT: nreloc: 0270# EMPTY-CONTENT-NEXT: flags: 0x0271# EMPTY-CONTENT-NEXT: reserved1: 0x0272# EMPTY-CONTENT-NEXT: reserved2: 0x0273# EMPTY-CONTENT-NEXT: reserved3: 0x0274# EMPTY-CONTENT-NEXT: DWARF:275# EMPTY-CONTENT-NEXT: debug_str: []276 277--- !mach-o278FileHeader:279 magic: 0xFEEDFACF280 cputype: 0x01000007281 cpusubtype: 0x00000003282 filetype: 0x0000000A283 ncmds: 1284 sizeofcmds: 232285 flags: 0x00000000286 reserved: 0x00000000287LoadCommands:288 - cmd: LC_SEGMENT_64289 cmdsize: 152290 segname: __DWARF291 vmaddr: 0x00292 vmsize: 0x00293 fileoff: 0x00294 filesize: 0x00295 maxprot: 0296 initprot: 0297 nsects: 1298 flags: 0299 Sections:300 - sectname: __debug_str301 segname: __DWARF302 addr: 0x00303 size: [[SIZE=0]]304 offset: 0x210305 align: 0306 reloff: 0x00000000307 nreloc: 0308 flags: 0x00000000309 reserved1: 0x00000000310 reserved2: 0x00000000311 reserved3: 0x00000000312DWARF:313 debug_str:314 [[CONTENT]]315 316## c) Test generating and dumping a __debug_str section who only has an empty string.317 318# RUN: yaml2obj --docnum=2 -DCONTENT='[ "" ]' -DSIZE=1 %s | obj2yaml | FileCheck %s --check-prefix=EMPTY-STRING319 320# EMPTY-STRING: DWARF:321# EMPTY-STRING-NEXT: debug_str:322# EMPTY-STRING-NEXT: - ''323# EMPTY-STRING-NEXT: ...324 325## d) Test generating and dumping a __debug_str section which contains a string without a null terminator.326 327# RUN: yaml2obj --docnum=3 %s | obj2yaml | FileCheck %s --check-prefix=NO-TERMINATOR328 329# NO-TERMINATOR-NOT: DWARF:330# NO-TERMINATOR: Sections:331# NO-TERMINATOR-NEXT: - sectname: __debug_str332# NO-TERMINATOR-NEXT: segname: __DWARF333# NO-TERMINATOR-NEXT: addr: 0x0334# NO-TERMINATOR-NEXT: size: 7335# NO-TERMINATOR-NEXT: offset: 0x210336# NO-TERMINATOR-NEXT: align: 0337# NO-TERMINATOR-NEXT: reloff: 0x0338# NO-TERMINATOR-NEXT: nreloc: 0339# NO-TERMINATOR-NEXT: flags: 0x0340# NO-TERMINATOR-NEXT: reserved1: 0x0341# NO-TERMINATOR-NEXT: reserved2: 0x0342# NO-TERMINATOR-NEXT: reserved3: 0x0343# NO-TERMINATOR-NEXT: content: '61626300616263'344# NO-TERMINATOR-NEXT: ...345 346--- !mach-o347FileHeader:348 magic: 0xFEEDFACF349 cputype: 0x01000007350 cpusubtype: 0x00000003351 filetype: 0x0000000A352 ncmds: 1353 sizeofcmds: 232354 flags: 0x00000000355 reserved: 0x00000000356LoadCommands:357 - cmd: LC_SEGMENT_64358 cmdsize: 152359 segname: __DWARF360 vmaddr: 0x00361 vmsize: 0x00362 fileoff: 0x00363 filesize: 0x00364 maxprot: 0365 initprot: 0366 nsects: 1367 flags: 0368 Sections:369 - sectname: __debug_str370 segname: __DWARF371 addr: 0x00372 size: 7373 offset: 0x210374 align: 0375 reloff: 0x00000000376 nreloc: 0377 flags: 0x00000000378 reserved1: 0x00000000379 reserved2: 0x00000000380 reserved3: 0x00000000381 content: '61626300616263' ## "abc\0abc"382