1# this checks llvm-dwp handling of DWARFv5 Info section header.
2
3# RUN: llvm-mc --triple=x86_64-unknown-linux --filetype=obj --split-dwarf-file=%t.dwo -dwarf-version=5 %s -o %t.o
4
5# RUN: llvm-dwp %t.dwo -o %t.dwp
6# RUN: llvm-dwarfdump -v %t.dwp | FileCheck %s
7
8#CHECK-DAG: .debug_info.dwo contents:
9#CHECK: 0x00000000: Compile Unit: length = 0x00000050, format = DWARF32, version = 0x0005, unit_type = DW_UT_split_compile, abbr_offset = 0x0000, addr_size = 0x08, DWO_id = [[DWOID:.*]] (next unit at 0x00000054)
10
11# CHECK-DAG: .debug_cu_index contents:
12# CHECK: version = 2, units = 1, slots = 2
13# CHECK: Index Signature          INFO                     ABBREV
14# CHECK: 1 [[DWOID]] [0x00000000, 0x00000054) [0x00000000, 0x0000002a)
15
16	.section	.debug_info.dwo,"e",@progbits
17	.long	.Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
18.Ldebug_info_dwo_start0:
19	.short	5                      # DWARF version number
20	.byte	5                       # DWARF Unit Type
21	.byte	8                       # Address Size (in bytes)
22	.long	0                       # Offset Into Abbrev. Section
23	.quad	-1173350285159172090
24	.byte	1                       # Abbrev [1] 0x14:0x16 DW_TAG_compile_unit
25	.asciz  "clang version 11.0.0" # DW_AT_producer
26	.short	12                     # DW_AT_language
27	.asciz  "int.c"                # DW_AT_name
28	.asciz  "int.dwo"              # DW_AT_dwo_name
29	.byte	2                       # Abbrev [2] 0x1a:0xb DW_TAG_variable
30	.asciz  "integer"              # DW_AT_name
31	.long	37                      # DW_AT_type
32                                        # DW_AT_external
33	.byte	0                       # DW_AT_decl_file
34	.byte	1                       # DW_AT_decl_line
35	.byte	2                       # DW_AT_location
36	.byte	161
37	.byte	0
38	.byte	3                       # Abbrev [3] 0x25:0x4 DW_TAG_base_type
39	.asciz  "int"                  # DW_AT_name
40	.byte	5                       # DW_AT_encoding
41	.byte	4                       # DW_AT_byte_size
42	.byte	0                       # End Of Children Mark
43.Ldebug_info_dwo_end0:
44	.section	.debug_abbrev.dwo,"e",@progbits
45	.byte	1                       # Abbreviation Code
46	.byte	17                      # DW_TAG_compile_unit
47	.byte	1                       # DW_CHILDREN_yes
48	.byte	37                      # DW_AT_producer
49	.byte	8                       # DW_FORM_string
50	.byte	19                      # DW_AT_language
51	.byte	5                       # DW_FORM_data2
52	.byte	3                       # DW_AT_name
53	.byte	8                       # DW_FORM_string
54	.byte	118                     # DW_AT_dwo_name
55	.byte	8                       # DW_FORM_string
56	.byte	0                       # EOM(1)
57	.byte	0                       # EOM(2)
58	.byte	2                       # Abbreviation Code
59	.byte	52                      # DW_TAG_variable
60	.byte	0                       # DW_CHILDREN_no
61	.byte	3                       # DW_AT_name
62	.byte	8                       # DW_FORM_string
63	.byte	73                      # DW_AT_type
64	.byte	19                      # DW_FORM_ref4
65	.byte	63                      # DW_AT_external
66	.byte	25                      # DW_FORM_flag_present
67	.byte	58                      # DW_AT_decl_file
68	.byte	11                      # DW_FORM_data1
69	.byte	59                      # DW_AT_decl_line
70	.byte	11                      # DW_FORM_data1
71	.byte	2                       # DW_AT_location
72	.byte	24                      # DW_FORM_exprloc
73	.byte	0                       # EOM(1)
74	.byte	0                       # EOM(2)
75	.byte	3                       # Abbreviation Code
76	.byte	36                      # DW_TAG_base_type
77	.byte	0                       # DW_CHILDREN_no
78	.byte	3                       # DW_AT_name
79	.byte	8                       # DW_FORM_string
80	.byte	62                      # DW_AT_encoding
81	.byte	11                      # DW_FORM_data1
82	.byte	11                      # DW_AT_byte_size
83	.byte	11                      # DW_FORM_data1
84	.byte	0                       # EOM(1)
85	.byte	0                       # EOM(2)
86	.byte	0                       # EOM(3)
87