| ## This tests handling invalid .debug_str_offsets.dwo sections in |
| ## a pre-standard DWO/DWP file. |
| |
| # RUN: llvm-mc -triple x86_64 %s -filetype=obj -o %t.dwo |
| # RUN: not llvm-dwarfdump -v %t.dwo 2>&1 | FileCheck %s |
| |
| # RUN: llvm-mc -triple x86_64 %s -filetype=obj -o %t.dwp --defsym DWP=0 |
| # RUN: not llvm-dwarfdump -v %t.dwp 2>&1 | FileCheck %s |
| |
| # CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: length exceeds section size |
| |
| .section .debug_abbrev.dwo,"e",@progbits |
| .LAbbr: |
| .byte 0x01 # Abbrev code |
| .byte 0x11 # DW_TAG_compile_unit |
| .byte 0x00 # DW_CHILDREN_no |
| .byte 0x00 # EOM(1) |
| .byte 0x00 # EOM(2) |
| .byte 0x00 # EOM(3) |
| .LAbbrEnd: |
| |
| .section .debug_info.dwo,"e",@progbits |
| .LCU: |
| .long .LCUEnd-.LCUVersion |
| .LCUVersion: |
| .short 4 |
| .long 0 |
| .byte 8 |
| .uleb128 1 |
| .LCUEnd: |
| |
| ## The section is truncated, i.e. its size is not a multiple of entry size. |
| .section .debug_str_offsets.dwo,"e",@progbits |
| .LStrOff: |
| .byte 0 |
| .LStrOffEnd: |
| |
| .ifdef DWP |
| .section .debug_cu_index, "", @progbits |
| ## Header: |
| .long 2 # Version |
| .long 3 # Section count |
| .long 1 # Unit count |
| .long 2 # Slot count |
| ## Hash Table of Signatures: |
| .quad 0x1100001122222222 # DWO Id of CU0 |
| .quad 0 |
| ## Parallel Table of Indexes: |
| .long 1 |
| .long 0 |
| ## Table of Section Offsets: |
| ## Row 0: |
| .long 1 # DW_SECT_INFO |
| .long 3 # DW_SECT_ABBREV |
| .long 6 # DW_SECT_STR_OFFSETS |
| ## Row 1, offsets of the contribution |
| .long .LCU-.debug_info.dwo |
| .long .LAbbr-.debug_abbrev.dwo |
| .long .LStrOff-.debug_str_offsets.dwo |
| ## Table of Section Sizes: |
| ## Row 1, sizes of the contribution |
| .long .LCUEnd-.LCU |
| .long .LAbbrEnd-.LAbbr |
| .long .LStrOffEnd-.LStrOff |
| .endif |