238 lines
6.7 KiB
YAML
238 lines
6.7 KiB
YAML
## 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: 1
|
|
sizeofcmds: 1800
|
|
flags: 0x00000000
|
|
reserved: 0x00000000
|
|
LoadCommands:
|
|
- cmd: LC_SEGMENT_64
|
|
cmdsize: 232
|
|
segname: __DWARF
|
|
vmaddr: 0
|
|
vmsize: 0
|
|
fileoff: 152
|
|
filesize: 0xffff
|
|
maxprot: 0
|
|
initprot: 0
|
|
nsects: 2
|
|
flags: 0
|
|
Sections:
|
|
- sectname: __debug_pubnames
|
|
segname: __DWARF
|
|
addr: 0x0000000000000000
|
|
size: 27
|
|
offset: 0x00000152
|
|
align: 0
|
|
reloff: 0x00000000
|
|
nreloc: 0
|
|
flags: 0x00000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
- sectname: __debug_pubtypes
|
|
segname: __DWARF
|
|
addr: 0x0000000000000000
|
|
size: 35
|
|
offset: 0x00000720
|
|
align: 0
|
|
reloff: 0x00000000
|
|
nreloc: 0
|
|
flags: 0x00000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
DWARF:
|
|
debug_pubnames:
|
|
Length: 23
|
|
Version: 2
|
|
UnitOffset: 0
|
|
UnitSize: 121
|
|
Entries:
|
|
- DieOffset: 0x0000002A
|
|
Name: main
|
|
debug_pubtypes:
|
|
Length: 31
|
|
Version: 2
|
|
UnitOffset: 0
|
|
UnitSize: 121
|
|
Entries:
|
|
- DieOffset: 0x00000060
|
|
Name: int
|
|
- DieOffset: 0x00000071
|
|
Name: char
|
|
|
|
# CHECK: DWARF:
|
|
# CHECK: debug_pubnames:
|
|
# CHECK-NEXT: Length: 0x17
|
|
# CHECK-NEXT: Version: 2
|
|
# CHECK-NEXT: UnitOffset: 0
|
|
# CHECK-NEXT: UnitSize: 121
|
|
# CHECK-NEXT: Entries:
|
|
# CHECK-NEXT: - DieOffset: 0x2A
|
|
# CHECK-NEXT: Name: main
|
|
# CHECK-NEXT: debug_pubtypes:
|
|
# CHECK-NEXT: Length: 0x1F
|
|
# CHECK-NEXT: Version: 2
|
|
# CHECK-NEXT: UnitOffset: 0
|
|
# CHECK-NEXT: UnitSize: 121
|
|
# CHECK-NEXT: Entries:
|
|
# CHECK-NEXT: - DieOffset: 0x60
|
|
# CHECK-NEXT: Name: int
|
|
# CHECK-NEXT: - DieOffset: 0x71
|
|
# CHECK-NEXT: Name: char
|
|
# CHECK-NEXT: ...
|
|
|
|
## 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: 0x0
|
|
# EMPTY-NEXT: size: 0
|
|
# EMPTY-NEXT: offset: 0x0
|
|
# EMPTY-NEXT: align: 0
|
|
# EMPTY-NEXT: reloff: 0x0
|
|
# EMPTY-NEXT: nreloc: 0
|
|
# EMPTY-NEXT: flags: 0x0
|
|
# EMPTY-NEXT: reserved1: 0x0
|
|
# EMPTY-NEXT: reserved2: 0x0
|
|
# EMPTY-NEXT: reserved3: 0x0
|
|
# EMPTY-NEXT: - sectname: __debug_pubtypes
|
|
# EMPTY-NEXT: segname: __DWARF
|
|
# EMPTY-NEXT: addr: 0x0
|
|
# EMPTY-NEXT: size: 0
|
|
# EMPTY-NEXT: offset: 0x720
|
|
# EMPTY-NEXT: align: 0
|
|
# EMPTY-NEXT: reloff: 0x0
|
|
# EMPTY-NEXT: nreloc: 0
|
|
# EMPTY-NEXT: flags: 0x0
|
|
# EMPTY-NEXT: reserved1: 0x0
|
|
# EMPTY-NEXT: reserved2: 0x0
|
|
# EMPTY-NEXT: reserved3: 0x0
|
|
# 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:
|
|
|
|
## c) Test that obj2yaml is able to dump a __debug_pubnames section whose length field is greater than the section size.
|
|
|
|
# RUN: yaml2obj --docnum=3 %s | obj2yaml | FileCheck %s --check-prefix=INVALID-LENGTH
|
|
|
|
# INVALID-LENGTH: DWARF:
|
|
# INVALID-LENGTH-NEXT: debug_pubnames:
|
|
# INVALID-LENGTH-NEXT: Length: 0xDEADBEEF
|
|
# INVALID-LENGTH-NEXT: Version: 2
|
|
# INVALID-LENGTH-NEXT: UnitOffset: 0
|
|
# INVALID-LENGTH-NEXT: UnitSize: 121
|
|
# INVALID-LENGTH-NEXT: Entries:
|
|
# INVALID-LENGTH-NEXT: - DieOffset: 0x2A
|
|
# INVALID-LENGTH-NEXT: Name: main
|
|
|
|
--- !mach-o
|
|
FileHeader:
|
|
magic: 0xFEEDFACF
|
|
cputype: 0x01000007
|
|
cpusubtype: 0x00000003
|
|
filetype: 0x0000000A
|
|
ncmds: 1
|
|
sizeofcmds: 1888
|
|
flags: 0x00000000
|
|
reserved: 0x00000000
|
|
LoadCommands:
|
|
- cmd: LC_SEGMENT_64
|
|
cmdsize: 152
|
|
segname: __DWARF
|
|
vmaddr: 0x00000000
|
|
vmsize: 0x00000000
|
|
fileoff: 0
|
|
filesize: 0xffff
|
|
maxprot: 0
|
|
initprot: 0
|
|
nsects: 1
|
|
flags: 0
|
|
Sections:
|
|
- sectname: __debug_pubnames
|
|
segname: __DWARF
|
|
addr: 0x0000000000000000
|
|
size: 24
|
|
offset: 0x000000b8
|
|
align: 0
|
|
reloff: 0x00000000
|
|
nreloc: 0
|
|
flags: 0x00000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
DWARF:
|
|
debug_pubnames:
|
|
Length: 0xdeadbeef
|
|
Version: 2
|
|
UnitOffset: 0
|
|
UnitSize: 121
|
|
Entries:
|
|
- DieOffset: 0x0000002A
|
|
Name: main
|