(module (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "memory" (memory $mimport$0 256 256)) (data (i32.const 1024) "\nvoid used(int x) {\n x++;\n x--;\n return x;\n}\n\nvoid unused(int x) {\n x >>= 1;\n x <<= 1;\n return x;\n}\n\nint main() {\n return used(42);\n}\n\00") (data (i32.const 1168) "\00\04\00\00") (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) (global $global$0 (mut i32) (i32.const 5244064)) (global $global$1 i32 (i32.const 1172)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) (export "__data_end" (global $global$1)) (func $__wasm_call_ctors ) (func $used\28int\29 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) ;; code offset: 0xe (local.set $1 ;; code offset: 0x8 (global.get $global$0) ) ;; code offset: 0x12 (local.set $2 ;; code offset: 0x10 (i32.const 16) ) ;; code offset: 0x19 (local.set $3 ;; code offset: 0x18 (i32.sub ;; code offset: 0x14 (local.get $1) ;; code offset: 0x16 (local.get $2) ) ) ;; code offset: 0x1f (i32.store offset=12 ;; code offset: 0x1b (local.get $3) ;; code offset: 0x1d (local.get $0) ) ;; code offset: 0x27 (local.set $4 ;; code offset: 0x24 (i32.load offset=12 ;; code offset: 0x22 (local.get $3) ) ) ;; code offset: 0x2b (local.set $5 ;; code offset: 0x29 (i32.const 1) ) ;; code offset: 0x32 (local.set $6 ;; code offset: 0x31 (i32.add ;; code offset: 0x2d (local.get $4) ;; code offset: 0x2f (local.get $5) ) ) ;; code offset: 0x38 (i32.store offset=12 ;; code offset: 0x34 (local.get $3) ;; code offset: 0x36 (local.get $6) ) ;; code offset: 0x40 (local.set $7 ;; code offset: 0x3d (i32.load offset=12 ;; code offset: 0x3b (local.get $3) ) ) ;; code offset: 0x44 (local.set $8 ;; code offset: 0x42 (i32.const -1) ) ;; code offset: 0x4b (local.set $9 ;; code offset: 0x4a (i32.add ;; code offset: 0x46 (local.get $7) ;; code offset: 0x48 (local.get $8) ) ) ;; code offset: 0x51 (i32.store offset=12 ;; code offset: 0x4d (local.get $3) ;; code offset: 0x4f (local.get $9) ) ;; code offset: 0x59 (local.set $10 ;; code offset: 0x56 (i32.load offset=12 ;; code offset: 0x54 (local.get $3) ) ) ;; code offset: 0x5d (return ;; code offset: 0x5b (local.get $10) ) ) (func $__original_main (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) ;; code offset: 0x69 (local.set $0 ;; code offset: 0x63 (global.get $global$0) ) ;; code offset: 0x6d (local.set $1 ;; code offset: 0x6b (i32.const 16) ) ;; code offset: 0x74 (local.set $2 ;; code offset: 0x73 (i32.sub ;; code offset: 0x6f (local.get $0) ;; code offset: 0x71 (local.get $1) ) ) ;; code offset: 0x78 (global.set $global$0 ;; code offset: 0x76 (local.get $2) ) ;; code offset: 0x80 (local.set $3 ;; code offset: 0x7e (i32.const 42) ) ;; code offset: 0x84 (local.set $4 ;; code offset: 0x82 (i32.const 0) ) ;; code offset: 0x8a (i32.store offset=12 ;; code offset: 0x86 (local.get $2) ;; code offset: 0x88 (local.get $4) ) ;; code offset: 0x95 (local.set $5 ;; code offset: 0x8f (call $used\28int\29 ;; code offset: 0x8d (local.get $3) ) ) ;; code offset: 0x99 (local.set $6 ;; code offset: 0x97 (i32.const 0) ) ;; code offset: 0xa4 (local.set $7 ;; code offset: 0x9d (i32.load offset=1168 ;; code offset: 0x9b (local.get $6) ) ) ;; code offset: 0xab (local.set $8 ;; code offset: 0xaa (i32.add ;; code offset: 0xa6 (local.get $5) ;; code offset: 0xa8 (local.get $7) ) ) ;; code offset: 0xaf (local.set $9 ;; code offset: 0xad (i32.const 16) ) ;; code offset: 0xb6 (local.set $10 ;; code offset: 0xb5 (i32.add ;; code offset: 0xb1 (local.get $2) ;; code offset: 0xb3 (local.get $9) ) ) ;; code offset: 0xba (global.set $global$0 ;; code offset: 0xb8 (local.get $10) ) ;; code offset: 0xc2 (return ;; code offset: 0xc0 (local.get $8) ) ) (func $main (param $0 i32) (param $1 i32) (result i32) (local $2 i32) ;; code offset: 0xce (local.set $2 ;; code offset: 0xc8 (call $__original_main) ) ;; code offset: 0xd2 (return ;; code offset: 0xd0 (local.get $2) ) ) ;; custom section ".debug_info", size 175 ;; custom section ".debug_ranges", size 32 ;; custom section ".debug_abbrev", size 117 ;; custom section ".debug_line", size 128 ;; custom section ".debug_str", size 235 ;; custom section "producers", size 180 ) DWARF debug info ================ Contains section .debug_info (175 bytes) Contains section .debug_ranges (32 bytes) Contains section .debug_abbrev (117 bytes) Contains section .debug_line (128 bytes) Contains section .debug_str (235 bytes) .debug_abbrev contents: Abbrev table for offset: 0x00000000 [1] DW_TAG_compile_unit DW_CHILDREN_yes DW_AT_producer DW_FORM_strp DW_AT_language DW_FORM_data2 DW_AT_name DW_FORM_strp DW_AT_stmt_list DW_FORM_sec_offset DW_AT_comp_dir DW_FORM_strp DW_AT_low_pc DW_FORM_addr DW_AT_ranges DW_FORM_sec_offset [2] DW_TAG_variable DW_CHILDREN_no DW_AT_name DW_FORM_strp DW_AT_type DW_FORM_ref4 DW_AT_external DW_FORM_flag_present DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_location DW_FORM_exprloc [3] DW_TAG_pointer_type DW_CHILDREN_no DW_AT_type DW_FORM_ref4 [4] DW_TAG_const_type DW_CHILDREN_no DW_AT_type DW_FORM_ref4 [5] DW_TAG_base_type DW_CHILDREN_no DW_AT_name DW_FORM_strp DW_AT_encoding DW_FORM_data1 DW_AT_byte_size DW_FORM_data1 [6] DW_TAG_subprogram DW_CHILDREN_yes DW_AT_low_pc DW_FORM_addr DW_AT_high_pc DW_FORM_data4 DW_AT_linkage_name DW_FORM_strp DW_AT_name DW_FORM_strp DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_type DW_FORM_ref4 DW_AT_external DW_FORM_flag_present [7] DW_TAG_formal_parameter DW_CHILDREN_no DW_AT_location DW_FORM_exprloc DW_AT_name DW_FORM_strp DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_type DW_FORM_ref4 [8] DW_TAG_subprogram DW_CHILDREN_no DW_AT_low_pc DW_FORM_addr DW_AT_high_pc DW_FORM_data4 DW_AT_name DW_FORM_strp DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_type DW_FORM_ref4 DW_AT_external DW_FORM_flag_present .debug_info contents: 0x00000000: Compile Unit: length = 0x000000ab version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000af) 0x0000000b: DW_TAG_compile_unit [1] * DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)") DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "a.cpp") DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000009b] = "/home/alon/Dev/emscripten") DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 [0x00000005, 0x0000005f)) 0x00000026: DW_TAG_variable [2] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b5] = "quine") DW_AT_type [DW_FORM_ref4] (cu + 0x0037 => {0x00000037} "const char*") DW_AT_external [DW_FORM_flag_present] (true) DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (2) DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x490) 0x00000037: DW_TAG_pointer_type [3] DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x0000003c} "const char") 0x0000003c: DW_TAG_const_type [4] DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000041} "char") 0x00000041: DW_TAG_base_type [5] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bb] = "char") DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) DW_AT_byte_size [DW_FORM_data1] (0x01) 0x00000048: DW_TAG_base_type [5] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c0] = "int") DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) DW_AT_byte_size [DW_FORM_data1] (0x04) 0x0000004f: DW_TAG_subprogram [6] * DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) DW_AT_high_pc [DW_FORM_data4] (0x0000005a) DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "_Z4usedi") DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cd] = "used") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (4) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") DW_AT_external [DW_FORM_flag_present] (true) 0x00000066: DW_TAG_formal_parameter [7] DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (4) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") 0x00000074: NULL 0x00000075: DW_TAG_subprogram [6] * DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) DW_AT_high_pc [DW_FORM_data4] (0x0000005a) DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000d2] = "_Z6unusedi") DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dd] = "unused") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (10) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") DW_AT_external [DW_FORM_flag_present] (true) 0x0000008c: DW_TAG_formal_parameter [7] DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (10) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") 0x0000009a: NULL 0x0000009b: DW_TAG_subprogram [8] DW_AT_low_pc [DW_FORM_addr] (0x0000000000000060) DW_AT_high_pc [DW_FORM_data4] (0x00000064) DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e4] = "main") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (16) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") DW_AT_external [DW_FORM_flag_present] (true) 0x000000ae: NULL .debug_line contents: debug_line[0x00000000] Line table prologue: total_length: 0x0000007c version: 4 prologue_length: 0x0000001d min_inst_length: 1 max_ops_per_inst: 1 default_is_stmt: 1 line_base: -5 line_range: 14 opcode_base: 13 standard_opcode_lengths[DW_LNS_copy] = 0 standard_opcode_lengths[DW_LNS_advance_pc] = 1 standard_opcode_lengths[DW_LNS_advance_line] = 1 standard_opcode_lengths[DW_LNS_set_file] = 1 standard_opcode_lengths[DW_LNS_set_column] = 1 standard_opcode_lengths[DW_LNS_negate_stmt] = 0 standard_opcode_lengths[DW_LNS_set_basic_block] = 0 standard_opcode_lengths[DW_LNS_const_add_pc] = 0 standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 standard_opcode_lengths[DW_LNS_set_isa] = 1 file_names[ 1]: name: "a.cpp" dir_index: 0 mod_time: 0x00000000 length: 0x00000000 0x00000027: 00 DW_LNE_set_address (0x0000000000000005) 0x0000002e: 15 address += 0, line += 3 0x0000000000000005 4 0 1 0 0 is_stmt 0x0000002f: 05 DW_LNS_set_column (4) 0x00000031: 0a DW_LNS_set_prologue_end 0x00000032: 08 DW_LNS_const_add_pc (0x0000000000000011) 0x00000033: bb address += 12, line += 1 0x0000000000000022 5 4 1 0 0 is_stmt prologue_end 0x00000034: 08 DW_LNS_const_add_pc (0x0000000000000011) 0x00000035: 83 address += 8, line += 1 0x000000000000003b 6 4 1 0 0 is_stmt 0x00000036: 05 DW_LNS_set_column (10) 0x00000038: 08 DW_LNS_const_add_pc (0x0000000000000011) 0x00000039: 83 address += 8, line += 1 0x0000000000000054 7 10 1 0 0 is_stmt 0x0000003a: 05 DW_LNS_set_column (3) 0x0000003c: 06 DW_LNS_negate_stmt 0x0000003d: 74 address += 7, line += 0 0x000000000000005b 7 3 1 0 0 0x0000003e: 02 DW_LNS_advance_pc (4) 0x00000040: 00 DW_LNE_end_sequence 0x000000000000005f 7 3 1 0 0 end_sequence 0x00000043: 00 DW_LNE_set_address (0x0000000000000000) 0x0000004a: 03 DW_LNS_advance_line (10) 0x0000004c: 01 DW_LNS_copy 0x0000000000000000 10 0 1 0 0 is_stmt 0x0000004d: 05 DW_LNS_set_column (5) 0x0000004f: 0a DW_LNS_set_prologue_end 0x00000050: 08 DW_LNS_const_add_pc (0x0000000000000011) 0x00000051: bb address += 12, line += 1 0x000000000000001d 11 5 1 0 0 is_stmt prologue_end 0x00000052: 08 DW_LNS_const_add_pc (0x0000000000000011) 0x00000053: 83 address += 8, line += 1 0x0000000000000036 12 5 1 0 0 is_stmt 0x00000054: 05 DW_LNS_set_column (10) 0x00000056: 08 DW_LNS_const_add_pc (0x0000000000000011) 0x00000057: 83 address += 8, line += 1 0x000000000000004f 13 10 1 0 0 is_stmt 0x00000058: 05 DW_LNS_set_column (3) 0x0000005a: 06 DW_LNS_negate_stmt 0x0000005b: 74 address += 7, line += 0 0x0000000000000056 13 3 1 0 0 0x0000005c: 02 DW_LNS_advance_pc (4) 0x0000005e: 00 DW_LNE_end_sequence 0x000000000000005a 13 3 1 0 0 end_sequence 0x00000061: 00 DW_LNE_set_address (0x0000000000000060) 0x00000068: 03 DW_LNS_advance_line (16) 0x0000006a: 01 DW_LNS_copy 0x0000000000000060 16 0 1 0 0 is_stmt 0x0000006b: 05 DW_LNS_set_column (10) 0x0000006d: 0a DW_LNS_set_prologue_end 0x0000006e: 02 DW_LNS_advance_pc (45) 0x00000070: 13 address += 0, line += 1 0x000000000000008d 17 10 1 0 0 is_stmt prologue_end 0x00000071: 05 DW_LNS_set_column (25) 0x00000073: 06 DW_LNS_negate_stmt 0x00000074: 9e address += 10, line += 0 0x0000000000000097 17 25 1 0 0 0x00000075: 05 DW_LNS_set_column (19) 0x00000077: e4 address += 15, line += 0 0x00000000000000a6 17 19 1 0 0 0x00000078: 05 DW_LNS_set_column (3) 0x0000007a: 74 address += 7, line += 0 0x00000000000000ad 17 3 1 0 0 0x0000007b: 02 DW_LNS_advance_pc (23) 0x0000007d: 00 DW_LNE_end_sequence 0x00000000000000c4 17 3 1 0 0 end_sequence .debug_str contents: 0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)" 0x00000095: "a.cpp" 0x0000009b: "/home/alon/Dev/emscripten" 0x000000b5: "quine" 0x000000bb: "char" 0x000000c0: "int" 0x000000c4: "_Z4usedi" 0x000000cd: "used" 0x000000d2: "_Z6unusedi" 0x000000dd: "unused" 0x000000e4: "main" 0x000000e9: "x" .debug_ranges contents: 00000000 00000005 0000005f 00000000 00000010 00000060 000000c4 00000010 DWARF debug info ================ Contains section .debug_info (175 bytes) Contains section .debug_ranges (32 bytes) Contains section .debug_abbrev (117 bytes) Contains section .debug_line (169 bytes) Contains section .debug_str (235 bytes) .debug_abbrev contents: Abbrev table for offset: 0x00000000 [1] DW_TAG_compile_unit DW_CHILDREN_yes DW_AT_producer DW_FORM_strp DW_AT_language DW_FORM_data2 DW_AT_name DW_FORM_strp DW_AT_stmt_list DW_FORM_sec_offset DW_AT_comp_dir DW_FORM_strp DW_AT_low_pc DW_FORM_addr DW_AT_ranges DW_FORM_sec_offset [2] DW_TAG_variable DW_CHILDREN_no DW_AT_name DW_FORM_strp DW_AT_type DW_FORM_ref4 DW_AT_external DW_FORM_flag_present DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_location DW_FORM_exprloc [3] DW_TAG_pointer_type DW_CHILDREN_no DW_AT_type DW_FORM_ref4 [4] DW_TAG_const_type DW_CHILDREN_no DW_AT_type DW_FORM_ref4 [5] DW_TAG_base_type DW_CHILDREN_no DW_AT_name DW_FORM_strp DW_AT_encoding DW_FORM_data1 DW_AT_byte_size DW_FORM_data1 [6] DW_TAG_subprogram DW_CHILDREN_yes DW_AT_low_pc DW_FORM_addr DW_AT_high_pc DW_FORM_data4 DW_AT_linkage_name DW_FORM_strp DW_AT_name DW_FORM_strp DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_type DW_FORM_ref4 DW_AT_external DW_FORM_flag_present [7] DW_TAG_formal_parameter DW_CHILDREN_no DW_AT_location DW_FORM_exprloc DW_AT_name DW_FORM_strp DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_type DW_FORM_ref4 [8] DW_TAG_subprogram DW_CHILDREN_no DW_AT_low_pc DW_FORM_addr DW_AT_high_pc DW_FORM_data4 DW_AT_name DW_FORM_strp DW_AT_decl_file DW_FORM_data1 DW_AT_decl_line DW_FORM_data1 DW_AT_type DW_FORM_ref4 DW_AT_external DW_FORM_flag_present .debug_info contents: 0x00000000: Compile Unit: length = 0x000000ab version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000af) 0x0000000b: DW_TAG_compile_unit [1] * DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)") DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "a.cpp") DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000009b] = "/home/alon/Dev/emscripten") DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 [0x00000005, 0x0000006d)) 0x00000026: DW_TAG_variable [2] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b5] = "quine") DW_AT_type [DW_FORM_ref4] (cu + 0x0037 => {0x00000037} "const char*") DW_AT_external [DW_FORM_flag_present] (true) DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (2) DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x490) 0x00000037: DW_TAG_pointer_type [3] DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x0000003c} "const char") 0x0000003c: DW_TAG_const_type [4] DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000041} "char") 0x00000041: DW_TAG_base_type [5] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bb] = "char") DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) DW_AT_byte_size [DW_FORM_data1] (0x01) 0x00000048: DW_TAG_base_type [5] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c0] = "int") DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) DW_AT_byte_size [DW_FORM_data1] (0x04) 0x0000004f: DW_TAG_subprogram [6] * DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) DW_AT_high_pc [DW_FORM_data4] (0x00000068) DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "_Z4usedi") DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cd] = "used") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (4) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") DW_AT_external [DW_FORM_flag_present] (true) 0x00000066: DW_TAG_formal_parameter [7] DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (4) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") 0x00000074: NULL 0x00000075: DW_TAG_subprogram [6] * DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) DW_AT_high_pc [DW_FORM_data4] (0x00000000) DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000d2] = "_Z6unusedi") DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dd] = "unused") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (10) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") DW_AT_external [DW_FORM_flag_present] (true) 0x0000008c: DW_TAG_formal_parameter [7] DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (10) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") 0x0000009a: NULL 0x0000009b: DW_TAG_subprogram [8] DW_AT_low_pc [DW_FORM_addr] (0x000000000000006e) DW_AT_high_pc [DW_FORM_data4] (0x00000065) DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e4] = "main") DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") DW_AT_decl_line [DW_FORM_data1] (16) DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") DW_AT_external [DW_FORM_flag_present] (true) 0x000000ae: NULL .debug_line contents: debug_line[0x00000000] Line table prologue: total_length: 0x000000a5 version: 4 prologue_length: 0x0000001d min_inst_length: 1 max_ops_per_inst: 1 default_is_stmt: 1 line_base: -5 line_range: 14 opcode_base: 13 standard_opcode_lengths[DW_LNS_copy] = 0 standard_opcode_lengths[DW_LNS_advance_pc] = 1 standard_opcode_lengths[DW_LNS_advance_line] = 1 standard_opcode_lengths[DW_LNS_set_file] = 1 standard_opcode_lengths[DW_LNS_set_column] = 1 standard_opcode_lengths[DW_LNS_negate_stmt] = 0 standard_opcode_lengths[DW_LNS_set_basic_block] = 0 standard_opcode_lengths[DW_LNS_const_add_pc] = 0 standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 standard_opcode_lengths[DW_LNS_set_isa] = 1 file_names[ 1]: name: "a.cpp" dir_index: 0 mod_time: 0x00000000 length: 0x00000000 0x00000027: 00 DW_LNE_set_address (0x0000000000000005) 0x0000002e: 03 DW_LNS_advance_line (4) 0x00000030: 01 DW_LNS_copy 0x0000000000000005 4 0 1 0 0 is_stmt 0x00000031: 00 DW_LNE_set_address (0x0000000000000030) 0x00000038: 03 DW_LNS_advance_line (5) 0x0000003a: 05 DW_LNS_set_column (4) 0x0000003c: 0a DW_LNS_set_prologue_end 0x0000003d: 01 DW_LNS_copy 0x0000000000000030 5 4 1 0 0 is_stmt prologue_end 0x0000003e: 00 DW_LNE_set_address (0x0000000000000049) 0x00000045: 03 DW_LNS_advance_line (6) 0x00000047: 01 DW_LNS_copy 0x0000000000000049 6 4 1 0 0 is_stmt 0x00000048: 00 DW_LNE_set_address (0x0000000000000062) 0x0000004f: 03 DW_LNS_advance_line (7) 0x00000051: 05 DW_LNS_set_column (10) 0x00000053: 01 DW_LNS_copy 0x0000000000000062 7 10 1 0 0 is_stmt 0x00000054: 00 DW_LNE_set_address (0x0000000000000069) 0x0000005b: 05 DW_LNS_set_column (3) 0x0000005d: 06 DW_LNS_negate_stmt 0x0000005e: 01 DW_LNS_copy 0x0000000000000069 7 3 1 0 0 0x0000005f: 00 DW_LNE_set_address (0x000000000000006d) 0x00000066: 00 DW_LNE_end_sequence 0x000000000000006d 7 3 1 0 0 end_sequence 0x00000069: 00 DW_LNE_set_address (0x000000000000006e) 0x00000070: 03 DW_LNS_advance_line (16) 0x00000072: 01 DW_LNS_copy 0x000000000000006e 16 0 1 0 0 is_stmt 0x00000073: 00 DW_LNE_set_address (0x00000000000000a7) 0x0000007a: 03 DW_LNS_advance_line (17) 0x0000007c: 05 DW_LNS_set_column (10) 0x0000007e: 0a DW_LNS_set_prologue_end 0x0000007f: 01 DW_LNS_copy 0x00000000000000a7 17 10 1 0 0 is_stmt prologue_end 0x00000080: 00 DW_LNE_set_address (0x00000000000000ad) 0x00000087: 05 DW_LNS_set_column (25) 0x00000089: 06 DW_LNS_negate_stmt 0x0000008a: 01 DW_LNS_copy 0x00000000000000ad 17 25 1 0 0 0x0000008b: 00 DW_LNE_set_address (0x00000000000000b9) 0x00000092: 05 DW_LNS_set_column (19) 0x00000094: 01 DW_LNS_copy 0x00000000000000b9 17 19 1 0 0 0x00000095: 00 DW_LNE_set_address (0x00000000000000c0) 0x0000009c: 05 DW_LNS_set_column (3) 0x0000009e: 01 DW_LNS_copy 0x00000000000000c0 17 3 1 0 0 0x0000009f: 00 DW_LNE_set_address (0x00000000000000d3) 0x000000a6: 00 DW_LNE_end_sequence 0x00000000000000d3 17 3 1 0 0 end_sequence .debug_str contents: 0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)" 0x00000095: "a.cpp" 0x0000009b: "/home/alon/Dev/emscripten" 0x000000b5: "quine" 0x000000bb: "char" 0x000000c0: "int" 0x000000c4: "_Z4usedi" 0x000000cd: "used" 0x000000d2: "_Z6unusedi" 0x000000dd: "unused" 0x000000e4: "main" 0x000000e9: "x" .debug_ranges contents: 00000000 00000005 0000006d 00000000 00000010 0000006e 000000d3 00000010 (module (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "memory" (memory $mimport$0 256 256)) (data (i32.const 1024) "\nvoid used(int x) {\n x++;\n x--;\n return x;\n}\n\nvoid unused(int x) {\n x >>= 1;\n x <<= 1;\n return x;\n}\n\nint main() {\n return used(42);\n}\n\00") (data (i32.const 1168) "\00\04\00\00") (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) (global $global$0 (mut i32) (i32.const 5244064)) (global $global$1 i32 (i32.const 1172)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) (export "__data_end" (global $global$1)) (func $__wasm_call_ctors ) (func $used\28int\29 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) ;; code offset: 0x1c (local.set $1 ;; code offset: 0x1a (global.get $global$0) ) ;; code offset: 0x20 (local.set $2 ;; code offset: 0x1e (i32.const 16) ) ;; code offset: 0x27 (local.set $3 ;; code offset: 0x26 (i32.sub ;; code offset: 0x22 (local.get $1) ;; code offset: 0x24 (local.get $2) ) ) ;; code offset: 0x2d (i32.store offset=12 ;; code offset: 0x29 (local.get $3) ;; code offset: 0x2b (local.get $0) ) ;; code offset: 0x35 (local.set $4 ;; code offset: 0x32 (i32.load offset=12 ;; code offset: 0x30 (local.get $3) ) ) ;; code offset: 0x39 (local.set $5 ;; code offset: 0x37 (i32.const 1) ) ;; code offset: 0x40 (local.set $6 ;; code offset: 0x3f (i32.add ;; code offset: 0x3b (local.get $4) ;; code offset: 0x3d (local.get $5) ) ) ;; code offset: 0x46 (i32.store offset=12 ;; code offset: 0x42 (local.get $3) ;; code offset: 0x44 (local.get $6) ) ;; code offset: 0x4e (local.set $7 ;; code offset: 0x4b (i32.load offset=12 ;; code offset: 0x49 (local.get $3) ) ) ;; code offset: 0x52 (local.set $8 ;; code offset: 0x50 (i32.const -1) ) ;; code offset: 0x59 (local.set $9 ;; code offset: 0x58 (i32.add ;; code offset: 0x54 (local.get $7) ;; code offset: 0x56 (local.get $8) ) ) ;; code offset: 0x5f (i32.store offset=12 ;; code offset: 0x5b (local.get $3) ;; code offset: 0x5d (local.get $9) ) ;; code offset: 0x67 (local.set $10 ;; code offset: 0x64 (i32.load offset=12 ;; code offset: 0x62 (local.get $3) ) ) ;; code offset: 0x6b (return ;; code offset: 0x69 (local.get $10) ) ) (func $__original_main (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) ;; code offset: 0x87 (local.set $0 ;; code offset: 0x85 (global.get $global$0) ) ;; code offset: 0x8b (local.set $1 ;; code offset: 0x89 (i32.const 16) ) ;; code offset: 0x92 (local.set $2 ;; code offset: 0x91 (i32.sub ;; code offset: 0x8d (local.get $0) ;; code offset: 0x8f (local.get $1) ) ) ;; code offset: 0x96 (global.set $global$0 ;; code offset: 0x94 (local.get $2) ) ;; code offset: 0x9a (local.set $3 ;; code offset: 0x98 (i32.const 42) ) ;; code offset: 0x9e (local.set $4 ;; code offset: 0x9c (i32.const 0) ) ;; code offset: 0xa4 (i32.store offset=12 ;; code offset: 0xa0 (local.get $2) ;; code offset: 0xa2 (local.get $4) ) ;; code offset: 0xab (local.set $5 ;; code offset: 0xa9 (call $used\28int\29 ;; code offset: 0xa7 (local.get $3) ) ) ;; code offset: 0xaf (local.set $6 ;; code offset: 0xad (i32.const 0) ) ;; code offset: 0xb7 (local.set $7 ;; code offset: 0xb3 (i32.load offset=1168 ;; code offset: 0xb1 (local.get $6) ) ) ;; code offset: 0xbe (local.set $8 ;; code offset: 0xbd (i32.add ;; code offset: 0xb9 (local.get $5) ;; code offset: 0xbb (local.get $7) ) ) ;; code offset: 0xc2 (local.set $9 ;; code offset: 0xc0 (i32.const 16) ) ;; code offset: 0xc9 (local.set $10 ;; code offset: 0xc8 (i32.add ;; code offset: 0xc4 (local.get $2) ;; code offset: 0xc6 (local.get $9) ) ) ;; code offset: 0xcd (global.set $global$0 ;; code offset: 0xcb (local.get $10) ) ;; code offset: 0xd1 (return ;; code offset: 0xcf (local.get $8) ) ) (func $main (param $0 i32) (param $1 i32) (result i32) (local $2 i32) ;; code offset: 0xd9 (local.set $2 ;; code offset: 0xd7 (call $__original_main) ) ;; code offset: 0xdd (return ;; code offset: 0xdb (local.get $2) ) ) ;; custom section ".debug_info", size 175 ;; custom section ".debug_ranges", size 32 ;; custom section ".debug_abbrev", size 117 ;; custom section ".debug_line", size 169 ;; custom section ".debug_str", size 235 ;; custom section "producers", size 180 )