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