xref: /llvm-project/llvm/test/DebugInfo/X86/dwarfdump-str-offsets-v4-invalid.s (revision 95fad44e34c3c20263961a715571d798d90921f6)
1## This tests handling invalid .debug_str_offsets.dwo sections in
2## a pre-standard DWO/DWP file.
3
4# RUN: llvm-mc -triple x86_64 %s -filetype=obj -o %t.dwo
5# RUN: not llvm-dwarfdump -v %t.dwo 2>&1 | FileCheck %s
6
7# RUN: llvm-mc -triple x86_64 %s -filetype=obj -o %t.dwp --defsym DWP=0
8# RUN: not llvm-dwarfdump -v %t.dwp 2>&1 | FileCheck %s
9
10# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: length exceeds section size
11
12    .section .debug_abbrev.dwo,"e",@progbits
13.LAbbr:
14    .byte 0x01  # Abbrev code
15    .byte 0x11  # DW_TAG_compile_unit
16    .byte 0x00  # DW_CHILDREN_no
17    .byte 0x00  # EOM(1)
18    .byte 0x00  # EOM(2)
19    .byte 0x00  # EOM(3)
20.LAbbrEnd:
21
22    .section .debug_info.dwo,"e",@progbits
23.LCU:
24    .long .LCUEnd-.LCUVersion
25.LCUVersion:
26    .short 4
27    .long 0
28    .byte 8
29    .uleb128 1
30.LCUEnd:
31
32## The section is truncated, i.e. its size is not a multiple of entry size.
33    .section .debug_str_offsets.dwo,"e",@progbits
34.LStrOff:
35    .byte 0
36.LStrOffEnd:
37
38.ifdef DWP
39    .section .debug_cu_index, "", @progbits
40## Header:
41    .long 2                         # Version
42    .long 3                         # Section count
43    .long 1                         # Unit count
44    .long 2                         # Slot count
45## Hash Table of Signatures:
46    .quad 0x1100001122222222        # DWO Id of CU0
47    .quad 0
48## Parallel Table of Indexes:
49    .long 1
50    .long 0
51## Table of Section Offsets:
52## Row 0:
53    .long 1                         # DW_SECT_INFO
54    .long 3                         # DW_SECT_ABBREV
55    .long 6                         # DW_SECT_STR_OFFSETS
56## Row 1, offsets of the contribution
57    .long .LCU-.debug_info.dwo
58    .long .LAbbr-.debug_abbrev.dwo
59    .long .LStrOff-.debug_str_offsets.dwo
60## Table of Section Sizes:
61## Row 1, sizes of the contribution
62    .long .LCUEnd-.LCU
63    .long .LAbbrEnd-.LAbbr
64    .long .LStrOffEnd-.LStrOff
65.endif
66