Files
TheRock/compiler/amd-llvm/llvm/test/tools/yaml2obj/ELF/DWARF/debug-line-v5.yaml
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

385 lines
22 KiB
YAML

## Test yaml2obj for DWARFv5 .debug_line. This file only tests new features of
## DWARFv5 and assumes that the common functionality is tested elsewhere.
## An empty debug_line section - test DWARF32/64 and little-/big-endian cases.
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: [[ENDIAN]]
Type: ET_EXEC
DWARF:
debug_line:
- Format: [[FORMAT]]
Version: 5
AddressSize: 8
SegmentSelectorSize: 4
MinInstLength: 1
MaxOpsPerInst: 1
DefaultIsStmt: 1
LineBase: 1
LineRange: 14
OpcodeBase: 13
# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2LSB -DFORMAT=DWARF32 %s | \
# RUN: llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefix=HEADER32LE
# HEADER32LE: Hex dump of section '.debug_line':
# HEADER32LE-NEXT: 0x00000000 1e000000 05000804 16000000 01010101
## ^------- unit_length (4-byte)
## ^--- version (2-byte)
## ^- address_size (1-byte)
## ^- segment_selector_size (4-byte)
## ^------- header_length (4-byte)
## ^- minimum_instruction_length (1-byte)
## ^- maximum_operations_per_instruction (1-byte)
## ^- default_is_stmt (1-byte)
## ^- line_base (1-byte)
# HEADER32LE-NEXT: 0x00000010 0e0d0001 01010100 00000100 00010000
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_count (ULEB128)
# HEADER32LE-NEXT: 0x00000020 0000{{ }}
## ^- file_name_entry_format_count (1-byte)
## ^- file_names_count (ULEB128)
## ^---- EOF
# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2MSB -DFORMAT=DWARF32 %s | \
# RUN: llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefix=HEADER32BE
# HEADER32BE: Hex dump of section '.debug_line':
# HEADER32BE-NEXT: 0x00000000 0000001e 00050804 00000016 01010101
## ^------- unit_length (4-byte)
## ^--- version (2-byte)
## ^- address_size (1-byte)
## ^- segment_selector_size (4-byte)
## ^------- header_length (4-byte)
## ^- minimum_instruction_length (1-byte)
## ^- maximum_operations_per_instruction (1-byte)
## ^- default_is_stmt (1-byte)
## ^- line_base (1-byte)
# HEADER32BE-NEXT: 0x00000010 0e0d0001 01010100 00000100 00010000
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_count (ULEB128)
# HEADER32BE-NEXT: 0x00000020 0000{{ }}
## ^- file_name_entry_format_count (1-byte)
## ^- file_names_count (ULEB128)
## ^---- EOF
# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2LSB -DFORMAT=DWARF64 %s | \
# RUN: llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefix=HEADER64LE
# HEADER64LE: Hex dump of section '.debug_line':
# HEADER64LE-NEXT: 0x00000000 ffffffff 22000000 00000000 05000804
## ^------- -------- -------- unit_length (12-byte)
## ^--- version (2-byte)
## ^- address_size (1-byte)
## ^- segment_selector_size (4-byte)
# HEADER64LE-NEXT: 0x00000010 16000000 00000000 01010101 0e0d0001
## ^------- -------- header_length (4-byte)
## ^- minimum_instruction_length (1-byte)
## ^- maximum_operations_per_instruction (1-byte)
## ^- default_is_stmt (1-byte)
## ^- line_base (1-byte)
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- standard_opcode_lengths
# HEADER64LE-NEXT: 0x00000020 01010100 00000100 00010000 0000{{ }}
# -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_count (ULEB128)
## ^- file_name_entry_format_count (1-byte)
## ^- file_names_count (ULEB128)
## ^----EOF
# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2MSB -DFORMAT=DWARF64 %s | \
# RUN: llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefix=HEADER64BE
# HEADER64BE: Hex dump of section '.debug_line':
# HEADER64BE-NEXT: 0x00000000 ffffffff 00000000 00000022 00050804
## ^------- -------- -------- unit_length (12-byte)
## ^--- version (2-byte)
## ^- address_size (1-byte)
## ^- segment_selector_size (4-byte)
# HEADER64BE-NEXT: 0x00000010 00000000 00000016 01010101 0e0d0001
## ^------- -------- header_length (4-byte)
## ^- minimum_instruction_length (1-byte)
## ^- maximum_operations_per_instruction (1-byte)
## ^- default_is_stmt (1-byte)
## ^- line_base (1-byte)
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- standard_opcode_lengths
# HEADER64BE-NEXT: 0x00000020 01010100 00000100 00010000 0000{{ }}
# -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_count (ULEB128)
## ^- file_name_entry_format_count (1-byte)
## ^- file_names_count (ULEB128)
## ^----EOF
## Check file/directory entry format handling, particularly the interaction
## between the count and array fields.
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
DWARF:
debug_line:
- Format: DWARF32
Version: 5
AddressSize: 8
SegmentSelectorSize: 4
MinInstLength: 1
MaxOpsPerInst: 1
DefaultIsStmt: 1
LineBase: 1
LineRange: 14
OpcodeBase: 13
# DirectoryEntryFormatCount: 1 # Implicit
DirectoryEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
FileNameEntryFormatCount: 1 # Explicit
FileNameEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
# RUN: yaml2obj --docnum=2 %s | llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefix=FORMATCNT1
# FORMATCNT1: Hex dump of section '.debug_line':
# FORMATCNT1-NEXT: 0x00000000 22000000 05000804 1a000000 01010101
## ^------- unit_length (4-byte)
## ^--- version (2-byte)
## ^- address_size (1-byte)
## ^- segment_selector_size (4-byte)
## ^------- header_length (4-byte)
## ^- minimum_instruction_length (1-byte)
## ^- maximum_operations_per_instruction (1-byte)
## ^- default_is_stmt (1-byte)
## ^- line_base (1-byte)
# FORMATCNT1-NEXT: 0x00000010 0e0d0001 01010100 00000100 00010101
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_entry_format[0].content_type (ULEB128)
# FORMATCNT1-NEXT: 0x00000020 08000101 0800{{ }}
## ^- directories_entry_format[0].form (ULEB128)
## ^- directories_count (ULEB128)
## ^- file_name_entry_format_count (1-byte)
## ^- file_name_entry_format[0].content_type (ULEB128)
## ^- file_name_entry_format[0].form (ULEB128)
## ^- file_names_count (ULEB128)
## ^---- EOF
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
DWARF:
debug_line:
- Format: DWARF32
Version: 5
AddressSize: 8
SegmentSelectorSize: 4
MinInstLength: 1
MaxOpsPerInst: 1
DefaultIsStmt: 1
LineBase: 1
LineRange: 14
OpcodeBase: 13
DirectoryEntryFormatCount: 0 # Smaller than the array length
DirectoryEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
FileNameEntryFormatCount: 2 # Larger than the array length
FileNameEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
# RUN: yaml2obj --docnum=3 %s | llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefix=FORMATCNT2
# FORMATCNT2: Hex dump of section '.debug_line':
# FORMATCNT2-NEXT: 0x00000000 22000000 05000804 1a000000 01010101
## ^------- unit_length (4-byte)
## ^--- version (2-byte)
## ^- address_size (1-byte)
## ^- segment_selector_size (4-byte)
## ^------- header_length (4-byte)
## ^- minimum_instruction_length (1-byte)
## ^- maximum_operations_per_instruction (1-byte)
## ^- default_is_stmt (1-byte)
## ^- line_base (1-byte)
# FORMATCNT2-NEXT: 0x00000010 0e0d0001 01010100 00000100 00010001
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_entry_format[0].content_type (ULEB128)
# FORMATCNT2-NEXT: 0x00000020 08000201 0800{{ }}
## ^- directories_entry_format[0].form (ULEB128)
## ^- directories_count (ULEB128)
## ^- file_name_entry_format_count (1-byte)
## ^- file_name_entry_format[0].content_type (ULEB128)
## ^- file_name_entry_format[0].form (ULEB128)
## ^- file_names_count (ULEB128)
## ^---- EOF
## Check file name and directory handling, including the cases where the
## specified length of a list does not match its contents.
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: [[FORMAT]]
Type: ET_EXEC
Sections:
- Name: .debug_line_str
Type: SHT_PROGBITS
Content: 666f6f2e63707000 # foo.cpp
DWARF:
debug_line:
- Format: DWARF32
Version: 5
AddressSize: 8
MinInstLength: 1
MaxOpsPerInst: 1
DefaultIsStmt: 1
LineBase: 1
LineRange: 14
OpcodeBase: 13
DirectoryEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
# DirectoriesCount: 2 # Implicit
Directories:
- - CStr: "bar"
- - CStr: "baz"
FileNameEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_line_strp
- ContentType: DW_LNCT_directory_index
Form: DW_FORM_udata
- ContentType: DW_LNCT_timestamp
Form: DW_FORM_block
- ContentType: DW_LNCT_size
Form: DW_FORM_data4
FileNamesCount: 1 # Explicit
FileNames:
- - Value: 0
- Value: 1
- BlockData: [ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 ]
- Value: 0xdead
# RUN: yaml2obj --docnum=4 -DFORMAT=ELFDATA2LSB %s | llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefixes=FILEDIR1,FILEDIR1LE
# RUN: yaml2obj --docnum=4 -DFORMAT=ELFDATA2MSB %s | llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefixes=FILEDIR1,FILEDIR1BE
# FILEDIR1: Hex dump of section '.debug_line':
## Start of header tested above.
# FILEDIR1: 0x00000010 0e0d0001 01010100 00000100 00010101
## ^- line_range (1-byte)
## ^- opcode_base (1-byte)
## ^--- -------- -------- ---- standard_opcode_lengths
## ^- directory_entry_format_count (1-byte)
## ^- directories_entry_format[0].content_type (ULEB128)
# FILEDIR1-NEXT: 0x00000020 08026261 72006261 7a000401 1f020f03
## ^- directories_entry_format[0].form (ULEB128)
## ^- directories_count (ULEB128)
## ^--- ---- directories[0][path] ("bar")
## ^--- ---- directories[1][path] ("baz")
## ^- file_name_entry_format_count (1-byte)
## ^- file_name_entry_format[0].content_type (ULEB128)
## ^- file_name_entry_format[0].form (ULEB128)
## ^- file_name_entry_format[1].content_type (ULEB128)
## ^- file_name_entry_format[1].form (ULEB128)
## ^- file_name_entry_format[2].content_type (ULEB128)
# FILEDIR1-NEXT: 0x00000030 09040601 00000000 01084041 42434445
## ^- file_name_entry_format[2].form (ULEB128)
## ^- file_name_entry_format[3].content_type (ULEB128)
## ^- file_name_entry_format[3].form (ULEB128)
## ^- file_names_count (ULEB128)
## ^------- file_names[0].path (4-byte)
## ^- file_names[0].directory_index (ULEB128)
## ^----- -------- file_names[0].timestamp (block)
# FILEDIR1LE-NEXT: 0x00000040 4647adde 0000{{ }}
# FILEDIR1BE-NEXT: 0x00000040 46470000 dead{{ }}
## ----
## ^--- ---- file_names[0].path (4-byte)
## ^---- EOF
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
DWARF:
debug_line:
- Format: DWARF32
Version: 5
AddressSize: 8
MinInstLength: 1
MaxOpsPerInst: 1
DefaultIsStmt: 1
LineBase: 1
LineRange: 14
OpcodeBase: 13
DirectoryEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
DirectoriesCount: 1 # Larger than the actual length
Directories:
FileNameEntryFormat:
- ContentType: DW_LNCT_path
Form: DW_FORM_string
- ContentType: DW_LNCT_directory_index
Form: DW_FORM_indirect
FileNamesCount: 0 # Smaller than the actual length
FileNames:
- - CStr: foo.cpp
- Value: 0x0b # DW_FORM_data1
- Value: 1
- - CStr: foo.c # Shorter list ends the entry early
- - CStr: bar.cpp
- Value: 0x0b # DW_FORM_data1
- Value: 2
- Value: 0xdead # Extra values ignored
# RUN: yaml2obj --docnum=5 %s | llvm-readelf --hex-dump=.debug_line - | \
# RUN: FileCheck %s --check-prefixes=FILEDIR2
# FILEDIR2: Hex dump of section '.debug_line':
## Start of header tested above.
# FILEDIR2: 0x00000020 08010201 08021600 666f6f2e 63707000
## ^- directories_entry_format[0].form (ULEB128)
## ^- directories_count (ULEB128)
## ^- file_name_entry_format_count (1-byte)
## ^- file_name_entry_format[0].content_type (ULEB128)
## ^- file_name_entry_format[0].form (ULEB128)
## ^- file_name_entry_format[1].content_type (ULEB128)
## ^- file_name_entry_format[1].form (ULEB128)
## ^- file_names_count (ULEB128)
## ^------- -------- file_names[0].path (foo.cpp)
# FILEDIR2-NEXT: 0x00000030 0b01666f 6f2e6300 6261722e 63707000
## ^--- file_names[0].directory_index (ULEB128 + 1-byte)
## ^--- -------- file_names[1].path (foo.c)
## ^------- -------- file_names[2].path (bar.c)
# FILEDIR2-NEXT: 0b02{{ }}
## ^--- file_names[0].directory_index (ULEB128 + 1-byte)
## ^---- EOF