Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml
Show First 20 Lines • Show All 508 Lines • ▼ Show 20 Lines | - Length: 65 | ||||
Data: 11 | Data: 11 | ||||
... | ... | ||||
... | ... | ||||
# DWARF32: DWARF: | # DWARF32: DWARF: | ||||
# DWARF32: debug_info: | # DWARF32: debug_info: | ||||
# DWARF32-NEXT: - Length: 0x0000000000000075 | # DWARF32-NEXT: - Length: 0x0000000000000075 | ||||
# DWARF32-NEXT: Version: 4 | # DWARF32-NEXT: Version: 4 | ||||
# DWARF32-NEXT: AbbrevTableID: 0 | |||||
# DWARF32-NEXT: AbbrOffset: 0 | # DWARF32-NEXT: AbbrOffset: 0 | ||||
# DWARF32-NEXT: AddrSize: 8 | # DWARF32-NEXT: AddrSize: 8 | ||||
# DWARF32-NEXT: Entries: | # DWARF32-NEXT: Entries: | ||||
# DWARF32-NEXT: - AbbrCode: 0x00000001 | # DWARF32-NEXT: - AbbrCode: 0x00000001 | ||||
# DWARF32-NEXT: Values: | # DWARF32-NEXT: Values: | ||||
# DWARF32-NEXT: - Value: 0x0000000000000001 | # DWARF32-NEXT: - Value: 0x0000000000000001 | ||||
# DWARF32-NEXT: - Value: 0x000000000000000C | # DWARF32-NEXT: - Value: 0x000000000000000C | ||||
# DWARF32-NEXT: - Value: 0x0000000000000038 | # DWARF32-NEXT: - Value: 0x0000000000000038 | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | |||||
## Test DWARF32 unit header. | ## Test DWARF32 unit header. | ||||
# RUN: yaml2obj --docnum=2 -DFORMAT=DWARF32 %s | \ | # RUN: yaml2obj --docnum=2 -DFORMAT=DWARF32 %s | \ | ||||
# RUN: obj2yaml | FileCheck %s --check-prefix=DWARF32-YAML | # RUN: obj2yaml | FileCheck %s --check-prefix=DWARF32-YAML | ||||
# DWARF32-YAML: debug_info: | # DWARF32-YAML: debug_info: | ||||
# DWARF32-YAML-NEXT: - Length: 0x000000000000000C | # DWARF32-YAML-NEXT: - Length: 0x000000000000000C | ||||
# DWARF32-YAML-NEXT: Version: 4 | # DWARF32-YAML-NEXT: Version: 4 | ||||
# DWARF32-YAML-NEXT: AbbrevTableID: 0 | |||||
# DWARF32-YAML-NEXT: AbbrOffset: 0 | # DWARF32-YAML-NEXT: AbbrOffset: 0 | ||||
# DWARF32-YAML-NEXT: AddrSize: 8 | # DWARF32-YAML-NEXT: AddrSize: 8 | ||||
# DWARF32-YAML-NEXT: Entries: | # DWARF32-YAML-NEXT: Entries: | ||||
# DWARF32-YAML-NEXT: - AbbrCode: 0x00000001 | # DWARF32-YAML-NEXT: - AbbrCode: 0x00000001 | ||||
# DWARF32-YAML-NEXT: Values: | # DWARF32-YAML-NEXT: Values: | ||||
# DWARF32-YAML-NEXT: - Value: 0x0000000000001234 | # DWARF32-YAML-NEXT: - Value: 0x0000000000001234 | ||||
--- !mach-o | --- !mach-o | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
# RUN: yaml2obj --docnum=2 -DFORMAT=DWARF64 %s | \ | # RUN: yaml2obj --docnum=2 -DFORMAT=DWARF64 %s | \ | ||||
# RUN: obj2yaml | FileCheck %s --check-prefix=DWARF64-YAML | # RUN: obj2yaml | FileCheck %s --check-prefix=DWARF64-YAML | ||||
# DWARF64-YAML: debug_info: | # DWARF64-YAML: debug_info: | ||||
# DWARF64-YAML-NEXT: - Format: DWARF64 | # DWARF64-YAML-NEXT: - Format: DWARF64 | ||||
# DWARF64-YAML-NEXT: Length: 0x000000000000000C | # DWARF64-YAML-NEXT: Length: 0x000000000000000C | ||||
# DWARF64-YAML-NEXT: Version: 4 | # DWARF64-YAML-NEXT: Version: 4 | ||||
# DWARF64-YAML-NEXT: AbbrevTableID: 0 | |||||
# DWARF64-YAML-NEXT: AbbrOffset: 0 | # DWARF64-YAML-NEXT: AbbrOffset: 0 | ||||
# DWARF64-YAML-NEXT: AddrSize: 8 | # DWARF64-YAML-NEXT: AddrSize: 8 | ||||
# DWARF64-YAML-NEXT: Entries: | # DWARF64-YAML-NEXT: Entries: | ||||
# DWARF64-YAML-NEXT: - AbbrCode: 0x00000001 | # DWARF64-YAML-NEXT: - AbbrCode: 0x00000001 | ||||
# DWARF64-YAML-NEXT: Values: | # DWARF64-YAML-NEXT: Values: | ||||
# DWARF64-YAML-NEXT: - Value: 0x0000000000001234 | # DWARF64-YAML-NEXT: - Value: 0x0000000000001234 | ||||
## c) Test that yaml2obj is able to generate compilation units according to the | |||||
Higuoxing: Added test. | |||||
## associated abbrev table that is referenced by the 'AbbrevTableID' and obj2yaml | |||||
## is able to convert it back. | |||||
Is there any particular reason you don't have something equivalent to this in the ELF testing, to show you can have tables out-of-order etc. jhenderson: Is there any particular reason you don't have something equivalent to this in the ELF testing… | |||||
Added in test/tools/yaml2obj/ELF/DWARF/debug-info.yaml (o) Higuoxing: Added in test/tools/yaml2obj/ELF/DWARF/debug-info.yaml (o) | |||||
# RUN: yaml2obj --docnum=3 %s | obj2yaml | FileCheck %s --check-prefix=MULTI-TABLES | |||||
# MULTI-TABLES: DWARF: | |||||
# MULTI-TABLES-NEXT: debug_abbrev: | |||||
# MULTI-TABLES-NEXT: - ID: 0 | |||||
# MULTI-TABLES-NEXT: Table: | |||||
# MULTI-TABLES-NEXT: - Code: 0x0000000000000001 | |||||
# MULTI-TABLES-NEXT: Tag: DW_TAG_compile_unit | |||||
# MULTI-TABLES-NEXT: Children: DW_CHILDREN_no | |||||
# MULTI-TABLES-NEXT: Attributes: | |||||
# MULTI-TABLES-NEXT: - Attribute: DW_AT_low_pc | |||||
# MULTI-TABLES-NEXT: Form: DW_FORM_addr | |||||
# MULTI-TABLES-NEXT: - ID: 1 | |||||
# MULTI-TABLES-NEXT: Table: | |||||
# MULTI-TABLES-NEXT: - Code: 0x0000000000000001 | |||||
# MULTI-TABLES-NEXT: Tag: DW_TAG_compile_unit | |||||
# MULTI-TABLES-NEXT: Children: DW_CHILDREN_no | |||||
# MULTI-TABLES-NEXT: Attributes: | |||||
# MULTI-TABLES-NEXT: - Attribute: DW_AT_low_pc | |||||
# MULTI-TABLES-NEXT: Form: DW_FORM_data4 | |||||
# MULTI-TABLES-NEXT: - ID: 2 | |||||
# MULTI-TABLES-NEXT: Table: | |||||
# MULTI-TABLES-NEXT: - Code: 0x0000000000000001 | |||||
# MULTI-TABLES-NEXT: Tag: DW_TAG_compile_unit | |||||
# MULTI-TABLES-NEXT: Children: DW_CHILDREN_no | |||||
# MULTI-TABLES-NEXT: Attributes: | |||||
# MULTI-TABLES-NEXT: - Attribute: DW_AT_low_pc | |||||
# MULTI-TABLES-NEXT: Form: DW_FORM_udata | |||||
# MULTI-TABLES-NEXT: debug_info: | |||||
Something's not right here - the YAML below has four debug_info tables, but only three have check lines. What happened to the one that should be referencing abbrev table 2? jhenderson: Something's not right here - the YAML below has four debug_info tables, but only three have… | |||||
Sorry, the length and offsets are calculated by myself, and the __debug_info section's length is miscalculated to be 60, which should be 67. I've corrected it. Higuoxing: Sorry, the length and offsets are calculated by myself, and the __debug_info section's length… | |||||
# MULTI-TABLES-NEXT: - Length: 0x000000000000000C | |||||
# MULTI-TABLES-NEXT: Version: 4 | |||||
# MULTI-TABLES-NEXT: AbbrevTableID: 1 | |||||
# MULTI-TABLES-NEXT: AbbrOffset: 0x0000000000000008 | |||||
# MULTI-TABLES-NEXT: AddrSize: 8 | |||||
# MULTI-TABLES-NEXT: Entries: | |||||
# MULTI-TABLES-NEXT: - AbbrCode: 0x00000001 | |||||
# MULTI-TABLES-NEXT: Values: | |||||
# MULTI-TABLES-NEXT: - Value: 0x0000000000001234 | |||||
# MULTI-TABLES-NEXT: - Length: 0x000000000000000C | |||||
# MULTI-TABLES-NEXT: Version: 4 | |||||
# MULTI-TABLES-NEXT: AbbrevTableID: 1 | |||||
# MULTI-TABLES-NEXT: AbbrOffset: 0x0000000000000008 | |||||
# MULTI-TABLES-NEXT: AddrSize: 8 | |||||
# MULTI-TABLES-NEXT: Entries: | |||||
# MULTI-TABLES-NEXT: - AbbrCode: 0x00000001 | |||||
# MULTI-TABLES-NEXT: Values: | |||||
# MULTI-TABLES-NEXT: - Value: 0x0000000000004321 | |||||
# MULTI-TABLES-NEXT: - Length: 0x0000000000000010 | |||||
# MULTI-TABLES-NEXT: Version: 4 | |||||
# MULTI-TABLES-NEXT: AbbrevTableID: 0 | |||||
# MULTI-TABLES-NEXT: AbbrOffset: 0x0000000000000000 | |||||
# MULTI-TABLES-NEXT: AddrSize: 8 | |||||
# MULTI-TABLES-NEXT: Entries: | |||||
# MULTI-TABLES-NEXT: - AbbrCode: 0x00000001 | |||||
# MULTI-TABLES-NEXT: Values: | |||||
# MULTI-TABLES-NEXT: - Value: 0x0000000000005678 | |||||
# MULTI-TABLES-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: 232 | |||||
segname: __DWARF | |||||
vmaddr: 0x00 | |||||
vmsize: 0x00 | |||||
fileoff: 0x00 | |||||
filesize: 0x00 | |||||
maxprot: 0 | |||||
initprot: 0 | |||||
nsects: 2 | |||||
flags: 0 | |||||
Sections: | |||||
- sectname: __debug_abbrev | |||||
segname: __DWARF | |||||
addr: 0x00 | |||||
size: 24 | |||||
offset: 528 | |||||
align: 0 | |||||
reloff: 0x00000000 | |||||
nreloc: 0 | |||||
flags: 0x00000000 | |||||
reserved1: 0x00000000 | |||||
reserved2: 0x00000000 | |||||
reserved3: 0x00000000 | |||||
- sectname: __debug_info | |||||
segname: __DWARF | |||||
addr: 0x00 | |||||
size: 64 | |||||
offset: 1070 | |||||
align: 0 | |||||
reloff: 0x00000000 | |||||
nreloc: 0 | |||||
flags: 0x00000000 | |||||
reserved1: 0x00000000 | |||||
reserved2: 0x00000000 | |||||
reserved3: 0x00000000 | |||||
DWARF: | |||||
debug_abbrev: | |||||
- Table: | |||||
- Code: 1 | |||||
Tag: DW_TAG_compile_unit | |||||
Added test. Higuoxing: Added test. | |||||
Children: DW_CHILDREN_no | |||||
Attributes: | |||||
- Attribute: DW_AT_low_pc | |||||
Form: DW_FORM_addr | |||||
- ID: 2 | |||||
Table: | |||||
- Code: 1 | |||||
Tag: DW_TAG_compile_unit | |||||
Children: DW_CHILDREN_no | |||||
Attributes: | |||||
- Attribute: DW_AT_low_pc | |||||
Form: DW_FORM_data4 | |||||
- ID: 1 | |||||
Table: | |||||
- Code: 1 | |||||
Tag: DW_TAG_compile_unit | |||||
Children: DW_CHILDREN_no | |||||
Attributes: | |||||
- Attribute: DW_AT_low_pc | |||||
Form: DW_FORM_udata | |||||
debug_info: | |||||
- Version: 4 | |||||
AbbrevTableID: 2 | |||||
AbbrOffset: 8 | |||||
Entries: | |||||
- AbbrCode: 1 | |||||
Values: | |||||
- Value: 0x1234 | |||||
- Version: 4 | |||||
AbbrevTableID: 2 | |||||
AbbrOffset: 8 | |||||
Entries: | |||||
- AbbrCode: 1 | |||||
Values: | |||||
- Value: 0x4321 | |||||
- Version: 4 | |||||
AbbrevTableID: 0 | |||||
AbbrOffset: 0 | |||||
Entries: | |||||
- AbbrCode: 1 | |||||
Values: | |||||
- Value: 0x5678 | |||||
- Version: 4 | |||||
AbbrevTableID: 1 | |||||
AbbrOffset: 16 | |||||
Entries: | |||||
- AbbrCode: 1 | |||||
Values: | |||||
- Value: 0x8765 | |||||
## d) Test that yaml2obj emits an error message when a compilation unit doesn't have | |||||
## an associated abbrev table. | |||||
# RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --check-prefix=MISSING-ABBREV | |||||
# MISSING-ABBREV: yaml2obj: error: cannot find abbrev table whose ID is 0 | |||||
--- !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: 232 | |||||
segname: __DWARF | |||||
vmaddr: 0x00 | |||||
vmsize: 0x00 | |||||
fileoff: 0x00 | |||||
filesize: 0x00 | |||||
maxprot: 0 | |||||
initprot: 0 | |||||
nsects: 2 | |||||
flags: 0 | |||||
Sections: | |||||
- sectname: __debug_abbrev | |||||
segname: __DWARF | |||||
addr: 0x00 | |||||
size: 24 | |||||
offset: 528 | |||||
align: 0 | |||||
reloff: 0x00000000 | |||||
nreloc: 0 | |||||
flags: 0x00000000 | |||||
reserved1: 0x00000000 | |||||
reserved2: 0x00000000 | |||||
reserved3: 0x00000000 | |||||
Can you omit the abbrev section entirely? jhenderson: Can you omit the abbrev section entirely? | |||||
- sectname: __debug_info | |||||
segname: __DWARF | |||||
addr: 0x00 | |||||
size: 64 | |||||
offset: 1070 | |||||
align: 0 | |||||
reloff: 0x00000000 | |||||
nreloc: 0 | |||||
flags: 0x00000000 | |||||
reserved1: 0x00000000 | |||||
reserved2: 0x00000000 | |||||
reserved3: 0x00000000 | |||||
DWARF: | |||||
debug_info: | |||||
- Version: 4 | |||||
AbbrOffset: 0x00 | |||||
Entries: | |||||
- AbbrCode: 1 | |||||
Values: | |||||
- Value: 0x1234 | |||||
This feels like it belongs in a debug_abbrev dedicated test? jhenderson: This feels like it belongs in a debug_abbrev dedicated test? |
Added test.