| # 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 | |