diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugArangeSet.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugArangeSet.cpp --- a/llvm/lib/DebugInfo/DWARF/DWARFDebugArangeSet.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDebugArangeSet.cpp @@ -90,10 +90,10 @@ if (arangeDescriptor.Address || arangeDescriptor.Length) ArangeDescriptors.push_back(arangeDescriptor); else - break; // We are done if we get a zero address and length + return true; // We are done if we get a zero address and length } - return !ArangeDescriptors.empty(); + return false; // No termination tuple is found. } return false; } diff --git a/llvm/test/DebugInfo/X86/dwarfdump-debug-aranges.s b/llvm/test/DebugInfo/X86/dwarfdump-debug-aranges.s new file mode 100644 --- /dev/null +++ b/llvm/test/DebugInfo/X86/dwarfdump-debug-aranges.s @@ -0,0 +1,24 @@ +# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o - | \ +# RUN: llvm-dwarfdump -debug-aranges - 2>&1 | \ +# RUN: FileCheck %s + + .section .debug_aranges,"",@progbits +# CHECK: .debug_aranges contents: + +## Check that an empty set of ranges is supported. + .long .L1end - .L1version # Length +# CHECK: Address Range Header: length = 0x00000014, +.L1version: + .short 2 # Version + .long 0x3456789a # Debug Info Offset + .byte 4 # Address Size + .byte 0 # Segment Selector Size +# CHECK-SAME: version = 0x0002, +# CHECK-SAME: cu_offset = 0x3456789a, +# CHECK-SAME: addr_size = 0x04, +# CHECK-SAME: seg_size = 0x00 + .space 4 # Padding +.L1tuples: + .long 0, 0 # Termination tuple +# CHECK-NOT: [0x +.L1end: