xref: /llvm-project/lld/test/wasm/debuginfo.test (revision 81378f7e56d960eec20909f1cac6e71bb5553e04)
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_frame_base
18CHECK-NEXT:                DW_AT_name	("test")
19CHECK-NEXT:                DW_AT_decl_file	("/Users/yury/llvmwasm{{(/|\\)}}hi.c")
20CHECK-NEXT:                DW_AT_decl_line	(3)
21CHECK-NEXT:                DW_AT_prototyped	(true)
22
23CHECK:     DW_TAG_formal_parameter
24CHECK-NEXT:                  DW_AT_location (DW_OP_WASM_location 0x0 0x0, DW_OP_stack_value)
25CHECK-NEXT:                  DW_AT_name	("t")
26CHECK-NEXT:                  DW_AT_decl_file	("/Users/yury/llvmwasm{{(/|\\)}}hi.c")
27CHECK-NEXT:                  DW_AT_decl_line	(3)
28
29CHECK:   DW_TAG_subprogram
30CHECK-NEXT:                DW_AT_low_pc
31CHECK-NEXT:                DW_AT_high_pc
32CHECK-NEXT:                DW_AT_frame_base
33CHECK-NEXT:                DW_AT_name	("_start")
34CHECK-NEXT:                DW_AT_decl_file	("/Users/yury/llvmwasm{{(/|\\)}}hi.c")
35CHECK-NEXT:                DW_AT_decl_line	(7)
36
37CHECK:   DW_TAG_base_type
38CHECK-NEXT:                DW_AT_name	("int")
39CHECK-NEXT:                DW_AT_encoding	(DW_ATE_signed)
40CHECK-NEXT:                DW_AT_byte_size	(0x04)
41
42CHECK: DW_TAG_compile_unit
43CHECK-NEXT:              DW_AT_producer	("clang version 7.0.0 (trunk {{.*}})")
44CHECK-NEXT:              DW_AT_language	(DW_LANG_C99)
45CHECK-NEXT:              DW_AT_name	("hi_foo.c")
46
47CHECK:   DW_TAG_variable
48CHECK-NEXT:                DW_AT_name	("y")
49CHECK-NEXT:                DW_AT_type	(0x000000ac "int[2]")
50CHECK-NEXT:                DW_AT_external	(true)
51CHECK-NEXT:                DW_AT_decl_file	("{{.*}}hi_foo.c")
52CHECK-NEXT:                DW_AT_decl_line	(1)
53CHECK:                     DW_AT_location	(DW_OP_addr 0x400)
54
55CHECK:   DW_TAG_array_type
56
57CHECK:     DW_TAG_subrange_type
58
59CHECK:   DW_TAG_base_type
60CHECK-NEXT:                DW_AT_name	("int")
61CHECK-NEXT:                DW_AT_encoding	(DW_ATE_signed)
62CHECK-NEXT:                DW_AT_byte_size	(0x04)
63
64CHECK:   DW_TAG_base_type
65CHECK-NEXT:                DW_AT_name	("__ARRAY_SIZE_TYPE__")
66CHECK-NEXT:                DW_AT_byte_size	(0x08)
67CHECK-NEXT:                DW_AT_encoding	(DW_ATE_unsigned)
68
69CHECK:   DW_TAG_variable
70CHECK-NEXT:                DW_AT_name	("z")
71CHECK-NEXT:                DW_AT_type	(0x000000ac "int[2]")
72CHECK-NEXT:                DW_AT_external	(true)
73CHECK-NEXT:                DW_AT_decl_file	("{{.*}}hi_foo.c")
74CHECK-NEXT:                DW_AT_decl_line	(8)
75CHECK-NEXT:                DW_AT_location	(DW_OP_addr 0xffffffff)
76
77CHECK:   DW_TAG_subprogram
78CHECK-NEXT:                DW_AT_low_pc
79CHECK-NEXT:                DW_AT_high_pc
80CHECK-NEXT:                DW_AT_frame_base
81CHECK-NEXT:                DW_AT_name	("foo")
82CHECK-NEXT:                DW_AT_decl_file	("{{.*}}hi_foo.c")
83CHECK-NEXT:                DW_AT_decl_line	(3)
84
85CHECK:     DW_TAG_formal_parameter
86CHECK-NEXT:                  DW_AT_location (DW_OP_WASM_location 0x0 0x0, DW_OP_stack_value)
87CHECK-NEXT:                  DW_AT_name	("p")
88CHECK-NEXT:                  DW_AT_decl_file	("{{.*}}hi_foo.c")
89CHECK-NEXT:                  DW_AT_decl_line	(3)
90
91