void clear();
/// Parse prologue and all rows.
- bool parse(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr);
+ bool parse(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr,
+ raw_ostream *OS = nullptr);
using RowVector = std::vector<Row>;
using RowIter = RowVector::const_iterator;
isLittleEndian(), savedAddressByteSize);
DWARFDebugLine::LineTable LineTable;
uint32_t Offset = *StmtOffset;
- LineTable.parse(lineData, &Offset);
- LineTable.dump(OS);
+ // Verbose dumping is done during parsing and not on the intermediate
+ // representation.
+ if (DumpOpts.Verbose) {
+ LineTable.parse(lineData, &Offset, &OS);
+ } else {
+ LineTable.parse(lineData, &Offset);
+ LineTable.dump(OS);
+ }
}
}
}
}
bool DWARFDebugLine::LineTable::parse(const DWARFDataExtractor &DebugLineData,
- uint32_t *OffsetPtr) {
+ uint32_t *OffsetPtr, raw_ostream *OS) {
const uint32_t DebugLineOffset = *OffsetPtr;
clear();
return false;
}
+ if (OS)
+ Prologue.dump(*OS);
+
const uint32_t EndOffset =
DebugLineOffset + Prologue.TotalLength + Prologue.sizeofTotalLength();
ParsingState State(this);
while (*OffsetPtr < EndOffset) {
+ if (OS)
+ *OS << format("0x%08.08" PRIx32 ": ", *OffsetPtr);
+
uint8_t Opcode = DebugLineData.getU8(OffsetPtr);
+ if (OS)
+ *OS << format("%02.02" PRIx8 " ", Opcode);
+
if (Opcode == 0) {
// Extended Opcodes always start with a zero opcode followed by
// a uleb128 length so you can skip ones you don't know about
uint32_t ArgSize = Len - (*OffsetPtr - ExtOffset);
uint8_t SubOpcode = DebugLineData.getU8(OffsetPtr);
+ if (OS)
+ *OS << LNExtendedString(SubOpcode);
switch (SubOpcode) {
case DW_LNE_end_sequence:
// Set the end_sequence register of the state machine to true and
// of the sequence.
State.Row.EndSequence = true;
State.appendRowToMatrix(*OffsetPtr);
+ if (OS) {
+ *OS << "\n";
+ OS->indent(12);
+ State.Row.dump(*OS);
+ }
State.resetRowAndSequence();
break;
// that affect the address register add a delta to it. This instruction
// stores a relocatable value into it instead.
State.Row.Address = DebugLineData.getRelocatedAddress(OffsetPtr);
+ if (OS)
+ *OS << format(" (0x%16.16" PRIx64 ")", State.Row.Address);
break;
case DW_LNE_define_file:
FileEntry.ModTime = DebugLineData.getULEB128(OffsetPtr);
FileEntry.Length = DebugLineData.getULEB128(OffsetPtr);
Prologue.FileNames.push_back(FileEntry);
+ if (OS)
+ *OS << " (" << FileEntry.Name.str()
+ << ", dir=" << FileEntry.DirIdx << ", mod_time="
+ << format("(0x%16.16" PRIx64 ")", FileEntry.ModTime)
+ << ", length=" << FileEntry.Length << ")";
}
break;
case DW_LNE_set_discriminator:
State.Row.Discriminator = DebugLineData.getULEB128(OffsetPtr);
+ if (OS)
+ *OS << " (" << State.Row.Discriminator << ")";
break;
default:
break;
}
} else if (Opcode < Prologue.OpcodeBase) {
+ if (OS)
+ *OS << LNStandardString(Opcode);
switch (Opcode) {
// Standard Opcodes
case DW_LNS_copy:
// current values of the state-machine registers. Then set
// the basic_block register to false.
State.appendRowToMatrix(*OffsetPtr);
+ if (OS) {
+ *OS << "\n";
+ OS->indent(12);
+ State.Row.dump(*OS);
+ *OS << "\n";
+ }
break;
case DW_LNS_advance_pc:
// Takes a single unsigned LEB128 operand, multiplies it by the
// min_inst_length field of the prologue, and adds the
// result to the address register of the state machine.
- State.Row.Address +=
- DebugLineData.getULEB128(OffsetPtr) * Prologue.MinInstLength;
+ {
+ uint64_t AddrOffset =
+ DebugLineData.getULEB128(OffsetPtr) * Prologue.MinInstLength;
+ State.Row.Address += AddrOffset;
+ if (OS)
+ *OS << " (" << AddrOffset << ")";
+ }
break;
case DW_LNS_advance_line:
// Takes a single signed LEB128 operand and adds that value to
// the line register of the state machine.
State.Row.Line += DebugLineData.getSLEB128(OffsetPtr);
+ if (OS)
+ *OS << " (" << State.Row.Line << ")";
break;
case DW_LNS_set_file:
// Takes a single unsigned LEB128 operand and stores it in the file
// register of the state machine.
State.Row.File = DebugLineData.getULEB128(OffsetPtr);
+ if (OS)
+ *OS << " (" << State.Row.File << ")";
break;
case DW_LNS_set_column:
// Takes a single unsigned LEB128 operand and stores it in the
// column register of the state machine.
State.Row.Column = DebugLineData.getULEB128(OffsetPtr);
+ if (OS)
+ *OS << " (" << State.Row.Column << ")";
break;
case DW_LNS_negate_stmt:
uint64_t AddrOffset =
(AdjustOpcode / Prologue.LineRange) * Prologue.MinInstLength;
State.Row.Address += AddrOffset;
+ if (OS)
+ *OS
+ << format(" (0x%16.16" PRIx64 ")", AddrOffset);
}
break;
// judge when the computation of a special opcode overflows and
// requires the use of DW_LNS_advance_pc. Such assemblers, however,
// can use DW_LNS_fixed_advance_pc instead, sacrificing compression.
- State.Row.Address += DebugLineData.getU16(OffsetPtr);
+ {
+ uint16_t PCOffset = DebugLineData.getU16(OffsetPtr);
+ State.Row.Address += PCOffset;
+ if (OS)
+ *OS
+ << format(" (0x%16.16" PRIx64 ")", PCOffset);
+ }
break;
case DW_LNS_set_prologue_end:
// Takes a single unsigned LEB128 operand and stores it in the
// column register of the state machine.
State.Row.Isa = DebugLineData.getULEB128(OffsetPtr);
+ if (OS)
+ *OS << " (" << State.Row.Isa << ")";
break;
default:
{
assert(Opcode - 1U < Prologue.StandardOpcodeLengths.size());
uint8_t OpcodeLength = Prologue.StandardOpcodeLengths[Opcode - 1];
- for (uint8_t I = 0; I < OpcodeLength; ++I)
- DebugLineData.getULEB128(OffsetPtr);
+ for (uint8_t I = 0; I < OpcodeLength; ++I) {
+ uint64_t Value = DebugLineData.getULEB128(OffsetPtr);
+ if (OS)
+ *OS << format("Skipping ULEB128 value: 0x%16.16" PRIx64 ")\n",
+ Value);
+ }
}
break;
}
Prologue.LineBase + (AdjustOpcode % Prologue.LineRange);
State.Row.Line += LineOffset;
State.Row.Address += AddrOffset;
+
+ if (OS) {
+ *OS << "address += " << ((uint32_t)AdjustOpcode)
+ << ", line += " << LineOffset << "\n";
+ OS->indent(12);
+ State.Row.dump(*OS);
+ }
+
State.appendRowToMatrix(*OffsetPtr);
// Reset discriminator to 0.
State.Row.Discriminator = 0;
}
+ if(OS)
+ *OS << "\n";
}
if (!State.Sequence.Empty) {
; PR 19261
; RUN: %llc_dwarf -fast-isel=false -O0 -filetype=obj %s -o %t
-; RUN: llvm-dwarfdump -v %t | FileCheck %s
+; RUN: llvm-dwarfdump -a %t | FileCheck %s
; CHECK: {{0x[0-9a-f]+}} 1 0 1 0 0 is_stmt
; CHECK: {{0x[0-9a-f]+}} 2 0 1 0 0 is_stmt
-# RUN: llc -filetype=obj -o - %s | llvm-dwarfdump -v - | FileCheck %s
+# RUN: llc -filetype=obj -o - %s | llvm-dwarfdump -a - | FileCheck %s
#
# This testcase has an implicit def pseudo-iunstruction with a debug location.
#
# CHECK: .debug_info contents:
# CHECK: DW_TAG_subprogram
-# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
+# CHECK: DW_AT_low_pc (0x0000000000000000)
# CHECK-NOT: DW_TAG
# CHECK: DW_AT_specification {{.*}} "_ZN1C5m_fn3Ev"
# CHECK-NOT: DW_TAG
source_filename = "t.ll"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx"
-
+
%class.E = type { %class.D }
%class.D = type { %class.B }
%class.B = type { %class.A, %class.A }
%class.A = type { i8 }
%class.C = type <{ %class.E*, %class.B, [2 x i8] }>
-
+
@a = local_unnamed_addr global %class.E* null, align 4
-
+
define i32 @_ZN1C5m_fn3Ev(%class.C* nocapture) local_unnamed_addr align 2 !dbg !6 {
%2 = alloca %class.B, align 1
%3 = load %class.E*, %class.E** @a, align 4
%4 = icmp eq %class.E* %3, null
br i1 %4, label %10, label %5
-
+
; <label>:5: ; preds = %1
%6 = bitcast %class.C* %0 to %class.D**
%7 = load %class.D*, %class.D** %6, align 4
%8 = bitcast %class.D* %7 to i8*
%9 = load i8, i8* %8, align 1
br label %10
-
+
; <label>:10: ; preds = %5, %1
%11 = phi i8 [ %9, %5 ], [ undef, %1 ], !dbg !10
%12 = getelementptr inbounds %class.C, %class.C* %0, i32 0, i32 1, i32 0, i32 0
store i8 %11, i8* %12, align 1, !dbg !14
ret i32 undef
}
-
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5}
-
+
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "Apple LLVM version 8.1.0 (clang-802.0.30.3)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2)
!1 = !DIFile(filename: "test.ii", directory: "/")
!2 = !{}
regBankSelected: false
selected: false
tracksRegLiveness: true
-liveins:
+liveins:
- { reg: '%rdi' }
-frameInfo:
+frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
-#stack:
+#stack:
# - { id: 0, name: '<unnamed alloca>', offset: -16, size: 2, alignment: 8 }
body: |
bb.0 (%ir-block.1):
successors: %bb.1(0x30000000), %bb.2(0x50000000)
liveins: %rdi
-
+
CMP64mi8 %rip, 1, _, @a, _, 0, implicit-def %eflags :: (dereferenceable load 8 from @a, align 4)
JE_1 %bb.1, implicit %eflags
-
+
bb.2 (%ir-block.5):
liveins: %rdi
-
+
%rax = MOV64rm %rdi, 1, _, 0, _ :: (load 8 from %ir.6, align 4)
%al = MOV8rm killed %rax, 1, _, 0, _ :: (load 1 from %ir.8)
MOV8mr killed %rdi, 1, _, 8, _, killed %al, debug-location !14 :: (store 1 into %ir.12)
RETQ undef %eax
-
+
bb.1:
liveins: %rdi
-
+
%al = IMPLICIT_DEF debug-location !10
MOV8mr killed %rdi, 1, _, 8, _, killed %al, debug-location !14 :: (store 1 into %ir.12)
RETQ undef %eax
-; RUN: llc -filetype=obj -O0 -relocation-model=pic < %s -mtriple mips-unknown-linux-gnu | llvm-dwarfdump -v - | FileCheck %s
+; RUN: llc -filetype=obj -O0 -relocation-model=pic < %s -mtriple mips-unknown-linux-gnu | llvm-dwarfdump -a - | FileCheck %s
; PR19815
; Generated using clang -target mips-linux-gnu -g test.c -S -o - -flto|opt -sroa -S
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -fdebug-compilation-dir=/tmp -dwarf-version 2 2>&1 | FileCheck -check-prefix MESSAGES %s
-// RUN: llvm-dwarfdump -v %t | FileCheck -check-prefix DWARF %s
+// RUN: llvm-dwarfdump -a %t | FileCheck -check-prefix DWARF %s
// RUN: llvm-objdump -r %t | FileCheck -check-prefix RELOC %s
.section .text, "ax"
// DWARF: DW_AT_language DW_FORM_data2
// DWARF: .debug_info contents:
-// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_compile_unit [1]
+// DWARF: DW_TAG_compile_unit
// DWARF-NOT: DW_TAG_
-// DWARF: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-// DWARF: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000004)
+// DWARF: DW_AT_low_pc {{.*}}(0x0000000000000000)
+// DWARF: DW_AT_high_pc {{.*}}(0x0000000000000004)
-// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_label [2] *
-// DWARF-NEXT: DW_AT_name [DW_FORM_string] ("a")
+// DWARF: DW_TAG_label
+// DWARF-NEXT: DW_AT_name {{.*}}("a")
// DWARF: .debug_aranges contents:
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 5 -fdebug-compilation-dir=/tmp
// RUN: llvm-dwarfdump -v %t | FileCheck -check-prefix DWARF -check-prefix DWARF45 %s
+// RUN: llvm-dwarfdump --debug-line %t | FileCheck -check-prefix DWARF-DL %s
// RUN: llvm-objdump -r %t | FileCheck -check-prefix RELOC -check-prefix RELOC5 %s
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -fdebug-compilation-dir=/tmp
// RUN: llvm-dwarfdump -v %t | FileCheck -check-prefix DWARF -check-prefix DWARF45 %s
+// RUN: llvm-dwarfdump --debug-line %t | FileCheck -check-prefix DWARF-DL %s
// RUN: llvm-objdump -r %t | FileCheck -check-prefix RELOC -check-prefix RELOC4 %s
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 3 -fdebug-compilation-dir=/tmp
// RUN: llvm-dwarfdump -v %t | FileCheck -check-prefix DWARF -check-prefix DWARF3 %s
+// RUN: llvm-dwarfdump --debug-line %t | FileCheck -check-prefix DWARF-DL %s
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 2 2>&1 | FileCheck -check-prefix VERSION %s
// RUN: not llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 1 2>&1 | FileCheck -check-prefix DWARF1 %s
// RUN: not llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 6 2>&1 | FileCheck -check-prefix DWARF6 %s
// DWARF-NEXT: [0x00000000 - 0x00000004)
-// DWARF: .debug_line contents:
-// DWARF: 0x0000000000000000 14 0 1 0 0 is_stmt
-// DWARF-NEXT: 0x0000000000000004 14 0 1 0 0 is_stmt end_sequence
-// DWARF-NEXT: 0x0000000000000000 18 0 1 0 0 is_stmt
-// DWARF-NEXT: 0x0000000000000004 18 0 1 0 0 is_stmt end_sequence
+// DWARF-DL: .debug_line contents:
+// DWARF-DL: 0x0000000000000000 17 0 1 0 0 is_stmt
+// DWARF-DL-NEXT: 0x0000000000000004 17 0 1 0 0 is_stmt end_sequence
+// DWARF-DL-NEXT: 0x0000000000000000 21 0 1 0 0 is_stmt
+// DWARF-DL-NEXT: 0x0000000000000004 21 0 1 0 0 is_stmt end_sequence
// DWARF: .debug_ranges contents:
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -fdebug-compilation-dir=/tmp
-// RUN: llvm-dwarfdump -v %t | FileCheck -check-prefix DWARF %s
+// RUN: llvm-dwarfdump -a %t | FileCheck -check-prefix DWARF %s
// RUN: llvm-objdump -r %t | FileCheck -check-prefix RELOC %s
.section foo, "ax"
// DWARF: DW_AT_language DW_FORM_data2
// DWARF: .debug_info contents:
-// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_compile_unit [1]
+// DWARF: DW_TAG_compile_unit
// DWARF-NOT: DW_TAG_
-// DWARF: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-// DWARF: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000004)
+// DWARF: DW_AT_low_pc (0x0000000000000000)
+// DWARF: DW_AT_high_pc (0x0000000000000004)
-// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_label [2] *
-// DWARF-NEXT: DW_AT_name [DW_FORM_string] ("b")
+// DWARF: DW_TAG_label
+// DWARF-NEXT: DW_AT_name ("b")
// DWARF: .debug_aranges contents:
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -fdebug-compilation-dir=/tmp
-// RUN: llvm-dwarfdump -v %t | FileCheck -check-prefix DWARF %s
+// RUN: llvm-dwarfdump -a %t | FileCheck -check-prefix DWARF %s
// RUN: llvm-objdump -r %t | FileCheck -check-prefix RELOC %s
.section .text, "ax"
// DWARF: DW_AT_language DW_FORM_data2
// DWARF: .debug_info contents:
-// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_compile_unit [1]
+// DWARF: DW_TAG_compile_unit
// DWARF-NOT: DW_TAG_
-// DWARF: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-// DWARF: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000004)
+// DWARF: DW_AT_low_pc (0x0000000000000000)
+// DWARF: DW_AT_high_pc (0x0000000000000004)
-// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_label [2] *
-// DWARF-NEXT: DW_AT_name [DW_FORM_string] ("a")
+// DWARF: DW_TAG_label
+// DWARF-NEXT: DW_AT_name ("a")
// DWARF: .debug_aranges contents:
// RUN: llvm-mc -g -triple i386-apple-darwin10 %s -filetype=obj -o %t
-// RUN: llvm-dwarfdump -v -all %t | FileCheck %s
+// RUN: llvm-dwarfdump -all %t | FileCheck %s
.globl _bar
_bar:
// CHECK: .debug_info contents:
// We don't check the leading addresses these are at.
-// CHECK: DW_TAG_compile_unit [1] *
-// CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
-// CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-// CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000008)
+// CHECK: DW_TAG_compile_unit
+// CHECK: DW_AT_stmt_list (0x00000000)
+// CHECK: DW_AT_low_pc (0x0000000000000000)
+// CHECK: DW_AT_high_pc (0x0000000000000008)
// We don't check the file name as it is a temp directory
-// CHECK: DW_AT_name [DW_FORM_string]
+// CHECK: DW_AT_name
// We don't check the DW_AT_comp_dir which is the current working directory
-// CHECK: DW_AT_producer [DW_FORM_string] ("llvm-mc (based on {{.*}})")
-// CHECK: DW_AT_language [DW_FORM_data2] (DW_LANG_Mips_Assembler)
+// CHECK: DW_AT_producer ("llvm-mc (based on {{.*}})")
+// CHECK: DW_AT_language (DW_LANG_Mips_Assembler)
-// CHECK: DW_TAG_label [2] *
-// CHECK: DW_AT_name [DW_FORM_string] ("bar")
-// CHECK: DW_AT_decl_file [DW_FORM_data4] ([[FILE:".*gen-dwarf.s"]])
-// CHECK: DW_AT_decl_line [DW_FORM_data4] (5)
-// CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-// CHECK: DW_AT_prototyped [DW_FORM_flag] (0x00)
+// CHECK: DW_TAG_label
+// CHECK: DW_AT_name ("bar")
+// CHECK: DW_AT_decl_file ([[FILE:".*gen-dwarf.s"]])
+// CHECK: DW_AT_decl_line (5)
+// CHECK: DW_AT_low_pc (0x0000000000000000)
+// CHECK: DW_AT_prototyped (0x00)
-// CHECK: DW_TAG_unspecified_parameters [3]
+// CHECK: DW_TAG_unspecified_parameters
// CHECK: NULL
-// CHECK: DW_TAG_label [2] *
-// CHECK: DW_AT_name [DW_FORM_string] ("foo")
-// CHECK: DW_AT_decl_file [DW_FORM_data4] ([[FILE]])
-// CHECK: DW_AT_decl_line [DW_FORM_data4] (9)
-// CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000007)
-// CHECK: DW_AT_prototyped [DW_FORM_flag] (0x00)
+// CHECK: DW_TAG_label
+// CHECK: DW_AT_name ("foo")
+// CHECK: DW_AT_decl_file ([[FILE]])
+// CHECK: DW_AT_decl_line (9)
+// CHECK: DW_AT_low_pc (0x0000000000000007)
+// CHECK: DW_AT_prototyped (0x00)
-// CHECK: DW_TAG_unspecified_parameters [3]
+// CHECK: DW_TAG_unspecified_parameters
// CHECK: NULL
-// CHECK: DW_TAG_label [2] *
-// CHECK: DW_AT_name [DW_FORM_string] ("baz")
-// CHECK: DW_AT_decl_file [DW_FORM_data4] ([[FILE]])
-// CHECK: DW_AT_decl_line [DW_FORM_data4] (10)
-// CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000007)
-// CHECK: DW_AT_prototyped [DW_FORM_flag] (0x00)
+// CHECK: DW_TAG_label
+// CHECK: DW_AT_name ("baz")
+// CHECK: DW_AT_decl_file ([[FILE]])
+// CHECK: DW_AT_decl_line (10)
+// CHECK: DW_AT_low_pc (0x0000000000000007)
+// CHECK: DW_AT_prototyped (0x00)
-// CHECK: DW_TAG_unspecified_parameters [3]
+// CHECK: DW_TAG_unspecified_parameters
// CHECK: NULL
RUN: llvm-dsymutil -oso-prepend-path=%p/.. %t/basic.macho.x86_64
Check that the object file in the bundle exists and is sane:
-RUN: llvm-dwarfdump -v %t/basic.macho.x86_64.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 | FileCheck %S/basic-linking-x86.test
+RUN: llvm-dwarfdump -a %t/basic.macho.x86_64.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 | FileCheck %S/basic-linking-x86.test
-Check that llvm-dwarfdump -v recognizes the bundle as a dSYM:
-RUN: llvm-dwarfdump -v %t/basic.macho.x86_64.dSYM | FileCheck %S/basic-linking-x86.test
+Check that llvm-dwarfdump -a recognizes the bundle as a dSYM:
+RUN: llvm-dwarfdump -a %t/basic.macho.x86_64.dSYM | FileCheck %S/basic-linking-x86.test
RUN: FileCheck %s --input-file %t/basic.macho.x86_64.dSYM/Contents/Info.plist
RUN: llvm-dsymutil -oso-prepend-path=%p/.. %t/basic.macho.x86_64 -o %t/dsymdest/basic.macho.x86_64.dSYM
-RUN: llvm-dwarfdump -v %t/dsymdest/basic.macho.x86_64.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 | FileCheck %S/basic-linking-x86.test
+RUN: llvm-dwarfdump -a %t/dsymdest/basic.macho.x86_64.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 | FileCheck %S/basic-linking-x86.test
RUN: FileCheck %s --input-file %t/dsymdest/basic.macho.x86_64.dSYM/Contents/Info.plist
CHECK: <?xml version="1.0" encoding="UTF-8"?>
RUN: cat %p/../Inputs/basic.macho.x86_64 > %t1
RUN: llvm-dsymutil -f -oso-prepend-path=%p/.. %t1
-RUN: llvm-dwarfdump -v %t1.dwarf | FileCheck %s
+RUN: llvm-dwarfdump -a %t1.dwarf | FileCheck %s
RUN: llvm-dsymutil -f -o %t2 -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64
-RUN: llvm-dwarfdump -v %t2 | FileCheck %s
-RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dwarfdump -v - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC
-RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dwarfdump -v - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE
-RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dsymutil -f -y -o - - | llvm-dwarfdump -v - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC
-RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dsymutil -f -o - -y - | llvm-dwarfdump -v - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE
+RUN: llvm-dwarfdump -a %t2 | FileCheck %s
+RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC
+RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE
+RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dsymutil -f -y -o - - | llvm-dwarfdump -a - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC
+RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dsymutil -f -o - -y - | llvm-dwarfdump -a - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE
CHECK: file format Mach-O 64-bit x86-64
CHECK: Compile Unit:
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
-CHECK: DW_AT_language [DW_FORM_data2] (DW_LANG_C99)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000040] = "basic1.c")
-CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x00000000)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000049] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000ea0)
-CHECK: DW_TAG_subprogram [2] *
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000051] = "main")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c")
-CHECK: DW_AT_decl_line [DW_FORM_data1] (23)
-CHECK: DW_AT_prototyped [DW_FORM_flag] (0x01)
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063})
-CHECK: DW_AT_external [DW_FORM_flag] (0x01)
-CHECK: DW_AT_accessibility [DW_FORM_data1] (DW_ACCESS_public)
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000ea0)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000ec4)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000056] = "argc")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c")
-CHECK: DW_AT_decl_line [DW_FORM_data1] (23)
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063})
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_fbreg -8)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000005b] = "argv")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c")
-CHECK: DW_AT_decl_line [DW_FORM_data1] (23)
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006a => {0x0000006a})
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_fbreg -16)
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
+CHECK: DW_AT_language (DW_LANG_C99)
+CHECK: DW_AT_name ("basic1.c")
+CHECK: DW_AT_stmt_list (0x00000000)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000ea0)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("main")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
+CHECK: DW_AT_decl_line (23)
+CHECK: DW_AT_prototyped (0x01)
+CHECK: DW_AT_type (cu + 0x0063)
+CHECK: DW_AT_external (0x01)
+CHECK: DW_AT_accessibility (DW_ACCESS_public)
+CHECK: DW_AT_low_pc (0x0000000100000ea0)
+CHECK: DW_AT_high_pc (0x0000000100000ec4)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("argc")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
+CHECK: DW_AT_decl_line (23)
+CHECK: DW_AT_type (cu + 0x0063)
+CHECK: DW_AT_location (DW_OP_fbreg -8)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("argv")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
+CHECK: DW_AT_decl_line (23)
+CHECK: DW_AT_type (cu + 0x006a)
+CHECK: DW_AT_location (DW_OP_fbreg -16)
CHECK: NULL
-CHECK: DW_TAG_base_type [4]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int")
-CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed)
-CHECK: DW_AT_byte_size [DW_FORM_data1] (0x04)
-CHECK: DW_TAG_pointer_type [5]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006f => {0x0000006f})
-CHECK: DW_TAG_pointer_type [5]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0074 => {0x00000074})
-CHECK: DW_TAG_const_type [6]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0079 => {0x00000079})
-CHECK: DW_TAG_base_type [4]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000064] = "char")
-CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char)
-CHECK: DW_AT_byte_size [DW_FORM_data1] (0x01)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("int")
+CHECK: DW_AT_encoding (DW_ATE_signed)
+CHECK: DW_AT_byte_size (0x04)
+CHECK: DW_TAG_pointer_type
+CHECK: DW_AT_type (cu + 0x006f)
+CHECK: DW_TAG_pointer_type
+CHECK: DW_AT_type (cu + 0x0074)
+CHECK: DW_TAG_const_type
+CHECK: DW_AT_type (cu + 0x0079)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("char")
+CHECK: DW_AT_encoding (DW_ATE_signed_char)
+CHECK: DW_AT_byte_size (0x01)
CHECK: NULL
CHECK: Compile Unit:
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "basic2.c")
-CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x0000003f)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000049] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000ed0)
-CHECK: DW_TAG_base_type [4]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int")
-CHECK: DW_TAG_variable [7]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000072] = "private_int")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7})
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c")
-BASIC: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001008)
-ARCHIVE: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001004)
-CHECK: DW_TAG_variable [7]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007e] = "baz")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7})
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c")
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001000)
-CHECK: DW_TAG_subprogram [2] *
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000082] = "foo")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7})
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000ed0)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f19)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7})
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_fbreg -4)
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
+CHECK: DW_AT_name ("basic2.c")
+CHECK: DW_AT_stmt_list (0x0000003f)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000ed0)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("int")
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("private_int")
+CHECK: DW_AT_type (cu + 0x0026)
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
+BASIC: DW_AT_location (DW_OP_addr 0x100001008)
+ARCHIVE: DW_AT_location (DW_OP_addr 0x100001004)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("baz")
+CHECK: DW_AT_type (cu + 0x0026)
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
+CHECK: DW_AT_location (DW_OP_addr 0x100001000)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("foo")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
+CHECK: DW_AT_type (cu + 0x0026)
+CHECK: DW_AT_low_pc (0x0000000100000ed0)
+CHECK: DW_AT_high_pc (0x0000000100000f19)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("arg")
+CHECK: DW_AT_type (cu + 0x0026)
+CHECK: DW_AT_location (DW_OP_fbreg -4)
CHECK: NULL
-CHECK: DW_TAG_subprogram [8]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7})
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f20)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f37)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("inc")
+CHECK: DW_AT_type (cu + 0x0026)
+CHECK: DW_AT_low_pc (0x0000000100000f20)
+CHECK: DW_AT_high_pc (0x0000000100000f37)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
CHECK: NULL
CHECK: Compile Unit:
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008e] = "basic3.c")
-CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x00000093)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000049] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40)
-CHECK: DW_TAG_variable [9]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000097] = "val")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x00000162})
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic3.c")
-BASIC: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001004)
-ARCHIVE: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001008)
-CHECK: DW_TAG_volatile_type [10]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167})
-CHECK: DW_TAG_base_type [4]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int")
-CHECK: DW_TAG_subprogram [2] *
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "bar")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167})
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f84)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167})
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_fbreg -8)
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
+CHECK: DW_AT_name ("basic3.c")
+CHECK: DW_AT_stmt_list (0x00000093)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000f40)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("val")
+CHECK: DW_AT_type (cu + 0x003c)
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c")
+BASIC: DW_AT_location (DW_OP_addr 0x100001004)
+ARCHIVE: DW_AT_location (DW_OP_addr 0x100001008)
+CHECK: DW_TAG_volatile_type
+CHECK: DW_AT_type (cu + 0x0041)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("int")
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("bar")
+CHECK: DW_AT_type (cu + 0x0041)
+CHECK: DW_AT_low_pc (0x0000000100000f40)
+CHECK: DW_AT_high_pc (0x0000000100000f84)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("arg")
+CHECK: DW_AT_type (cu + 0x0041)
+CHECK: DW_AT_location (DW_OP_fbreg -8)
CHECK: NULL
-CHECK: DW_TAG_subprogram [8]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167})
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000fa9)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("inc")
+CHECK: DW_AT_type (cu + 0x0041)
+CHECK: DW_AT_low_pc (0x0000000100000f90)
+CHECK: DW_AT_high_pc (0x0000000100000fa9)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
CHECK: NULL
-RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto-dw4.macho.x86_64 | llvm-dwarfdump -v - | FileCheck %s
+RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto-dw4.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s
CHECK: file format Mach-O 64-bit x86-64
CHECK: debug_info contents
CHECK: Compile Unit: {{.*}} version = 0x0004
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "clang version 3.7.0 ")
-CHECK: DW_AT_language [DW_FORM_data2] (DW_LANG_C99)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000016] = "basic1.c")
-CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000001f] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x0000000b)
-CHECK: DW_TAG_subprogram [2] *
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x0000000b)
-CHECK: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000027] = "main")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c")
-CHECK: DW_AT_prototyped [DW_FORM_flag_present] (true)
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000000000a1)
-CHECK: DW_AT_external [DW_FORM_flag_present] (true)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_reg5 RDI, DW_OP_piece 0x4)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000002c] = "argc")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000000000a1)
-CHECK: DW_TAG_formal_parameter [4]
-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_reg4 RSI)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000031] = "argv")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060})
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("clang version 3.7.0 ")
+CHECK: DW_AT_language (DW_LANG_C99)
+CHECK: DW_AT_name ("basic1.c")
+CHECK: DW_AT_stmt_list (0x00000000)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000f40)
+CHECK: DW_AT_high_pc (0x0000000b)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_low_pc (0x0000000100000f40)
+CHECK: DW_AT_high_pc (0x0000000b)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_AT_name ("main")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
+CHECK: DW_AT_prototyped (true)
+CHECK: DW_AT_type (0x00000000000000a1)
+CHECK: DW_AT_external (true)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_location (DW_OP_reg5 RDI, DW_OP_piece 0x4)
+CHECK: DW_AT_name ("argc")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
+CHECK: DW_AT_type (0x00000000000000a1)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_location (DW_OP_reg4 RSI)
+CHECK: DW_AT_name ("argv")
+CHECK: DW_AT_type (cu + 0x0060)
CHECK: NULL
-CHECK: DW_TAG_pointer_type [5]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0065 => {0x00000065})
-CHECK: DW_TAG_pointer_type [5]
-CHECK: DW_TAG_const_type [6]
-CHECK: DW_TAG_base_type [7]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000036] = "char")
-CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char)
-CHECK: DW_AT_byte_size [DW_FORM_data1] (0x01)
+CHECK: DW_TAG_pointer_type
+CHECK: DW_AT_type (cu + 0x0065)
+CHECK: DW_TAG_pointer_type
+CHECK: DW_TAG_const_type
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("char")
+CHECK: DW_AT_encoding (DW_ATE_signed_char)
+CHECK: DW_AT_byte_size (0x01)
CHECK: NULL
CHECK: Compile Unit:{{.*}} version = 0x0004
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "clang version 3.7.0 ")
-CHECK: DW_AT_language [DW_FORM_data2] (DW_LANG_C99)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000003b] = "basic2.c")
-CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000044)
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000037)
-CHECK: DW_TAG_base_type [7]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000044] = "int")
-CHECK: DW_TAG_variable [8]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000048] = "baz")
-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x100001000)
-CHECK: DW_TAG_variable [8]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000004c] = "private_int")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c")
-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x100001008)
-CHECK: DW_TAG_subprogram [9]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000058] = "inc")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1})
-CHECK: DW_AT_inline [DW_FORM_data1] (DW_INL_inlined)
-CHECK: DW_TAG_subprogram [10] *
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000037)
-CHECK: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000005c] = "foo")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c")
-CHECK: DW_AT_prototyped [DW_FORM_flag_present] (true)
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1})
-CHECK: DW_TAG_formal_parameter [11]
-CHECK: DW_AT_location [DW_FORM_sec_offset] (0x00000000
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("clang version 3.7.0 ")
+CHECK: DW_AT_language (DW_LANG_C99)
+CHECK: DW_AT_name ("basic2.c")
+CHECK: DW_AT_stmt_list (0x00000044)
+CHECK: DW_AT_low_pc (0x0000000100000f50)
+CHECK: DW_AT_high_pc (0x00000037)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("int")
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("baz")
+CHECK: DW_AT_location (DW_OP_addr 0x100001000)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("private_int")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
+CHECK: DW_AT_location (DW_OP_addr 0x100001008)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("inc")
+CHECK: DW_AT_type (cu + 0x002a)
+CHECK: DW_AT_inline (DW_INL_inlined)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_low_pc (0x0000000100000f50)
+CHECK: DW_AT_high_pc (0x00000037)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_AT_name ("foo")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
+CHECK: DW_AT_prototyped (true)
+CHECK: DW_AT_type (cu + 0x002a)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_location (0x00000000
CHECK: 0x0000000000000000 - 0x000000000000000c: DW_OP_reg5 RDI, DW_OP_piece 0x4)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "arg")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1})
-CHECK: DW_TAG_inlined_subroutine [12]
-CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005b => {0x000000d2} "inc")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f61)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x0000000f)
+CHECK: DW_AT_name ("arg")
+CHECK: DW_AT_type (cu + 0x002a)
+CHECK: DW_TAG_inlined_subroutine
+CHECK: DW_AT_abstract_origin (cu + 0x005b "inc")
+CHECK: DW_AT_low_pc (0x0000000100000f61)
+CHECK: DW_AT_high_pc (0x0000000f)
CHECK: NULL
CHECK: NULL
CHECK: Compile Unit: {{.*}} version = 0x0004
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "clang version 3.7.0 ")
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000064] = "basic3.c")
-CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000009a)
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000024)
-CHECK: DW_TAG_variable [13]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000006d] = "val")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic3.c")
-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x100001004)
-CHECK: DW_TAG_volatile_type [14]
-CHECK: DW_TAG_subprogram [15]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000058] = "inc")
-CHECK: DW_AT_inline [DW_FORM_data1] (DW_INL_inlined)
-CHECK: DW_TAG_subprogram [2] *
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90)
-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000024)
-CHECK: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000071] = "bar")
-CHECK: DW_TAG_formal_parameter [16]
-CHECK: DW_AT_location [DW_FORM_sec_offset] (0x00000025
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("clang version 3.7.0 ")
+CHECK: DW_AT_name ("basic3.c")
+CHECK: DW_AT_stmt_list (0x0000009a)
+CHECK: DW_AT_low_pc (0x0000000100000f90)
+CHECK: DW_AT_high_pc (0x00000024)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("val")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c")
+CHECK: DW_AT_location (DW_OP_addr 0x100001004)
+CHECK: DW_TAG_volatile_type
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("inc")
+CHECK: DW_AT_inline (DW_INL_inlined)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_low_pc (0x0000000100000f90)
+CHECK: DW_AT_high_pc (0x00000024)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_AT_name ("bar")
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_location (0x00000025
CHECK: 0x0000000000000000 - 0x000000000000000f: DW_OP_reg5 RDI, DW_OP_piece 0x4
CHECK: 0x0000000000000019 - 0x000000000000001d: DW_OP_reg5 RDI, DW_OP_piece 0x4)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "arg")
-CHECK: DW_TAG_inlined_subroutine [17]
-CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0044 => {0x0000015f} "inc")
-CHECK: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
+CHECK: DW_AT_name ("arg")
+CHECK: DW_TAG_inlined_subroutine
+CHECK: DW_AT_abstract_origin (cu + 0x0044 "inc")
+CHECK: DW_AT_ranges (0x00000000
CHECK: [0x0000000100000f94 - 0x0000000100000f9a)
CHECK: [0x0000000100000f9f - 0x0000000100000fa7))
CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
CHECK-NEXT: 0x0000000100000f40 26 0 1 0 0 is_stmt
CHECK-NEXT: 0x0000000100000f44 27 10 1 0 0 is_stmt prologue_end
-CHECK-NEXT: 0x0000000100000f49 27 3 1 0 0
+CHECK-NEXT: 0x0000000100000f49 27 3 1 0 0
CHECK-NEXT: 0x0000000100000f4b 27 3 1 0 0 end_sequence
CHECK: Dir Mod Time File Len File Name
CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
CHECK-NEXT: 0x0000000100000f50 19 0 1 0 0 is_stmt
CHECK-NEXT: 0x0000000100000f54 20 18 1 0 0 is_stmt prologue_end
-CHECK-NEXT: 0x0000000100000f5a 20 17 1 0 0
-CHECK-NEXT: 0x0000000100000f5c 20 10 1 0 0
+CHECK-NEXT: 0x0000000100000f5a 20 17 1 0 0
+CHECK-NEXT: 0x0000000100000f5c 20 10 1 0 0
CHECK-NEXT: 0x0000000100000f61 15 10 1 0 0 is_stmt
CHECK-NEXT: 0x0000000100000f70 20 23 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f74 20 36 1 0 0
-CHECK-NEXT: 0x0000000100000f83 20 31 1 0 0
-CHECK-NEXT: 0x0000000100000f85 20 3 1 0 0
+CHECK-NEXT: 0x0000000100000f74 20 36 1 0 0
+CHECK-NEXT: 0x0000000100000f83 20 31 1 0 0
+CHECK-NEXT: 0x0000000100000f85 20 3 1 0 0
CHECK-NEXT: 0x0000000100000f87 20 3 1 0 0 end_sequence
CHECK: Dir Mod Time File Len File Name
CHECK-NEXT: 0x0000000100000f9f 12 10 1 0 0 is_stmt
CHECK-NEXT: 0x0000000100000fa7 20 1 1 0 0 is_stmt
CHECK-NEXT: 0x0000000100000fa9 19 18 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000fab 19 10 1 0 0
+CHECK-NEXT: 0x0000000100000fab 19 10 1 0 0
CHECK-NEXT: 0x0000000100000fb2 20 1 1 0 0 is_stmt
CHECK-NEXT: 0x0000000100000fb4 20 1 1 0 0 is_stmt end_sequence
-RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump -v - | FileCheck %s
-RUN: llvm-dsymutil -oso-prepend-path=%p/.. -dump-debug-map %p/../Inputs/basic-lto.macho.x86_64 | llvm-dsymutil -f -o - -y - | llvm-dwarfdump -v - | FileCheck %s
+RUN: llvm-dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s
+RUN: llvm-dsymutil -oso-prepend-path=%p/.. -dump-debug-map %p/../Inputs/basic-lto.macho.x86_64 | llvm-dsymutil -f -o - -y - | llvm-dwarfdump -a - | FileCheck %s
CHECK: file format Mach-O 64-bit x86-64
CHECK: Compile Unit:
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
-CHECK: DW_AT_language [DW_FORM_data2] (DW_LANG_C99)
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000040] = "basic1.c")
-CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x00000000)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000049] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40)
-CHECK: DW_TAG_subprogram [2] *
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000051] = "main")
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c")
-CHECK: DW_AT_decl_line [DW_FORM_data1] (23)
-CHECK: DW_AT_prototyped [DW_FORM_flag] (0x01)
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063})
-CHECK: DW_AT_external [DW_FORM_flag] (0x01)
-CHECK: DW_AT_accessibility [DW_FORM_data1] (DW_ACCESS_public)
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f4b)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000056] = "argc")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063})
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_reg5 RDI, DW_OP_piece 0x4)
-CHECK: DW_TAG_formal_parameter [3]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000005b] = "argv")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006a => {0x0000006a})
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_reg4 RSI)
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
+CHECK: DW_AT_language (DW_LANG_C99)
+CHECK: DW_AT_name ("basic1.c")
+CHECK: DW_AT_stmt_list (0x00000000)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000f40)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("main")
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
+CHECK: DW_AT_decl_line (23)
+CHECK: DW_AT_prototyped (0x01)
+CHECK: DW_AT_type (cu + 0x0063)
+CHECK: DW_AT_external (0x01)
+CHECK: DW_AT_accessibility (DW_ACCESS_public)
+CHECK: DW_AT_low_pc (0x0000000100000f40)
+CHECK: DW_AT_high_pc (0x0000000100000f4b)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("argc")
+CHECK: DW_AT_type (cu + 0x0063)
+CHECK: DW_AT_location (DW_OP_reg5 RDI, DW_OP_piece 0x4)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("argv")
+CHECK: DW_AT_type (cu + 0x006a)
+CHECK: DW_AT_location (DW_OP_reg4 RSI)
CHECK: NULL
-CHECK: DW_TAG_base_type [4]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int")
-CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed)
-CHECK: DW_AT_byte_size [DW_FORM_data1] (0x04)
-CHECK: DW_TAG_pointer_type [5]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006f => {0x0000006f})
-CHECK: DW_TAG_pointer_type [5]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0074 => {0x00000074})
-CHECK: DW_TAG_const_type [6]
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0079 => {0x00000079})
-CHECK: DW_TAG_base_type [4]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000064] = "char")
-CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char)
-CHECK: DW_AT_byte_size [DW_FORM_data1] (0x01)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("int")
+CHECK: DW_AT_encoding (DW_ATE_signed)
+CHECK: DW_AT_byte_size (0x04)
+CHECK: DW_TAG_pointer_type
+CHECK: DW_AT_type (cu + 0x006f)
+CHECK: DW_TAG_pointer_type
+CHECK: DW_AT_type (cu + 0x0074)
+CHECK: DW_TAG_const_type
+CHECK: DW_AT_type (cu + 0x0079)
+CHECK: DW_TAG_base_type
+CHECK: DW_AT_name ("char")
+CHECK: DW_AT_encoding (DW_ATE_signed_char)
+CHECK: DW_AT_byte_size (0x01)
CHECK: NULL
CHECK: Compile Unit:
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "basic2.c")
-CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x0000003e)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000049] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50)
-CHECK: DW_TAG_variable [7]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000072] = "private_int")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c")
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001008)
-CHECK: DW_TAG_variable [7]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007e] = "baz")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001000)
-CHECK: DW_TAG_subprogram [8] *
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000082] = "foo")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f89)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
-CHECK: DW_TAG_formal_parameter [9]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_location [DW_FORM_data4] (0x00000000
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
+CHECK: DW_AT_name ("basic2.c")
+CHECK: DW_AT_stmt_list (0x0000003e)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000f50)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("private_int")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
+CHECK: DW_AT_location (DW_OP_addr 0x100001008)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("baz")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_location (DW_OP_addr 0x100001000)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("foo")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_low_pc (0x0000000100000f50)
+CHECK: DW_AT_high_pc (0x0000000100000f89)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("arg")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_location (0x00000000
CHECK: 0x0000000000000000 - 0x000000000000000e: DW_OP_reg5 RDI, DW_OP_piece 0x4)
-CHECK: DW_TAG_inlined_subroutine [10]
-CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x00a7 => {0x00000128} "inc")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f63)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f72)
-CHECK: DW_AT_call_line [DW_FORM_data1] (20)
+CHECK: DW_TAG_inlined_subroutine
+CHECK: DW_AT_abstract_origin (cu + 0x00a7 "inc")
+CHECK: DW_AT_low_pc (0x0000000100000f63)
+CHECK: DW_AT_high_pc (0x0000000100000f72)
+CHECK: DW_AT_call_line (20)
CHECK: NULL
-CHECK: DW_TAG_subprogram [11]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_inline [DW_FORM_data1] (DW_INL_inlined)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("inc")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_inline (DW_INL_inlined)
CHECK: NULL
CHECK: Compile Unit:
-CHECK: DW_TAG_compile_unit [1] *
-CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000001] = "Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008e] = "basic3.c")
-CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x0000007e)
-CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000049] = "/Inputs")
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90)
-CHECK: DW_TAG_variable [12]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000097] = "val")
-CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x00000176})
-CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic3.c")
-CHECK: DW_AT_location [DW_FORM_block1] (DW_OP_addr 0x100001004)
-CHECK: DW_TAG_volatile_type [13]
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_TAG_subprogram [8] *
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "bar")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000fb4)
-CHECK: DW_AT_frame_base [DW_FORM_block1] (DW_OP_reg6 RBP)
-CHECK: DW_TAG_formal_parameter [9]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
-CHECK: DW_AT_location [DW_FORM_data4] (0x00000025
+CHECK: DW_TAG_compile_unit
+CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
+CHECK: DW_AT_name ("basic3.c")
+CHECK: DW_AT_stmt_list (0x0000007e)
+CHECK: DW_AT_comp_dir ("/Inputs")
+CHECK: DW_AT_low_pc (0x0000000100000f90)
+CHECK: DW_TAG_variable
+CHECK: DW_AT_name ("val")
+CHECK: DW_AT_type (cu + 0x003c)
+CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c")
+CHECK: DW_AT_location (DW_OP_addr 0x100001004)
+CHECK: DW_TAG_volatile_type
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("bar")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_low_pc (0x0000000100000f90)
+CHECK: DW_AT_high_pc (0x0000000100000fb4)
+CHECK: DW_AT_frame_base (DW_OP_reg6 RBP)
+CHECK: DW_TAG_formal_parameter
+CHECK: DW_AT_name ("arg")
+CHECK: DW_AT_type (0x0000000000000063)
+CHECK: DW_AT_location (0x00000025
CHECK: 0x0000000000000000 - 0x000000000000000f: DW_OP_reg5 RDI, DW_OP_piece 0x4
CHECK: 0x0000000000000019 - 0x000000000000001d: DW_OP_reg5 RDI, DW_OP_piece 0x4)
-CHECK: DW_TAG_lexical_block [14] *
-CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f94)
-CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000fa7)
-CHECK: DW_TAG_inlined_subroutine [15]
-CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x009a => {0x000001d4} "inc")
-CHECK: DW_AT_ranges [DW_FORM_data4] (0x00000000
+CHECK: DW_TAG_lexical_block
+CHECK: DW_AT_low_pc (0x0000000100000f94)
+CHECK: DW_AT_high_pc (0x0000000100000fa7)
+CHECK: DW_TAG_inlined_subroutine
+CHECK: DW_AT_abstract_origin (cu + 0x009a "inc")
+CHECK: DW_AT_ranges (0x00000000
CHECK: [0x0000000100000f94 - 0x0000000100000f9a)
CHECK: [0x0000000100000f9f - 0x0000000100000fa7))
CHECK: NULL
CHECK: NULL
-CHECK: DW_TAG_subprogram [11]
-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc")
-CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063)
+CHECK: DW_TAG_subprogram
+CHECK: DW_AT_name ("inc")
+CHECK: DW_AT_type (0x0000000000000063)
CHECK: NULL
CHECK: .debug_loc contents:
CHECK: Dir Mod Time File Len File Name
CHECK-NEXT: ---- ---------- ---------- ---------------------------
CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic1.c
-CHECK: Address Line Column File ISA Discriminator Flags
-CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
-CHECK-NEXT: 0x0000000100000f40 23 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f44 24 0 1 0 0 is_stmt prologue_end
-CHECK-NEXT: 0x0000000100000f4b 24 0 1 0 0 is_stmt end_sequence
+CHECK: 0x0000000100000f40 23 0 1 0 0 is_stmt
+CHECK: 0x0000000100000f44 24 0 1 0 0 is_stmt prologue_end
+CHECK: 0x0000000100000f4b 24 0 1 0 0 is_stmt end_sequence
CHECK: Dir Mod Time File Len File Name
CHECK-NEXT: ---- ---------- ---------- ---------------------------
CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic2.c
-CHECK: Address Line Column File ISA Discriminator Flags
-CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
-CHECK-NEXT: 0x0000000100000f50 19 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f54 20 0 1 0 0 is_stmt prologue_end
-CHECK-NEXT: 0x0000000100000f63 15 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f72 20 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f89 20 0 1 0 0 is_stmt end_sequence
+CHECK: 0x0000000100000f50 19 0 1 0 0 is_stmt
+CHECK: 0x0000000100000f54 20 0 1 0 0 is_stmt prologue_end
+CHECK: 0x0000000100000f63 15 0 1 0 0 is_stmt
+CHECK: 0x0000000100000f72 20 0 1 0 0 is_stmt
+CHECK: 0x0000000100000f89 20 0 1 0 0 is_stmt end_sequence
CHECK: Dir Mod Time File Len File Name
CHECK-NEXT: ---- ---------- ---------- ---------------------------
CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic3.c
-CHECK: Address Line Column File ISA Discriminator Flags
-CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
-CHECK-NEXT: 0x0000000100000f90 16 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f94 12 0 1 0 0 is_stmt prologue_end
-CHECK-NEXT: 0x0000000100000f9a 17 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000f9f 12 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000fa7 20 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000fa9 19 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000fb2 20 0 1 0 0 is_stmt
-CHECK-NEXT: 0x0000000100000fb4 20 0 1 0 0 is_stmt end_sequence
+CHECK: 0x0000000100000f90 16 0 1 0 0 is_stmt
+CHECK: 0x0000000100000f94 12 0 1 0 0 is_stmt prologue_end
+CHECK: 0x0000000100000f9a 17 0 1 0 0 is_stmt
+CHECK: 0x0000000100000f9f 12 0 1 0 0 is_stmt
+CHECK: 0x0000000100000fa7 20 0 1 0 0 is_stmt
+CHECK: 0x0000000100000fa9 19 0 1 0 0 is_stmt
+CHECK: 0x0000000100000fb2 20 0 1 0 0 is_stmt
+CHECK: 0x0000000100000fb4 20 0 1 0 0 is_stmt end_sequence
CHECK: .debug_pubnames contents:
CHECK-NEXT: length = 0x00000017 version = 0x0002 unit_offset = 0x00000000 unit_size = 0x00000081
# Multiple inputs in flat mode
RUN: llvm-dsymutil -f -oso-prepend-path=%p/.. %t/basic.macho.x86_64 %t/basic-archive.macho.x86_64 %t/basic-lto.macho.x86_64 %t/basic-lto-dw4.macho.x86_64
-RUN: llvm-dwarfdump -v %t/basic.macho.x86_64.dwarf \
+RUN: llvm-dwarfdump -a %t/basic.macho.x86_64.dwarf \
RUN: | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK --check-prefix=BASIC
-RUN: llvm-dwarfdump -v %t/basic-archive.macho.x86_64.dwarf \
+RUN: llvm-dwarfdump -a %t/basic-archive.macho.x86_64.dwarf \
RUN: | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK --check-prefix=ARCHIVE
-RUN: llvm-dwarfdump -v %t/basic-lto.macho.x86_64.dwarf | FileCheck %S/basic-lto-linking-x86.test
-RUN: llvm-dwarfdump -v %t/basic-lto-dw4.macho.x86_64.dwarf | FileCheck %S/basic-lto-dw4-linking-x86.test
+RUN: llvm-dwarfdump -a %t/basic-lto.macho.x86_64.dwarf | FileCheck %S/basic-lto-linking-x86.test
+RUN: llvm-dwarfdump -a %t/basic-lto-dw4.macho.x86_64.dwarf | FileCheck %S/basic-lto-dw4-linking-x86.test
# Multiple inputs that end up in the same named bundle
RUN: llvm-dsymutil -oso-prepend-path=%p/.. %t/basic.macho.x86_64 %t/basic-archive.macho.x86_64 %t/basic-lto.macho.x86_64 %t/basic-lto-dw4.macho.x86_64 -o %t.dSYM
-RUN: llvm-dwarfdump -v %t.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 \
+RUN: llvm-dwarfdump -a %t.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 \
RUN: | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK --check-prefix=BASIC
-RUN: llvm-dwarfdump -v %t.dSYM/Contents/Resources/DWARF/basic-archive.macho.x86_64 \
+RUN: llvm-dwarfdump -a %t.dSYM/Contents/Resources/DWARF/basic-archive.macho.x86_64 \
RUN: | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK --check-prefix=ARCHIVE
-RUN: llvm-dwarfdump -v %t.dSYM/Contents/Resources/DWARF/basic-lto.macho.x86_64 | FileCheck %S/basic-lto-linking-x86.test
-RUN: llvm-dwarfdump -v %t.dSYM/Contents/Resources/DWARF/basic-lto-dw4.macho.x86_64 | FileCheck %S/basic-lto-dw4-linking-x86.test
+RUN: llvm-dwarfdump -a %t.dSYM/Contents/Resources/DWARF/basic-lto.macho.x86_64 | FileCheck %S/basic-lto-linking-x86.test
+RUN: llvm-dwarfdump -a %t.dSYM/Contents/Resources/DWARF/basic-lto-dw4.macho.x86_64 | FileCheck %S/basic-lto-dw4-linking-x86.test
# Multiple inputs in a named bundle in flat mode... impossible.
RUN: not llvm-dsymutil -f -oso-prepend-path=%p/.. %t/basic.macho.x86_64 %t/basic-archive.macho.x86_64 %t/basic-lto.macho.x86_64 %t/basic-lto-dw4.macho.x86_64 -o %t.dSYM 2>&1 | FileCheck %s
# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
-# RUN: | llvm-dwarfdump -debug-info - \
+# RUN: | llvm-dwarfdump --debug-info --debug-line - \
# RUN: | FileCheck %s
# CHECK-NOT: .debug_abbrev contents:
# CHECK: DW_AT_name ("int")
# CHECK-NOT: debug_str
# CHECK-NOT: DW_AT_type {{.*}} =>
-#
+
+# CHECK: Address Line Column File ISA Discriminator Flags
+# CHECK-NEXT:------------------ ------ ------ ------ --- ------------- -------------
+# CHECK-NEXT:0x0000000000000000 1 0 1 0 0 is_stmt
+# CHECK-NEXT:0x0000000000000006 1 12 1 0 0 is_stmt prologue_end
+# CHECK-NEXT:0x0000000000000008 1 12 1 0 0 is_stmt end_sequence
+
# CHECK-NOT: {{.*}} contents:
-#
+
# This test is meant to verify that without specifying -verbose DW_FORMs and
# abbreviation codes are hidden from .debug_info section. Furthermore it
-# verifies that it also hides .debug_str and die reference offsets into the CU.
+# verifies that it also hides .debug_str and die reference offsets into the CU
+# and that the .debug_line table is printed rather than the opcodes.
.section __TEXT,__text,regular,pure_instructions
.macosx_version_min 10, 12
--- /dev/null
+# RUN: llvm-mc %S/brief.s -filetype obj -triple x86_64-apple-darwin -o - \
+# RUN: | llvm-dwarfdump -v --debug-info --debug-line - \
+# RUN: | FileCheck %s
+
+# CHECK-NOT: .debug_abbrev contents:
+
+# CHECK: .debug_info contents:
+# CHECK: DW_TAG_compile_unit [1]
+# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{.*}}] = "brief.c")
+# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{.*}}] = "main")
+# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{.*}}] = "int")
+
+# CHECK: .debug_line contents:
+# CHECK: 00 DW_LNE_set_address (0x0000000000000000)
+# CHECK: 01 DW_LNS_copy
+# CHECK: 0x0000000000000000 1 0 1 0 0 is_stmt
+# CHECK: 05 DW_LNS_set_column (12)
+# CHECK: 0a DW_LNS_set_prologue_end
+# CHECK: 66 address += 89, line += 0
+# CHECK: 0x0000000000000006 1 12 1 0 0 is_stmt prologue_end
+# CHECK: 02 DW_LNS_advance_pc (2)
+# CHECK: 00 DW_LNE_end_sequence
+# CHECK: 0x0000000000000008 1 12 1 0 0 is_stmt end_sequence
+#
+# CHECK-NOT: {{.*}} contents: