# RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -filetype=obj -o %t.o %s # RUN: llvm-jitlink -num-threads=0 -debug-only=orc -noexec -debugger-support \ # RUN: %t.o 2>&1 \ # RUN: | FileCheck %s # # REQUIRES: asserts && system-darwin # # Test that source file names can be indentified from DWARF line tables. # CHECK: Using FileName = "check-dwarf-filename.c" from DWARF line table .section __TEXT,__text,regular,pure_instructions .build_version macos, 15, 0 sdk_version 15, 0 .globl _main ## -- Begin function main .p2align 4, 0x90 _main: ## @main Lfunc_begin0: .file 0 "/Users/lhames/Projects/scratch" "check-dwarf-filename.c" md5 0x331a6c7ae0cfcd2896eca60ac6f5703e .loc 0 1 0 ## check-dwarf-filename.c:1:0 .cfi_startproc ## %bb.0: ##DEBUG_VALUE: main:argc <- $edi ##DEBUG_VALUE: main:argv <- $rsi pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset %rbp, -16 movq %rsp, %rbp .cfi_def_cfa_register %rbp Ltmp0: .loc 0 2 3 prologue_end ## check-dwarf-filename.c:2:3 xorl %eax, %eax .loc 0 2 3 epilogue_begin is_stmt 0 ## check-dwarf-filename.c:2:3 popq %rbp retq Ltmp1: Lfunc_end0: .cfi_endproc ## -- End function .section __DWARF,__debug_abbrev,regular,debug Lsection_abbrev: .byte 1 ## Abbreviation Code .byte 17 ## DW_TAG_compile_unit .byte 1 ## DW_CHILDREN_yes .byte 37 ## DW_AT_producer .byte 37 ## DW_FORM_strx1 .byte 19 ## DW_AT_language .byte 5 ## DW_FORM_data2 .byte 3 ## DW_AT_name .byte 37 ## DW_FORM_strx1 .ascii "\202|" ## DW_AT_LLVM_sysroot .byte 37 ## DW_FORM_strx1 .ascii "\357\177" ## DW_AT_APPLE_sdk .byte 37 ## DW_FORM_strx1 .byte 114 ## DW_AT_str_offsets_base .byte 23 ## DW_FORM_sec_offset .byte 16 ## DW_AT_stmt_list .byte 23 ## DW_FORM_sec_offset .byte 27 ## DW_AT_comp_dir .byte 37 ## DW_FORM_strx1 .ascii "\341\177" ## DW_AT_APPLE_optimized .byte 25 ## DW_FORM_flag_present .byte 17 ## DW_AT_low_pc .byte 27 ## DW_FORM_addrx .byte 18 ## DW_AT_high_pc .byte 6 ## DW_FORM_data4 .byte 115 ## DW_AT_addr_base .byte 23 ## DW_FORM_sec_offset .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 2 ## Abbreviation Code .byte 46 ## DW_TAG_subprogram .byte 1 ## DW_CHILDREN_yes .byte 17 ## DW_AT_low_pc .byte 27 ## DW_FORM_addrx .byte 18 ## DW_AT_high_pc .byte 6 ## DW_FORM_data4 .byte 64 ## DW_AT_frame_base .byte 24 ## DW_FORM_exprloc .byte 122 ## DW_AT_call_all_calls .byte 25 ## DW_FORM_flag_present .byte 3 ## DW_AT_name .byte 37 ## DW_FORM_strx1 .byte 58 ## DW_AT_decl_file .byte 11 ## DW_FORM_data1 .byte 59 ## DW_AT_decl_line .byte 11 ## DW_FORM_data1 .byte 39 ## DW_AT_prototyped .byte 25 ## DW_FORM_flag_present .byte 73 ## DW_AT_type .byte 19 ## DW_FORM_ref4 .byte 63 ## DW_AT_external .byte 25 ## DW_FORM_flag_present .ascii "\341\177" ## DW_AT_APPLE_optimized .byte 25 ## DW_FORM_flag_present .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 3 ## Abbreviation Code .byte 5 ## DW_TAG_formal_parameter .byte 0 ## DW_CHILDREN_no .byte 2 ## DW_AT_location .byte 24 ## DW_FORM_exprloc .byte 3 ## DW_AT_name .byte 37 ## DW_FORM_strx1 .byte 58 ## DW_AT_decl_file .byte 11 ## DW_FORM_data1 .byte 59 ## DW_AT_decl_line .byte 11 ## DW_FORM_data1 .byte 73 ## DW_AT_type .byte 19 ## DW_FORM_ref4 .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 4 ## Abbreviation Code .byte 36 ## DW_TAG_base_type .byte 0 ## DW_CHILDREN_no .byte 3 ## DW_AT_name .byte 37 ## DW_FORM_strx1 .byte 62 ## DW_AT_encoding .byte 11 ## DW_FORM_data1 .byte 11 ## DW_AT_byte_size .byte 11 ## DW_FORM_data1 .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 5 ## Abbreviation Code .byte 15 ## DW_TAG_pointer_type .byte 0 ## DW_CHILDREN_no .byte 73 ## DW_AT_type .byte 19 ## DW_FORM_ref4 .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 0 ## EOM(3) .section __DWARF,__debug_info,regular,debug Lsection_info: Lcu_begin0: .set Lset0, Ldebug_info_end0-Ldebug_info_start0 ## Length of Unit .long Lset0 Ldebug_info_start0: .short 5 ## DWARF version number .byte 1 ## DWARF Unit Type .byte 8 ## Address Size (in bytes) .set Lset1, Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section .long Lset1 .byte 1 ## Abbrev [1] 0xc:0x50 DW_TAG_compile_unit .byte 0 ## DW_AT_producer .short 29 ## DW_AT_language .byte 1 ## DW_AT_name .byte 2 ## DW_AT_LLVM_sysroot .byte 3 ## DW_AT_APPLE_sdk .set Lset2, Lstr_offsets_base0-Lsection_str_off ## DW_AT_str_offsets_base .long Lset2 .set Lset3, Lline_table_start0-Lsection_line ## DW_AT_stmt_list .long Lset3 .byte 4 ## DW_AT_comp_dir ## DW_AT_APPLE_optimized .byte 0 ## DW_AT_low_pc .set Lset4, Lfunc_end0-Lfunc_begin0 ## DW_AT_high_pc .long Lset4 .set Lset5, Laddr_table_base0-Lsection_info0 ## DW_AT_addr_base .long Lset5 .byte 2 ## Abbrev [2] 0x25:0x24 DW_TAG_subprogram .byte 0 ## DW_AT_low_pc .set Lset6, Lfunc_end0-Lfunc_begin0 ## DW_AT_high_pc .long Lset6 .byte 1 ## DW_AT_frame_base .byte 86 ## DW_AT_call_all_calls .byte 5 ## DW_AT_name .byte 0 ## DW_AT_decl_file .byte 1 ## DW_AT_decl_line ## DW_AT_prototyped .long 73 ## DW_AT_type ## DW_AT_external ## DW_AT_APPLE_optimized .byte 3 ## Abbrev [3] 0x34:0xa DW_TAG_formal_parameter .byte 1 ## DW_AT_location .byte 85 .byte 7 ## DW_AT_name .byte 0 ## DW_AT_decl_file .byte 1 ## DW_AT_decl_line .long 73 ## DW_AT_type .byte 3 ## Abbrev [3] 0x3e:0xa DW_TAG_formal_parameter .byte 1 ## DW_AT_location .byte 84 .byte 8 ## DW_AT_name .byte 0 ## DW_AT_decl_file .byte 1 ## DW_AT_decl_line .long 77 ## DW_AT_type .byte 0 ## End Of Children Mark .byte 4 ## Abbrev [4] 0x49:0x4 DW_TAG_base_type .byte 6 ## DW_AT_name .byte 5 ## DW_AT_encoding .byte 4 ## DW_AT_byte_size .byte 5 ## Abbrev [5] 0x4d:0x5 DW_TAG_pointer_type .long 82 ## DW_AT_type .byte 5 ## Abbrev [5] 0x52:0x5 DW_TAG_pointer_type .long 87 ## DW_AT_type .byte 4 ## Abbrev [4] 0x57:0x4 DW_TAG_base_type .byte 9 ## DW_AT_name .byte 6 ## DW_AT_encoding .byte 1 ## DW_AT_byte_size .byte 0 ## End Of Children Mark Ldebug_info_end0: .section __DWARF,__debug_str_offs,regular,debug Lsection_str_off: .long 44 ## Length of String Offsets Set .short 5 .short 0 Lstr_offsets_base0: .section __DWARF,__debug_str,regular,debug Linfo_string: .asciz "Apple clang version 16.0.0 (clang-1600.0.26.3)" ## string offset=0 .asciz "check-dwarf-filename.c" ## string offset=47 .asciz "/Library/Developer/CommandLineTools/SDKs/MacOSX15.0.sdk" ## string offset=70 .asciz "MacOSX15.0.sdk" ## string offset=126 .asciz "/Users/lhames/Projects/scratch" ## string offset=141 .asciz "main" ## string offset=172 .asciz "int" ## string offset=177 .asciz "argc" ## string offset=181 .asciz "argv" ## string offset=186 .asciz "char" ## string offset=191 .section __DWARF,__debug_str_offs,regular,debug .long 0 .long 47 .long 70 .long 126 .long 141 .long 172 .long 177 .long 181 .long 186 .long 191 .section __DWARF,__debug_addr,regular,debug Lsection_info0: .set Lset7, Ldebug_addr_end0-Ldebug_addr_start0 ## Length of contribution .long Lset7 Ldebug_addr_start0: .short 5 ## DWARF version number .byte 8 ## Address size .byte 0 ## Segment selector size Laddr_table_base0: .quad Lfunc_begin0 Ldebug_addr_end0: .section __DWARF,__debug_names,regular,debug Ldebug_names_begin: .set Lset8, Lnames_end0-Lnames_start0 ## Header: unit length .long Lset8 Lnames_start0: .short 5 ## Header: version .short 0 ## Header: padding .long 1 ## Header: compilation unit count .long 0 ## Header: local type unit count .long 0 ## Header: foreign type unit count .long 3 ## Header: bucket count .long 3 ## Header: name count .set Lset9, Lnames_abbrev_end0-Lnames_abbrev_start0 ## Header: abbreviation table size .long Lset9 .long 8 ## Header: augmentation string size .ascii "LLVM0700" ## Header: augmentation string .set Lset10, Lcu_begin0-Lsection_info ## Compilation unit 0 .long Lset10 .long 0 ## Bucket 0 .long 1 ## Bucket 1 .long 2 ## Bucket 2 .long 2090499946 ## Hash in Bucket 1 .long 193495088 ## Hash in Bucket 2 .long 2090147939 ## Hash in Bucket 2 .long 172 ## String in Bucket 1: main .long 177 ## String in Bucket 2: int .long 191 ## String in Bucket 2: char .set Lset11, Lnames0-Lnames_entries0 ## Offset in Bucket 1 .long Lset11 .set Lset12, Lnames1-Lnames_entries0 ## Offset in Bucket 2 .long Lset12 .set Lset13, Lnames2-Lnames_entries0 ## Offset in Bucket 2 .long Lset13 Lnames_abbrev_start0: .ascii "\230." ## Abbrev code .byte 46 ## DW_TAG_subprogram .byte 3 ## DW_IDX_die_offset .byte 19 ## DW_FORM_ref4 .byte 4 ## DW_IDX_parent .byte 25 ## DW_FORM_flag_present .byte 0 ## End of abbrev .byte 0 ## End of abbrev .ascii "\230$" ## Abbrev code .byte 36 ## DW_TAG_base_type .byte 3 ## DW_IDX_die_offset .byte 19 ## DW_FORM_ref4 .byte 4 ## DW_IDX_parent .byte 25 ## DW_FORM_flag_present .byte 0 ## End of abbrev .byte 0 ## End of abbrev .byte 0 ## End of abbrev list Lnames_abbrev_end0: Lnames_entries0: Lnames0: L1: .ascii "\230." ## Abbreviation code .long 37 ## DW_IDX_die_offset .byte 0 ## DW_IDX_parent ## End of list: main Lnames1: L0: .ascii "\230$" ## Abbreviation code .long 73 ## DW_IDX_die_offset .byte 0 ## DW_IDX_parent ## End of list: int Lnames2: L2: .ascii "\230$" ## Abbreviation code .long 87 ## DW_IDX_die_offset .byte 0 ## DW_IDX_parent ## End of list: char .p2align 2, 0x0 Lnames_end0: .subsections_via_symbols .section __DWARF,__debug_line,regular,debug Lsection_line: Lline_table_start0: