| ## 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" |