284 lines
7.9 KiB
Text
284 lines
7.9 KiB
Text
## This test checks handling of DWARFv5 address attribute.
|
|
## It contains two compile units. One is a good one and
|
|
## should be processed correctly. Second is a bad - it
|
|
## missing DW_AT_addr_base attribute. All address attributes
|
|
## inside this unit should be skipped.
|
|
|
|
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: echo '---' > %t2.map
|
|
# RUN: echo "triple: 'x86_64-apple-darwin'" >> %t2.map
|
|
# RUN: echo 'objects:' >> %t2.map
|
|
# RUN: echo " - filename: '%t.o'" >> %t2.map
|
|
# RUN: echo ' symbols:' >> %t2.map
|
|
# RUN: echo ' - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map
|
|
# RUN: echo '...' >> %t2.map
|
|
# RUN: dsymutil -y %t2.map -f -o - | llvm-dwarfdump -a - | FileCheck %s
|
|
|
|
# CHECK: file format Mach-O 64-bit x86-64
|
|
# CHECK: .debug_info contents:
|
|
# CHECK: Compile Unit:
|
|
# CHECK: DW_TAG_compile_unit
|
|
# CHECK: DW_AT_name{{.*}}"GoodCU"
|
|
# CHECK: DW_AT_low_pc
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: DW_AT_name{{.*}}"foo"
|
|
# CHECK: DW_TAG_variable
|
|
# CHECK: DW_AT_name{{.*}}"var1"
|
|
# CHECK: DW_AT_location (DW_OP_addr
|
|
# CHECK: 0x00000043: NULL
|
|
# CHECK: Compile Unit:
|
|
# CHECK: DW_TAG_compile_unit
|
|
# CHECK-NOT: DW_AT_low_pc
|
|
# CHECK: DW_AT_name{{.*}}"BadCU"
|
|
# CHECK-NOT: DW_TAG_subprogram
|
|
# CHECK-NOT: DW_TAG_variable
|
|
# CHECK: 0x0000005b: NULL
|
|
|
|
--- !mach-o
|
|
FileHeader:
|
|
magic: 0xFEEDFACF
|
|
cputype: 0x01000007
|
|
cpusubtype: 0x00000003
|
|
filetype: 0x00000001
|
|
ncmds: 2
|
|
sizeofcmds: 472
|
|
flags: 0x00002000
|
|
reserved: 0x00000000
|
|
LoadCommands:
|
|
- cmd: LC_SEGMENT_64
|
|
cmdsize: 312
|
|
segname: ''
|
|
vmaddr: 0x00
|
|
vmsize: 0x300
|
|
fileoff: 0x300
|
|
filesize: 0x300
|
|
maxprot: 7
|
|
initprot: 7
|
|
nsects: 3
|
|
flags: 0
|
|
Sections:
|
|
- sectname: __debug_abbrev
|
|
segname: __DWARF
|
|
addr: 0x000000000000000F
|
|
size: 0x60
|
|
offset: 0x00000210
|
|
align: 0
|
|
reloff: 0x00000000
|
|
nreloc: 0
|
|
flags: 0x00000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
- sectname: __debug_info
|
|
segname: __DWARF
|
|
addr: 0x000000000000100
|
|
size: 0x9e
|
|
offset: 0x00000310
|
|
align: 0
|
|
reloff: 0x00000000
|
|
nreloc: 0
|
|
flags: 0x00000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
- sectname: __debug_addr
|
|
segname: __DWARF
|
|
addr: 0x0000000000000200
|
|
size: 0x30
|
|
offset: 0x00000400
|
|
align: 0
|
|
reloff: 0x00000600
|
|
nreloc: 2
|
|
flags: 0x02000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
relocations:
|
|
- address: 0x8
|
|
symbolnum: 1
|
|
pcrel: true
|
|
length: 3
|
|
extern: true
|
|
type: 0
|
|
scattered: false
|
|
value: 0
|
|
- address: 0x1c
|
|
symbolnum: 1
|
|
pcrel: true
|
|
length: 3
|
|
extern: true
|
|
type: 0
|
|
scattered: false
|
|
value: 0
|
|
- cmd: LC_SYMTAB
|
|
cmdsize: 24
|
|
symoff: 0x700
|
|
nsyms: 2
|
|
stroff: 0x720
|
|
strsize: 10
|
|
LinkEditData:
|
|
NameList:
|
|
- n_strx: 1
|
|
n_type: 0x0F
|
|
n_sect: 1
|
|
n_desc: 0
|
|
n_value: 0
|
|
- n_strx: 1
|
|
n_type: 0x0F
|
|
n_sect: 1
|
|
n_desc: 0
|
|
n_value: 0
|
|
StringTable:
|
|
- ''
|
|
- '__Z3foov'
|
|
- ''
|
|
DWARF:
|
|
debug_abbrev:
|
|
- Table:
|
|
- Tag: DW_TAG_compile_unit
|
|
Children: DW_CHILDREN_yes
|
|
Attributes:
|
|
- Attribute: DW_AT_producer
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_language
|
|
Form: DW_FORM_data2
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_low_pc
|
|
Form: DW_FORM_addrx
|
|
- Attribute: DW_AT_high_pc
|
|
Form: DW_FORM_data8
|
|
- Attribute: DW_AT_addr_base
|
|
Form: DW_FORM_sec_offset
|
|
- Tag: DW_TAG_subprogram
|
|
Children: DW_CHILDREN_yes
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_low_pc
|
|
Form: DW_FORM_addrx
|
|
- Attribute: DW_AT_high_pc
|
|
Form: DW_FORM_data8
|
|
- Attribute: DW_AT_type
|
|
Form: DW_FORM_ref4
|
|
- Tag: DW_TAG_base_type
|
|
Children: DW_CHILDREN_no
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Tag: DW_TAG_variable
|
|
Children: DW_CHILDREN_no
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_type
|
|
Form: DW_FORM_ref4
|
|
- Attribute: DW_AT_location
|
|
Form: DW_FORM_exprloc
|
|
- Table:
|
|
- Tag: DW_TAG_compile_unit
|
|
Children: DW_CHILDREN_yes
|
|
Attributes:
|
|
- Attribute: DW_AT_producer
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_language
|
|
Form: DW_FORM_data2
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_low_pc
|
|
Form: DW_FORM_addrx
|
|
- Attribute: DW_AT_high_pc
|
|
Form: DW_FORM_data8
|
|
- Tag: DW_TAG_subprogram
|
|
Children: DW_CHILDREN_yes
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_low_pc
|
|
Form: DW_FORM_addrx
|
|
- Attribute: DW_AT_high_pc
|
|
Form: DW_FORM_data8
|
|
- Attribute: DW_AT_type
|
|
Form: DW_FORM_ref4
|
|
- Tag: DW_TAG_base_type
|
|
Children: DW_CHILDREN_no
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Tag: DW_TAG_variable
|
|
Children: DW_CHILDREN_no
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_type
|
|
Form: DW_FORM_ref4
|
|
- Attribute: DW_AT_location
|
|
Form: DW_FORM_exprloc
|
|
debug_info:
|
|
- Version: 5
|
|
UnitType: DW_UT_compile
|
|
Entries:
|
|
- AbbrCode: 1
|
|
Values:
|
|
- CStr: by_hand
|
|
- Value: 0x04
|
|
- CStr: GoodCU
|
|
- Value: 0x0
|
|
- Value: 0x10
|
|
- Value: 0x8
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo
|
|
- Value: 0x0
|
|
- Value: 0x10
|
|
- Value: 0x3e
|
|
- AbbrCode: 0
|
|
- AbbrCode: 3
|
|
Values:
|
|
- CStr: int
|
|
- AbbrCode: 4
|
|
Values:
|
|
- CStr: var1
|
|
- Value: 0x0000003e
|
|
- BlockData:
|
|
- 0xa1
|
|
- 0x00
|
|
- AbbrCode: 0
|
|
- Version: 5
|
|
UnitType: DW_UT_compile
|
|
Entries:
|
|
- AbbrCode: 1
|
|
Values:
|
|
- CStr: by_hand
|
|
- Value: 0x04
|
|
- CStr: BadCU
|
|
- Value: 0x0
|
|
- Value: 0x10
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo1
|
|
- Value: 0x0
|
|
- Value: 0x10
|
|
- Value: 0x3e
|
|
- AbbrCode: 0
|
|
- AbbrCode: 3
|
|
Values:
|
|
- CStr: int
|
|
- AbbrCode: 4
|
|
Values:
|
|
- CStr: var1
|
|
- Value: 0x0000003e
|
|
- BlockData:
|
|
- 0xa1
|
|
- 0x00
|
|
- AbbrCode: 0
|
|
debug_addr:
|
|
- Version: 5
|
|
AddressSize: 0x08
|
|
Entries:
|
|
- Address: 0x1130
|
|
- Version: 5
|
|
AddressSize: 0x08
|
|
Entries:
|
|
- Address: 0x10
|
|
...
|