Index: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h =================================================================== --- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h +++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h @@ -31,7 +31,7 @@ struct FileNameEntry { FileNameEntry() = default; - StringRef Name; + DWARFFormValue Name; uint64_t DirIdx = 0; uint64_t ModTime = 0; uint64_t Length = 0; @@ -71,7 +71,7 @@ /// For v5, whether filename entries provide an MD5 checksum. bool HasMD5; std::vector StandardOpcodeLengths; - std::vector IncludeDirectories; + std::vector IncludeDirectories; std::vector FileNames; const DWARFFormParams getFormParams() const { return FormParams; } @@ -99,7 +99,7 @@ } void clear(); - void dump(raw_ostream &OS) const; + void dump(raw_ostream &OS, DIDumpOptions DumpOptions) const; bool parse(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr, const DWARFContext &Ctx, const DWARFUnit *U = nullptr); }; @@ -219,7 +219,7 @@ DILineInfoSpecifier::FileLineInfoKind Kind, DILineInfo &Result) const; - void dump(raw_ostream &OS) const; + void dump(raw_ostream &OS, DIDumpOptions DumpOptions) const; void clear(); /// Parse prologue and all rows. Index: llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp =================================================================== --- llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp @@ -401,7 +401,7 @@ LineTable.parse(LineData, &Offset, *this, U, &OS); } else { LineTable.parse(LineData, &Offset, *this, U); - LineTable.dump(OS); + LineTable.dump(OS, DIDumpOptions()); } // Check for unparseable prologue, to avoid infinite loops. if (OldOffset == Offset) @@ -426,7 +426,7 @@ if (!LineTable.Prologue.parse(LineData, &Offset, *this, U)) break; if (!DumpOffset || OldOffset == *DumpOffset) - LineTable.dump(OS); + LineTable.dump(OS, DumpOpts); } } Index: llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp =================================================================== --- llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp @@ -54,7 +54,8 @@ FileNames.clear(); } -void DWARFDebugLine::Prologue::dump(raw_ostream &OS) const { +void DWARFDebugLine::Prologue::dump(raw_ostream &OS, + DIDumpOptions DumpOptions) const { OS << "Line table prologue:\n" << format(" total_length: 0x%8.8" PRIx64 "\n", TotalLength) << format(" version: %u\n", getVersion()); @@ -76,9 +77,11 @@ if (!IncludeDirectories.empty()) { // DWARF v5 starts directory indexes at 0. uint32_t DirBase = getVersion() >= 5 ? 0 : 1; - for (uint32_t I = 0; I != IncludeDirectories.size(); ++I) - OS << format("include_directories[%3u] = '", I + DirBase) - << IncludeDirectories[I] << "'\n"; + for (uint32_t I = 0; I != IncludeDirectories.size(); ++I) { + OS << format("include_directories[%3u] = ", I + DirBase); + IncludeDirectories[I].dump(OS, DumpOptions); + OS << '\n'; + } } if (!FileNames.empty()) { @@ -98,7 +101,9 @@ else OS << format("0x%8.8" PRIx64 " 0x%8.8" PRIx64, FileEntry.ModTime, FileEntry.Length); - OS << ' ' << FileEntry.Name << '\n'; + OS << ' '; + FileEntry.Name.dump(OS, DumpOptions); + OS << '\n'; } } } @@ -107,13 +112,15 @@ static void parseV2DirFileTables(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr, uint64_t EndPrologueOffset, - std::vector &IncludeDirectories, + std::vector &IncludeDirectories, std::vector &FileNames) { while (*OffsetPtr < EndPrologueOffset) { StringRef S = DebugLineData.getCStrRef(OffsetPtr); if (S.empty()) break; - IncludeDirectories.push_back(S); + DWARFFormValue Dir(dwarf::DW_FORM_string); + Dir.setPValue(S.data()); + IncludeDirectories.push_back(Dir); } while (*OffsetPtr < EndPrologueOffset) { @@ -121,7 +128,8 @@ if (Name.empty()) break; DWARFDebugLine::FileNameEntry FileEntry; - FileEntry.Name = Name; + FileEntry.Name.setForm(dwarf::DW_FORM_string); + FileEntry.Name.setPValue(Name.data()); FileEntry.DirIdx = DebugLineData.getULEB128(OffsetPtr); FileEntry.ModTime = DebugLineData.getULEB128(OffsetPtr); FileEntry.Length = DebugLineData.getULEB128(OffsetPtr); @@ -159,7 +167,7 @@ uint32_t *OffsetPtr, uint64_t EndPrologueOffset, const DWARFFormParams &FormParams, const DWARFContext &Ctx, const DWARFUnit *U, bool &HasMD5, - std::vector &IncludeDirectories, + std::vector &IncludeDirectories, std::vector &FileNames) { // Get the directory entry description. ContentDescriptors DirDescriptors = @@ -178,7 +186,7 @@ case DW_LNCT_path: if (!Value.extractValue(DebugLineData, OffsetPtr, FormParams, &Ctx, U)) return false; - IncludeDirectories.push_back(Value.getAsCString().getValue()); + IncludeDirectories.push_back(Value); break; default: if (!Value.skipValue(DebugLineData, OffsetPtr, FormParams)) @@ -205,7 +213,7 @@ return false; switch (Descriptor.Type) { case DW_LNCT_path: - FileEntry.Name = Value.getAsCString().getValue(); + FileEntry.Name = Value; break; case DW_LNCT_directory_index: FileEntry.DirIdx = Value.getAsUnsignedConstant().getValue(); @@ -346,8 +354,9 @@ DWARFDebugLine::LineTable::LineTable() { clear(); } -void DWARFDebugLine::LineTable::dump(raw_ostream &OS) const { - Prologue.dump(OS); +void DWARFDebugLine::LineTable::dump(raw_ostream &OS, + DIDumpOptions DumpOptions) const { + Prologue.dump(OS, DumpOptions); OS << '\n'; if (!Rows.empty()) { @@ -430,8 +439,12 @@ return false; } - if (OS) - Prologue.dump(*OS); + if (OS) { + // The presence of OS signals verbose dumping. + DIDumpOptions DumpOptions; + DumpOptions.Verbose = true; + Prologue.dump(*OS, DumpOptions); + } const uint32_t EndOffset = DebugLineOffset + Prologue.TotalLength + Prologue.sizeofTotalLength(); @@ -531,14 +544,15 @@ // the file register of the state machine. { FileNameEntry FileEntry; - FileEntry.Name = DebugLineData.getCStr(OffsetPtr); + const char *Name = DebugLineData.getCStr(OffsetPtr); + FileEntry.Name.setForm(dwarf::DW_FORM_string); + FileEntry.Name.setPValue(Name); FileEntry.DirIdx = DebugLineData.getULEB128(OffsetPtr); 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=" + *OS << " (" << Name << ", dir=" << FileEntry.DirIdx << ", mod_time=" << format("(0x%16.16" PRIx64 ")", FileEntry.ModTime) << ", length=" << FileEntry.Length << ")"; } @@ -902,7 +916,7 @@ if (Kind == FileLineInfoKind::None || !hasFileAtIndex(FileIndex)) return false; const FileNameEntry &Entry = Prologue.FileNames[FileIndex - 1]; - StringRef FileName = Entry.Name; + StringRef FileName = Entry.Name.getAsCString().getValue(); if (Kind != FileLineInfoKind::AbsoluteFilePath || sys::path::is_absolute(FileName)) { Result = FileName; @@ -915,7 +929,9 @@ // Be defensive about the contents of Entry. if (IncludeDirIndex > 0 && IncludeDirIndex <= Prologue.IncludeDirectories.size()) - IncludeDir = Prologue.IncludeDirectories[IncludeDirIndex - 1]; + IncludeDir = Prologue.IncludeDirectories[IncludeDirIndex - 1] + .getAsCString() + .getValue(); // We may still need to append compilation directory of compile unit. // We know that FileName is not absolute, the only way to have an Index: llvm/trunk/lib/DebugInfo/DWARF/DWARFFormValue.cpp =================================================================== --- llvm/trunk/lib/DebugInfo/DWARF/DWARFFormValue.cpp +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFFormValue.cpp @@ -284,10 +284,10 @@ } // In DWARF3 DW_FORM_data4 and DW_FORM_data8 served also as a section offset. // Don't check for DWARF version here, as some producers may still do this - // by mistake. Also accept DW_FORM_strp since this is .debug_str section - // offset. + // by mistake. Also accept DW_FORM_[line_]strp since these are + // .debug_[line_]str section offsets. return (Form == DW_FORM_data4 || Form == DW_FORM_data8 || - Form == DW_FORM_strp) && + Form == DW_FORM_strp || Form == DW_FORM_line_strp) && FC == FC_SectionOffset; } @@ -513,6 +513,11 @@ OS << format(" .debug_str[0x%8.8x] = ", (uint32_t)UValue); dumpString(OS); break; + case DW_FORM_line_strp: + if (DumpOpts.Verbose) + OS << format(" .debug_line_str[0x%8.8x] = ", (uint32_t)UValue); + dumpString(OS); + break; case DW_FORM_strx: case DW_FORM_strx1: case DW_FORM_strx2: Index: llvm/trunk/test/CodeGen/BPF/dwarfdump.ll =================================================================== --- llvm/trunk/test/CodeGen/BPF/dwarfdump.ll +++ llvm/trunk/test/CodeGen/BPF/dwarfdump.ll @@ -59,6 +59,6 @@ !26 = !DILocation(line: 7, column: 17, scope: !2) !27 = !DILocation(line: 9, column: 9, scope: !2) -; CHECK: file_names[ 1] 0 0x00000000 0x00000000 testprog.c +; CHECK: file_names[ 1] 0 0x00000000 0x00000000 "testprog.c" ; CHECK: 0x0000000000000000 2 ; CHECK: 0x0000000000000020 7 Index: llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll =================================================================== --- llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll +++ llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll @@ -17,12 +17,12 @@ ; ASM: .file 2 ".{{/|\\\\}}t2.h" md5 "22222222222222222222222222222222" ; OBJ-4: Dir Mod Time File Len File Name -; OBJ-4: file_names[ 1] 1 0x00000000 0x00000000 t1.h -; OBJ-4: file_names[ 2] 1 0x00000000 0x00000000 t2.h +; OBJ-4: file_names[ 1] 1 0x00000000 0x00000000 "t1.h" +; OBJ-4: file_names[ 2] 1 0x00000000 0x00000000 "t2.h" ; OBJ-5: Dir MD5 Checksum File Name -; OBJ-5: file_names[ 1] 1 11111111111111111111111111111111 t1.h -; OBJ-5: file_names[ 2] 1 22222222222222222222222222222222 t2.h +; OBJ-5: file_names[ 1] 1 11111111111111111111111111111111 "t1.h" +; OBJ-5: file_names[ 2] 1 22222222222222222222222222222222 "t2.h" ; ModuleID = 't.c' source_filename = "t.c" Index: llvm/trunk/test/CodeGen/X86/dwarf-comp-dir.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/dwarf-comp-dir.ll +++ llvm/trunk/test/CodeGen/X86/dwarf-comp-dir.ll @@ -17,5 +17,5 @@ ; The important part of the following check is that dir = #0. ; Dir Mod Time File Len File Name ; ---- ---------- ---------- --------------------------- -; CHECK: file_names[ 1] 0 0x00000000 0x00000000 empty.c +; CHECK: file_names[ 1] 0 0x00000000 0x00000000 "empty.c" !5 = !{i32 1, !"Debug Info Version", i32 3} Index: llvm/trunk/test/DebugInfo/AMDGPU/dwarfdump-relocs.ll =================================================================== --- llvm/trunk/test/DebugInfo/AMDGPU/dwarfdump-relocs.ll +++ llvm/trunk/test/DebugInfo/AMDGPU/dwarfdump-relocs.ll @@ -13,7 +13,7 @@ ; } ; CHECK-NOT: failed to compute relocation -; CHECK: file_names[ 1] 0 0x00000000 0x00000000 dwarfdump-relocs.cl +; CHECK: file_names[ 1] 0 0x00000000 0x00000000 "dwarfdump-relocs.cl" declare void @llvm.dbg.declare(metadata, metadata, metadata) Index: llvm/trunk/test/DebugInfo/Generic/lto-comp-dir.ll =================================================================== --- llvm/trunk/test/DebugInfo/Generic/lto-comp-dir.ll +++ llvm/trunk/test/DebugInfo/Generic/lto-comp-dir.ll @@ -11,13 +11,13 @@ ; CHECK-NEXT: debug_line[{{.*}}] ; CHECK-NEXT: Line table prologue: ; CHECK-NOT: include_directories -; CHECK: file_names[ 1] 0 {{.*}} a.cpp +; CHECK: file_names[ 1] 0 {{.*}} "a.cpp" ; CHECK-NOT: file_names ; CHECK: debug_line[{{.*}}] ; CHECK-NEXT: Line table prologue: ; CHECK-NOT: include_directories -; CHECK: file_names[ 1] 0 {{.*}} b.cpp +; CHECK: file_names[ 1] 0 {{.*}} "b.cpp" ; CHECK-NOT: file_names ; However, if a single line table is emitted and shared between CUs, the Index: llvm/trunk/test/DebugInfo/X86/dwarfdump-header-64.s =================================================================== --- llvm/trunk/test/DebugInfo/X86/dwarfdump-header-64.s +++ llvm/trunk/test/DebugInfo/X86/dwarfdump-header-64.s @@ -141,9 +141,9 @@ # CHECK: seg_select_size: 0 # CHECK: prologue_length: 0x00000044 # CHECK: max_ops_per_inst: 1 -# CHECK: include_directories[ 0] = 'Directory5a' -# CHECK: include_directories[ 1] = 'Directory5b' +# CHECK: include_directories[ 0] = .debug_str[0x00000028] = "Directory5a" +# CHECK: include_directories[ 1] = .debug_str[0x00000034] = "Directory5b" # CHECK-NOT: include_directories -# CHECK: file_names[ 1] 0 0x00000051 0x00000052 File5a{{$}} -# CHECK: file_names[ 2] 1 0x00000053 0x00000054 File5b{{$}} +# CHECK: file_names[ 1] 0 0x00000051 0x00000052 "File5a" +# CHECK: file_names[ 2] 1 0x00000053 0x00000054 "File5b" # CHECK-NOT: file_names Index: llvm/trunk/test/DebugInfo/X86/dwarfdump-header.s =================================================================== --- llvm/trunk/test/DebugInfo/X86/dwarfdump-header.s +++ llvm/trunk/test/DebugInfo/X86/dwarfdump-header.s @@ -255,11 +255,11 @@ # CHECK-NOT: address_size # CHECK-NOT: seg_select_size # CHECK: max_ops_per_inst: 1 -# CHECK: include_directories[ 1] = 'Directory4a' -# CHECK: include_directories[ 2] = 'Directory4b' +# CHECK: include_directories[ 1] = "Directory4a" +# CHECK: include_directories[ 2] = "Directory4b" # CHECK-NOT: include_directories -# CHECK: file_names[ 1] 1 0x00000041 0x00000042 File4a{{$}} -# CHECK: file_names[ 2] 0 0x00000043 0x00000044 File4b{{$}} +# CHECK: file_names[ 1] 1 0x00000041 0x00000042 "File4a" +# CHECK: file_names[ 2] 0 0x00000043 0x00000044 "File4b" # CHECK-NOT: file_names # DWARF v5 line-table header. @@ -324,12 +324,14 @@ # CHECK: address_size: 8 # CHECK: seg_select_size: 0 # CHECK: max_ops_per_inst: 1 -# CHECK: include_directories[ 0] = 'Directory5a' -# CHECK: include_directories[ 1] = 'Directory5b' +# Mixing .debug_str (here) with .debug_line_str (in file_names) is not +# something a producer would do, but both are legal and we want to test them. +# CHECK: include_directories[ 0] = .debug_str[0x00000045] = "Directory5a" +# CHECK: include_directories[ 1] = .debug_str[0x00000051] = "Directory5b" # CHECK-NOT: include_directories # CHECK: MD5 Checksum -# CHECK: file_names[ 1] 0 00112233445566778899aabbccddeeff File5a{{$}} -# CHECK: file_names[ 2] 1 ffeeddccbbaa99887766554433221100 File5b{{$}} +# CHECK: file_names[ 1] 0 00112233445566778899aabbccddeeff .debug_line_str[0x00000000] = "File5a" +# CHECK: file_names[ 2] 1 ffeeddccbbaa99887766554433221100 .debug_line_str[0x00000007] = "File5b" # CHECK-NOT: file_names .section .debug_line_str,"MS",@progbits,1 @@ -405,9 +407,9 @@ # CHECK: address_size: 8 # CHECK: seg_select_size: 0 # CHECK: max_ops_per_inst: 1 -# CHECK: include_directories[ 0] = 'DWODirectory5a' -# CHECK: include_directories[ 1] = 'DWODirectory5b' +# CHECK: include_directories[ 0] = .debug_str[0x0000003d] = "DWODirectory5a" +# CHECK: include_directories[ 1] = .debug_str[0x0000004c] = "DWODirectory5b" # CHECK-NOT: include_directories -# CHECK: file_names[ 1] 0 0x00000015 0x00000025 DWOFile5a{{$}} -# CHECK: file_names[ 2] 1 0x00000035 0x00000045 DWOFile5b{{$}} +# CHECK: file_names[ 1] 0 0x00000015 0x00000025 "DWOFile5a" +# CHECK: file_names[ 2] 1 0x00000035 0x00000045 "DWOFile5b" # CHECK-NOT: file_names Index: llvm/trunk/test/DebugInfo/X86/dwarfdump-line-dwo.s =================================================================== --- llvm/trunk/test/DebugInfo/X86/dwarfdump-line-dwo.s +++ llvm/trunk/test/DebugInfo/X86/dwarfdump-line-dwo.s @@ -46,8 +46,8 @@ # PART1-NEXT: total_length: 0x0000002e # PART1-NEXT: version: 4 # PART1-NEXT: prologue_length: 0x00000028 -# PART1: include_directories[ 1] = 'Directory1' -# PART1: file_names[ 1] {{.*}} File1 +# PART1: include_directories[ 1] = "Directory1" +# PART1: file_names[ 1] {{.*}} "File1" # Second line table. LH_2_start: @@ -92,6 +92,6 @@ # PART2-NEXT: version: 4 # PART2-NEXT: prologue_length: 0x00000022 # PART2-NOT: prologue: -# PART2: include_directories[ 1] = 'Dir2' -# PART2: file_names[ 1] {{.*}} File2 +# PART2: include_directories[ 1] = "Dir2" +# PART2: file_names[ 1] {{.*}} "File2" # PART2-NOT: prologue: Index: llvm/trunk/test/DebugInfo/X86/dwarfdump-line-only.s =================================================================== --- llvm/trunk/test/DebugInfo/X86/dwarfdump-line-only.s +++ llvm/trunk/test/DebugInfo/X86/dwarfdump-line-only.s @@ -91,10 +91,10 @@ # CHECK: address_size: 8 # CHECK: seg_select_size: 0 # CHECK: max_ops_per_inst: 1 -# CHECK: include_directories[ 0] = 'Directory1' -# CHECK: include_directories[ 1] = 'Directory2' +# CHECK: include_directories[ 0] = .debug_str[0x00000000] = "Directory1" +# CHECK: include_directories[ 1] = .debug_str[0x0000000b] = "Directory2" # CHECK-NOT: include_directories -# CHECK: file_names[ 1] 1 0x00000051 0x00000052 File1{{$}} -# CHECK: file_names[ 2] 0 0x00000053 0x00000054 File2{{$}} +# CHECK: file_names[ 1] 1 0x00000051 0x00000052 .debug_line_str[0x00000000] = "File1" +# CHECK: file_names[ 2] 0 0x00000053 0x00000054 .debug_line_str[0x00000006] = "File2" # CHECK-NOT: file_names # CHECK: 0x0000000000000000 {{.*}} is_stmt end_sequence Index: llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll =================================================================== --- llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll +++ llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll @@ -122,8 +122,8 @@ ; CHECK-LABEL: .debug_line contents: ; CHECK: Line table prologue ; CHECK-NOT: file_names[ -; SINGLE: file_names{{.*}} bar.h -; CHECK: file_names{{.*}} bar.cpp +; SINGLE: file_names{{.*}} "bar.h" +; CHECK: file_names{{.*}} "bar.cpp" ; CHECK-NOT: file_names[ ; FISSION: .debug_line.dwo contents: @@ -133,8 +133,8 @@ ; FISSION-NOT: standard_opcode_lengths ; FISSION-NOT: include_directories ; FISSION-NOT: file_names[ -; FISSION: file_names{{.*}} bar.h -; FISSION: file_names{{.*}} bar.cpp +; FISSION: file_names{{.*}} "bar.h" +; FISSION: file_names{{.*}} "bar.cpp" ; FISSION-NOT: file_names[ ; CHECK-LABEL: .debug_str contents: Index: llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll =================================================================== --- llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll +++ llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll @@ -27,11 +27,11 @@ ; CHECK-NEXT: debug_line[{{.*}}] ; CHECK-NEXT: Line table prologue: ; CHECK-NEXT: total_length: 0x00000038 -; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple.c +; CHECK: file_names[ 1] 0 0x00000000 0x00000000 "simple.c" ; CHECK: debug_line[{{.*}}] ; CHECK-NEXT: Line table prologue: ; CHECK-NEXT: total_length: 0x00000039 -; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple2.c +; CHECK: file_names[ 1] 0 0x00000000 0x00000000 "simple2.c" ; CHECK-NOT: file_names ; DWARF3: .debug_info contents: @@ -46,11 +46,11 @@ ; DWARF3-NEXT: debug_line[{{.*}}] ; DWARF3-NEXT: Line table prologue: ; DWARF3-NEXT: total_length: 0x00000038 -; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple.c +; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 "simple.c" ; DWARF3: debug_line[{{.*}}] ; DWARF3-NEXT: Line table prologue: ; DWARF3-NEXT: total_length: 0x00000039 -; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple2.c +; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 "simple2.c" ; DWARF3-NOT: file_names ; PR15408 Index: llvm/trunk/test/DebugInfo/debugmacinfo.test =================================================================== --- llvm/trunk/test/DebugInfo/debugmacinfo.test +++ llvm/trunk/test/DebugInfo/debugmacinfo.test @@ -22,6 +22,6 @@ TEST_MACINFO: DW_MACINFO_end_file TEST_LINE: .debug_line contents: -TEST_LINE: file_names[ 1] 0 0x00000000 0x00000000 dwarfdump-macro.cc -TEST_LINE: file_names[ 2] 1 0x00000000 0x00000000 dwarfdump-macro-cmd.h -TEST_LINE: file_names[ 3] 0 0x00000000 0x00000000 dwarfdump-macro.h +TEST_LINE: file_names[ 1] 0 0x00000000 0x00000000 "dwarfdump-macro.cc" +TEST_LINE: file_names[ 2] 1 0x00000000 0x00000000 "dwarfdump-macro-cmd.h" +TEST_LINE: file_names[ 3] 0 0x00000000 0x00000000 "dwarfdump-macro.h" Index: llvm/trunk/test/Linker/subprogram-linkonce-weak.ll =================================================================== --- llvm/trunk/test/Linker/subprogram-linkonce-weak.ll +++ llvm/trunk/test/Linker/subprogram-linkonce-weak.ll @@ -147,14 +147,14 @@ ; DW-LABEL: .debug_line contents: ; Check that we have the right things in the line table as well. -; DWLW-LABEL: file_names[{{ *}}1]{{.*}} bar.c +; DWLW-LABEL: file_names[{{ *}}1]{{.*}} "bar.c" ; DWLW: 2 0 1 0 0 is_stmt prologue_end -; DWLW-LABEL: file_names[{{ *}}1]{{.*}} foo.c +; DWLW-LABEL: file_names[{{ *}}1]{{.*}} "foo.c" ; DWLW: 52 0 1 0 0 is_stmt prologue_end ; DWLW-NOT: prologue_end -; DWWL-LABEL: file_names[{{ *}}1]{{.*}} foo.c +; DWWL-LABEL: file_names[{{ *}}1]{{.*}} "foo.c" ; DWWL: 52 0 1 0 0 is_stmt prologue_end -; DWWL-LABEL: file_names[{{ *}}1]{{.*}} bar.c +; DWWL-LABEL: file_names[{{ *}}1]{{.*}} "bar.c" ; DWWL: 2 0 1 0 0 is_stmt prologue_end ; DWWL-NOT: prologue_end Index: llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s =================================================================== --- llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s +++ llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s @@ -54,8 +54,8 @@ // DWARF-DL: .debug_line contents: // DWARF-DL: version: [[DWVER]] // DWARF-DL-5: address_size: 4 -// DWARF-DL-5: include_directories[ 0] = '' -// DWARF-DL: file_names[ 1] {{.*}} +// DWARF-DL-5: include_directories[ 0] = "" +// DWARF-DL: file_names[ 1] {{.*}} "" // 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 Index: llvm/trunk/test/MC/ELF/debug-md5.s =================================================================== --- llvm/trunk/test/MC/ELF/debug-md5.s +++ llvm/trunk/test/MC/ELF/debug-md5.s @@ -9,10 +9,10 @@ # CHECK: debug_line[0x00000000] # CHECK: version: 5 -# CHECK: include_directories[ 0] = '' -# CHECK: include_directories[ 1] = 'dir1' -# CHECK: include_directories[ 2] = 'dir2' +# CHECK: include_directories[ 0] = "" +# CHECK: include_directories[ 1] = "dir1" +# CHECK: include_directories[ 2] = "dir2" # CHECK-NOT: include_directories # CHECK: Dir MD5 Checksum File Name -# CHECK: file_names[ 1] 1 00112233445566778899aabbccddeeff foo -# CHECK: file_names[ 2] 2 ffeeddccbbaa99887766554433221100 bar +# CHECK: file_names[ 1] 1 00112233445566778899aabbccddeeff "foo" +# CHECK: file_names[ 2] 2 ffeeddccbbaa99887766554433221100 "bar" Index: llvm/trunk/test/MC/MachO/gen-dwarf-cpp.s =================================================================== --- llvm/trunk/test/MC/MachO/gen-dwarf-cpp.s +++ llvm/trunk/test/MC/MachO/gen-dwarf-cpp.s @@ -14,13 +14,13 @@ // rdar://9275556 // We check that the source name "t.s" is picked up -// CHECK: include_directories[ 1] = '{{.*[/\\]}}test{{[/\\]}}MC{{[/\\]}}MachO' -// CHECK: include_directories[ 2] = 'inc' +// CHECK: include_directories[ 1] = "{{.*[/\\]}}test{{[/\\]}}MC{{[/\\]}}MachO" +// CHECK: include_directories[ 2] = "inc" // CHECK: Dir Mod Time File Len File Name // CHECK: ---- ---------- ---------- --------------------------- -// CHECK: file_names[ 1] 1 0x00000000 0x00000000 gen-dwarf-cpp.s -// CHECK: file_names[ 2] 0 0x00000000 0x00000000 t.s -// CHECK: file_names[ 3] 2 0x00000000 0x00000000 g.s +// CHECK: file_names[ 1] 1 0x00000000 0x00000000 "gen-dwarf-cpp.s" +// CHECK: file_names[ 2] 0 0x00000000 0x00000000 "t.s" +// CHECK: file_names[ 3] 2 0x00000000 0x00000000 "g.s" // CHECK-NOT: file_names // We check that the source line number 100 is picked up before the "movl" Index: llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s =================================================================== --- llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s +++ llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s @@ -13,5 +13,5 @@ // We check that the source name "foo.S" is picked up // CHECK: Dir Mod Time File Len File Name // CHECK: ---- ---------- ---------- --------------------------- -// CHECK: file_names[ 1] 1 0x00000000 0x00000000 gen-dwarf-macro-cpp.s -// CHECK: file_names[ 2] 0 0x00000000 0x00000000 foo.S +// CHECK: file_names[ 1] 1 0x00000000 0x00000000 "gen-dwarf-macro-cpp.s" +// CHECK: file_names[ 2] 0 0x00000000 0x00000000 "foo.S" Index: llvm/trunk/test/MC/MachO/gen-dwarf.s =================================================================== --- llvm/trunk/test/MC/MachO/gen-dwarf.s +++ llvm/trunk/test/MC/MachO/gen-dwarf.s @@ -111,7 +111,7 @@ // We don't check include_directories as it has a temp path // CHECK: Dir Mod Time File Len File Name // CHECK: ---- ---------- ---------- --------------------------- -// CHECK: file_names[ 1] 1 0x00000000 0x00000000 gen-dwarf.s +// CHECK: file_names[ 1] 1 0x00000000 0x00000000 "gen-dwarf.s" // CHECK: Address Line Column File ISA Discriminator Flags // CHECK: ------------------ ------ ------ ------ --- ------------- ------------- Index: llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test =================================================================== --- llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test +++ llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test @@ -155,7 +155,7 @@ CHECK: .debug_line contents: CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic1.c +CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic1.c" CHECK: Address Line Column File ISA Discriminator Flags CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- CHECK-NEXT: 0x0000000100000ea0 23 0 1 0 0 is_stmt @@ -164,7 +164,7 @@ CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic2.c +CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic2.c" CHECK: Address Line Column File ISA Discriminator Flags CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- CHECK-NEXT: 0x0000000100000ed0 19 0 1 0 0 is_stmt @@ -176,7 +176,7 @@ CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic3.c +CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic3.c" CHECK: Address Line Column File ISA Discriminator Flags CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- CHECK-NEXT: 0x0000000100000f40 16 0 1 0 0 is_stmt Index: llvm/trunk/test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test =================================================================== --- llvm/trunk/test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test +++ llvm/trunk/test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test @@ -140,7 +140,7 @@ CHECK: .debug_line contents: CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic1.c +CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic1.c" CHECK: Address Line Column File ISA Discriminator Flags CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- CHECK-NEXT: 0x0000000100000f40 26 0 1 0 0 is_stmt @@ -150,7 +150,7 @@ CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic2.c +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 @@ -166,7 +166,7 @@ CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic3.c +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 Index: llvm/trunk/test/tools/dsymutil/X86/basic-lto-linking-x86.test =================================================================== --- llvm/trunk/test/tools/dsymutil/X86/basic-lto-linking-x86.test +++ llvm/trunk/test/tools/dsymutil/X86/basic-lto-linking-x86.test @@ -152,14 +152,14 @@ CHECK: .debug_line contents CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic1.c +CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic1.c" 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-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic2.c" 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 @@ -168,7 +168,7 @@ CHECK: Dir Mod Time File Len File Name CHECK-NEXT: ---- ---------- ---------- --------------------------- -CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 basic3.c +CHECK-NEXT: file_names[ 1] 0 0x00000000 0x00000000 "basic3.c" 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