mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
2a69cdbaed
This patch makes checkers stricter so that we are able to avoid some potential problems earlier. Reviewed By: jhenderson, MaskRay Differential Revision: https://reviews.llvm.org/D87876
492 lines
15 KiB
YAML
492 lines
15 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: 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: 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: 0x0000000000000017
|
|
# CHECK-NEXT: Version: 2
|
|
# CHECK-NEXT: UnitOffset: 0
|
|
# CHECK-NEXT: UnitSize: 121
|
|
# CHECK-NEXT: Entries:
|
|
# CHECK-NEXT: - DieOffset: 0x0000002A
|
|
# CHECK-NEXT: Name: main
|
|
# CHECK-NEXT: debug_pubtypes:
|
|
# CHECK-NEXT: Length: 0x000000000000001F
|
|
# CHECK-NEXT: Version: 2
|
|
# CHECK-NEXT: UnitOffset: 0
|
|
# CHECK-NEXT: UnitSize: 121
|
|
# CHECK-NEXT: Entries:
|
|
# CHECK-NEXT: - DieOffset: 0x00000060
|
|
# CHECK-NEXT: Name: int
|
|
# CHECK-NEXT: - DieOffset: 0x00000071
|
|
# 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: 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: - 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: ...
|
|
|
|
--- !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: 0x00000000DEADBEEF
|
|
# INVALID-LENGTH-NEXT: Version: 2
|
|
# INVALID-LENGTH-NEXT: UnitOffset: 0
|
|
# INVALID-LENGTH-NEXT: UnitSize: 121
|
|
# INVALID-LENGTH-NEXT: Entries:
|
|
# INVALID-LENGTH-NEXT: - DieOffset: 0x0000002A
|
|
# 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
|