1RUN: llc -filetype=obj %p/Inputs/debuginfo1.ll -o %t.debuginfo1.o
2RUN: llc -filetype=obj %p/Inputs/debuginfo2.ll -o %t.debuginfo2.o
3RUN: wasm-ld -o %t.wasm %t.debuginfo1.o %t.debuginfo2.o
4RUN: llvm-dwarfdump %t.wasm | FileCheck %s
5
6CHECK: file format WASM
7
8CHECK: .debug_info contents:
9CHECK: DW_TAG_compile_unit
10CHECK-NEXT:              DW_AT_producer	("clang version 7.0.0 (trunk {{.*}})")
11CHECK-NEXT:              DW_AT_language	(DW_LANG_C99)
12CHECK-NEXT:              DW_AT_name	("hi.c")
13
14CHECK:   DW_TAG_subprogram
15CHECK-NEXT:                DW_AT_low_pc
16CHECK-NEXT:                DW_AT_high_pc
17CHECK-NEXT:                DW_AT_name	("test")
18CHECK-NEXT:                DW_AT_decl_file	("/Users/yury/llvmwasm{{(/|\\)}}hi.c")
19CHECK-NEXT:                DW_AT_decl_line	(3)
20CHECK-NEXT:                DW_AT_prototyped	(true)
21
22CHECK:     DW_TAG_formal_parameter
23CHECK-NEXT:                  DW_AT_name	("t")
24CHECK-NEXT:                  DW_AT_decl_file	("/Users/yury/llvmwasm{{(/|\\)}}hi.c")
25CHECK-NEXT:                  DW_AT_decl_line	(3)
26
27CHECK:   DW_TAG_subprogram
28CHECK-NEXT:                DW_AT_low_pc
29CHECK-NEXT:                DW_AT_high_pc
30CHECK-NEXT:                DW_AT_name	("_start")
31CHECK-NEXT:                DW_AT_decl_file	("/Users/yury/llvmwasm{{(/|\\)}}hi.c")
32CHECK-NEXT:                DW_AT_decl_line	(7)
33
34CHECK:   DW_TAG_base_type
35CHECK-NEXT:                DW_AT_name	("int")
36CHECK-NEXT:                DW_AT_encoding	(DW_ATE_signed)
37CHECK-NEXT:                DW_AT_byte_size	(0x04)
38
39CHECK: DW_TAG_compile_unit
40CHECK-NEXT:              DW_AT_producer	("clang version 7.0.0 (trunk {{.*}})")
41CHECK-NEXT:              DW_AT_language	(DW_LANG_C99)
42CHECK-NEXT:              DW_AT_name	("hi_foo.c")
43
44CHECK:   DW_TAG_variable
45CHECK-NEXT:                DW_AT_name	("y")
46CHECK-NEXT:                DW_AT_type	(0x00000097 "int[2]")
47CHECK-NEXT:                DW_AT_external	(true)
48CHECK-NEXT:                DW_AT_decl_file	("{{.*}}hi_foo.c")
49CHECK-NEXT:                DW_AT_decl_line	(1)
50CHECK:                     DW_AT_location	(DW_OP_addr 0x400)
51
52CHECK:   DW_TAG_array_type
53
54CHECK:     DW_TAG_subrange_type
55
56CHECK:   DW_TAG_base_type
57CHECK-NEXT:                DW_AT_name	("int")
58CHECK-NEXT:                DW_AT_encoding	(DW_ATE_signed)
59CHECK-NEXT:                DW_AT_byte_size	(0x04)
60
61CHECK:   DW_TAG_base_type
62CHECK-NEXT:                DW_AT_name	("__ARRAY_SIZE_TYPE__")
63CHECK-NEXT:                DW_AT_byte_size	(0x08)
64CHECK-NEXT:                DW_AT_encoding	(DW_ATE_unsigned)
65
66CHECK:   DW_TAG_variable
67CHECK-NEXT:                DW_AT_name	("z")
68CHECK-NEXT:                DW_AT_type	(0x00000097 "int[2]")
69CHECK-NEXT:                DW_AT_external	(true)
70CHECK-NEXT:                DW_AT_decl_file	("{{.*}}hi_foo.c")
71CHECK-NEXT:                DW_AT_decl_line	(8)
72CHECK-NEXT:                DW_AT_location	(DW_OP_addr 0x0)
73
74CHECK:   DW_TAG_subprogram
75CHECK-NEXT:                DW_AT_low_pc
76CHECK-NEXT:                DW_AT_high_pc
77CHECK-NEXT:                DW_AT_name	("foo")
78CHECK-NEXT:                DW_AT_decl_file	("{{.*}}hi_foo.c")
79CHECK-NEXT:                DW_AT_decl_line	(3)
80
81CHECK:     DW_TAG_formal_parameter
82CHECK-NEXT:                  DW_AT_name	("p")
83CHECK-NEXT:                  DW_AT_decl_file	("{{.*}}hi_foo.c")
84CHECK-NEXT:                  DW_AT_decl_line	(3)
85
86