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