1 # Test object with an artifically constructed type unit header to verify
2 # that the length field is correctly used to verify the validity of the
5 # To generate the test object:
6 # llvm-mc -triple x86_64-unknown-linux typeunit-header.s -filetype=obj \
7 # -o typeunit-header.elf-x86-64
9 # We only have an abbreviation for the type unit die which is all we need.
10 # Real type unit dies have quite different attributes of course, but we
11 # just need to demonstrate an issue with validating length, so we just give it
12 # a single visibility attribute.
13 .section .debug_abbrev,"",@progbits
14 .byte 0x01 # Abbrev code
15 .byte 0x41 # DW_TAG_type_unit
16 .byte 0x01 # DW_CHILDREN_yes
17 .byte 0x17 # DW_AT_visibility
18 .byte 0x0b # DW_FORM_data1
21 .byte 0x02 # Abbrev code
22 .byte 0x13 # DW_TAG_structure_type
23 .byte 0x00 # DW_CHILDREN_no (no members)
24 .byte 0x17 # DW_AT_visibility
25 .byte 0x0b # DW_FORM_data1
30 .section .debug_types,"",@progbits
31 # DWARF v4 Type unit header - DWARF32 format.
33 .long TU_4_32_end-TU_4_32_version # Length of Unit
35 .short 4 # DWARF version number
36 .long .debug_abbrev # Offset Into Abbrev. Section
37 .byte 8 # Address Size (in bytes)
38 .quad 0x0011223344556677 # Type Signature
39 .long TU_4_32_type-TU_4_32_start # Type offset
40 # The type-unit DIE, which has just a visibility attribute.
41 .byte 1 # Abbreviation code
42 .byte 1 # DW_VIS_local
43 # The type DIE, which also just has a one-byte visibility attribute.
45 .byte 2 # Abbreviation code
46 .byte 1 # DW_VIS_local