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