# This test verifies that an empty range list in the .debug_ranges section # doesn't crash dsymutil. As clang does not produce this kind of debug # info anymore, we used this hand-crafted assembly file to produce a testcase # Compile with: # llvm-mc -triple x86_64-apple-darwin -filetype=obj -o 1.o empty_range.o # RUN: dsymutil -f -y %p/dummy-debug-map.map -oso-prepend-path %p/../Inputs/empty_range -o - | llvm-dwarfdump -debug-info - | FileCheck %s .section __TEXT,__text,regular,pure_instructions .macosx_version_min 10, 11 .globl __Z3foov .align 4, 0x90 __Z3foov: ## @_Z3foov Lfunc_begin0: pushq %rbp movq %rsp, %rbp popq %rbp retq Lfunc_end0: .section __DWARF,__debug_abbrev,regular,debug Lsection_abbrev: .byte 1 ## Abbreviation Code .byte 17 ## DW_TAG_compile_unit .byte 1 ## DW_CHILDREN_yes .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 2 ## Abbreviation Code .byte 46 ## DW_TAG_subprogram .byte 0 ## DW_CHILDREN_no .byte 17 ## DW_AT_low_pc .byte 1 ## DW_FORM_addr .byte 0x55 ## DW_AT_ranges .byte 6 ## DW_FORM_data4 .byte 0 ## EOM(1) .byte 0 ## EOM(2) .byte 0 ## EOM(3) .section __DWARF,__debug_info,regular,debug Lsection_info: .long 22 ## Length of Unit .short 2 ## DWARF version number .long 0 ## Offset Into Abbrev. Section .byte 8 ## Address Size (in bytes) .byte 1 ## Abbrev [1] DW_TAG_compile_unit .byte 2 ## Abbrev [2] DW_TAG_subprogram .quad Lfunc_begin0 ## DW_AT_low_pc .long 0 ## DW_AT_ranges (pointing at an empty entry) .byte 0 ## End Of Children Mark .section __DWARF,__debug_ranges,regular,debug Ldebug_range: .long 0 .long 0 # CHECK: DW_TAG_compile_unit # CHECK: DW_TAG_subprogram # CHECK-NEXT: DW_AT_low_pc{{.*}}(0x0000000000010000) # CHECK-NEXT: DW_AT_ranges{{.*}}(0x00000000) # There was a bug that would use the currently active object file when a # debug map object isn't found. Check that we only linked one file. # CHECK-NOT: DW_TAG_compile_unit