[llvm] r326762 - Revert "[DWARFv5] Emit file 0 to the line table."
Paul Robinson via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 5 19:15:22 PST 2018
Author: probinson
Date: Mon Mar 5 19:15:21 2018
New Revision: 326762
URL: http://llvm.org/viewvc/llvm-project?rev=326762&view=rev
Log:
Revert "[DWARFv5] Emit file 0 to the line table."
Caused an asan failure.
This reverts commit d54883f081186cdcce74e6f98cfc0438579ec019.
aka r326758
Removed:
llvm/trunk/test/MC/ELF/dwarf-file0.s
Modified:
llvm/trunk/include/llvm/MC/MCContext.h
llvm/trunk/include/llvm/MC/MCDwarf.h
llvm/trunk/include/llvm/MC/MCStreamer.h
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
llvm/trunk/lib/MC/MCAsmStreamer.cpp
llvm/trunk/lib/MC/MCDwarf.cpp
llvm/trunk/lib/MC/MCParser/AsmParser.cpp
llvm/trunk/lib/MC/MCStreamer.cpp
llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll
llvm/trunk/test/CodeGen/Generic/dwarf-source.ll
llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll
llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll
llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s
llvm/trunk/test/MC/ELF/debug-file-options.s
llvm/trunk/test/MC/ELF/debug-md5.s
llvm/trunk/test/MC/ELF/debug-source.s
llvm/trunk/tools/llvm-mc/llvm-mc.cpp
Modified: llvm/trunk/include/llvm/MC/MCContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCContext.h?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCContext.h (original)
+++ llvm/trunk/include/llvm/MC/MCContext.h Mon Mar 5 19:15:21 2018
@@ -537,13 +537,8 @@ namespace llvm {
DwarfCompileUnitID = CUIndex;
}
- /// Specifies the "root" file and directory of the compilation unit.
- /// These are "file 0" and "directory 0" in DWARF v5.
- void setMCLineTableRootFile(unsigned CUID, StringRef CompilationDir,
- StringRef Filename, MD5::MD5Result *Checksum,
- Optional<StringRef> Source) {
- getMCDwarfLineTable(CUID).setRootFile(CompilationDir, Filename, Checksum,
- Source);
+ void setMCLineTableCompilationDir(unsigned CUID, StringRef CompilationDir) {
+ getMCDwarfLineTable(CUID).setCompilationDir(CompilationDir);
}
/// Saves the information from the currently parsed dwarf .loc directive
Modified: llvm/trunk/include/llvm/MC/MCDwarf.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCDwarf.h?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCDwarf.h (original)
+++ llvm/trunk/include/llvm/MC/MCDwarf.h Mon Mar 5 19:15:21 2018
@@ -214,7 +214,6 @@ struct MCDwarfLineTableHeader {
SmallVector<MCDwarfFile, 3> MCDwarfFiles;
StringMap<unsigned> SourceIdMap;
StringRef CompilationDir;
- MCDwarfFile RootFile;
bool HasMD5 = false;
bool HasSource = false;
@@ -242,17 +241,8 @@ class MCDwarfDwoLineTable {
MCDwarfLineTableHeader Header;
public:
- void maybeSetRootFile(StringRef Directory, StringRef FileName,
- MD5::MD5Result *Checksum, Optional<StringRef> Source) {
- if (!Header.RootFile.Name.empty())
- return;
- Header.CompilationDir = Directory;
- Header.RootFile.Name = FileName;
- Header.RootFile.DirIndex = 0;
- Header.RootFile.Checksum = Checksum;
- Header.RootFile.Source = Source;
- Header.HasMD5 = (Checksum != nullptr);
- Header.HasSource = Source.hasValue();
+ void setCompilationDir(StringRef CompilationDir) {
+ Header.CompilationDir = CompilationDir;
}
unsigned getFile(StringRef Directory, StringRef FileName,
@@ -286,17 +276,6 @@ public:
FileNumber));
}
- void setRootFile(StringRef Directory, StringRef FileName,
- MD5::MD5Result *Checksum, Optional<StringRef> Source) {
- Header.CompilationDir = Directory;
- Header.RootFile.Name = FileName;
- Header.RootFile.DirIndex = 0;
- Header.RootFile.Checksum = Checksum;
- Header.RootFile.Source = Source;
- Header.HasMD5 = (Checksum != nullptr);
- Header.HasSource = Source.hasValue();
- }
-
MCSymbol *getLabel() const {
return Header.Label;
}
@@ -305,6 +284,10 @@ public:
Header.Label = Label;
}
+ void setCompilationDir(StringRef CompilationDir) {
+ Header.CompilationDir = CompilationDir;
+ }
+
const SmallVectorImpl<std::string> &getMCDwarfDirs() const {
return Header.MCDwarfDirs;
}
Modified: llvm/trunk/include/llvm/MC/MCStreamer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCStreamer.h?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCStreamer.h (original)
+++ llvm/trunk/include/llvm/MC/MCStreamer.h Mon Mar 5 19:15:21 2018
@@ -774,12 +774,6 @@ public:
MD5::MD5Result *Checksum = nullptr, Optional<StringRef> Source = None,
unsigned CUID = 0);
- /// Specify the "root" file of the compilation, using the ".file 0" extension.
- virtual void emitDwarfFile0Directive(StringRef Directory, StringRef Filename,
- MD5::MD5Result *Checksum,
- Optional<StringRef> Source,
- unsigned CUID = 0);
-
/// \brief This implements the DWARF2 '.loc fileno lineno ...' assembler
/// directive.
virtual void EmitDwarfLocDirective(unsigned FileNo, unsigned Line,
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Mon Mar 5 19:15:21 2018
@@ -476,9 +476,8 @@ DwarfDebug::getOrCreateDwarfCompileUnit(
// explicitly describe the directory of all files, never relying on the
// compilation directory.
if (!Asm->OutStreamer->hasRawTextSupport() || SingleCU)
- Asm->OutStreamer->emitDwarfFile0Directive(
- CompilationDir, FN, NewCU.getMD5AsBytes(DIUnit->getFile()),
- DIUnit->getSource(), NewCU.getUniqueID());
+ Asm->OutStreamer->getContext().setMCLineTableCompilationDir(
+ NewCU.getUniqueID(), CompilationDir);
StringRef Producer = DIUnit->getProducer();
StringRef Flags = DIUnit->getFlags();
@@ -2111,10 +2110,8 @@ void DwarfDebug::emitDebugStrDWO() {
MCDwarfDwoLineTable *DwarfDebug::getDwoLineTable(const DwarfCompileUnit &CU) {
if (!useSplitDwarf())
return nullptr;
- const DICompileUnit *DIUnit = CU.getCUNode();
- SplitTypeUnitFileTable.maybeSetRootFile(
- DIUnit->getDirectory(), DIUnit->getFilename(),
- CU.getMD5AsBytes(DIUnit->getFile()), DIUnit->getSource());
+ if (SingleCU)
+ SplitTypeUnitFileTable.setCompilationDir(CU.getCUNode()->getDirectory());
return &SplitTypeUnitFileTable;
}
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Mon Mar 5 19:15:21 2018
@@ -284,7 +284,7 @@ void DwarfUnit::addSectionOffset(DIE &Di
addUInt(Die, Attribute, dwarf::DW_FORM_data4, Integer);
}
-MD5::MD5Result *DwarfUnit::getMD5AsBytes(const DIFile *File) const {
+MD5::MD5Result *DwarfUnit::getMD5AsBytes(const DIFile *File) {
assert(File);
Optional<DIFile::ChecksumInfo<StringRef>> Checksum = File->getChecksum();
if (!Checksum || Checksum->Kind != DIFile::CSK_MD5)
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Mon Mar 5 19:15:21 2018
@@ -306,10 +306,6 @@ public:
const MCSymbol *Label,
const MCSymbol *Sec);
- /// If the \p File has an MD5 checksum, return it as an MD5Result
- /// allocated in the MCContext.
- MD5::MD5Result *getMD5AsBytes(const DIFile *File) const;
-
protected:
~DwarfUnit();
@@ -320,6 +316,10 @@ protected:
/// create a new ID and insert it in the line table.
virtual unsigned getOrCreateSourceID(const DIFile *File) = 0;
+ /// If the \p File has an MD5 checksum, return it as an MD5Result
+ /// allocated in the MCContext.
+ MD5::MD5Result *getMD5AsBytes(const DIFile *File);
+
/// Look in the DwarfDebug map for the MDNode that corresponds to the
/// reference.
template <typename T> T *resolve(TypedDINodeRef<T> Ref) const {
Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Mon Mar 5 19:15:21 2018
@@ -218,10 +218,6 @@ public:
MD5::MD5Result *Checksum = 0,
Optional<StringRef> Source = None,
unsigned CUID = 0) override;
- void emitDwarfFile0Directive(StringRef Directory, StringRef Filename,
- MD5::MD5Result *Checksum,
- Optional<StringRef> Source,
- unsigned CUID = 0) override;
void EmitDwarfLocDirective(unsigned FileNo, unsigned Line,
unsigned Column, unsigned Flags,
unsigned Isa, unsigned Discriminator,
@@ -1080,10 +1076,21 @@ void MCAsmStreamer::EmitFileDirective(St
EmitEOL();
}
-void printDwarfFileDirective(unsigned FileNo, StringRef Directory,
- StringRef Filename, MD5::MD5Result *Checksum,
- Optional<StringRef> Source, bool UseDwarfDirectory,
- raw_svector_ostream &OS) {
+Expected<unsigned> MCAsmStreamer::tryEmitDwarfFileDirective(
+ unsigned FileNo, StringRef Directory, StringRef Filename,
+ MD5::MD5Result *Checksum, Optional<StringRef> Source, unsigned CUID) {
+ assert(CUID == 0);
+
+ MCDwarfLineTable &Table = getContext().getMCDwarfLineTable(CUID);
+ unsigned NumFiles = Table.getMCDwarfFiles().size();
+ Expected<unsigned> FileNoOrErr =
+ Table.tryGetFile(Directory, Filename, Checksum, Source, FileNo);
+ if (!FileNoOrErr)
+ return FileNoOrErr.takeError();
+ FileNo = FileNoOrErr.get();
+ if (NumFiles == Table.getMCDwarfFiles().size())
+ return FileNo;
+
SmallString<128> FullPathName;
if (!UseDwarfDirectory && !Directory.empty()) {
@@ -1097,68 +1104,31 @@ void printDwarfFileDirective(unsigned Fi
}
}
- OS << "\t.file\t" << FileNo << ' ';
+ SmallString<128> Str;
+ raw_svector_ostream OS1(Str);
+ OS1 << "\t.file\t" << FileNo << ' ';
if (!Directory.empty()) {
- PrintQuotedString(Directory, OS);
- OS << ' ';
+ PrintQuotedString(Directory, OS1);
+ OS1 << ' ';
}
- PrintQuotedString(Filename, OS);
+ PrintQuotedString(Filename, OS1);
if (Checksum) {
- OS << " md5 ";
- PrintQuotedString(Checksum->digest(), OS);
+ OS1 << " md5 ";
+ PrintQuotedString(Checksum->digest(), OS1);
}
if (Source) {
- OS << " source ";
- PrintQuotedString(*Source, OS);
+ OS1 << " source ";
+ PrintQuotedString(*Source, OS1);
}
-}
-
-Expected<unsigned> MCAsmStreamer::tryEmitDwarfFileDirective(
- unsigned FileNo, StringRef Directory, StringRef Filename,
- MD5::MD5Result *Checksum, Optional<StringRef> Source, unsigned CUID) {
- assert(CUID == 0 && "multiple CUs not supported by MCAsmStreamer");
-
- MCDwarfLineTable &Table = getContext().getMCDwarfLineTable(CUID);
- unsigned NumFiles = Table.getMCDwarfFiles().size();
- Expected<unsigned> FileNoOrErr =
- Table.tryGetFile(Directory, Filename, Checksum, Source, FileNo);
- if (!FileNoOrErr)
- return FileNoOrErr.takeError();
- FileNo = FileNoOrErr.get();
- if (NumFiles == Table.getMCDwarfFiles().size())
- return FileNo;
-
- SmallString<128> Str;
- raw_svector_ostream OS1(Str);
- printDwarfFileDirective(FileNo, Directory, Filename, Checksum, Source,
- UseDwarfDirectory, OS1);
-
- if (MCTargetStreamer *TS = getTargetStreamer())
+ if (MCTargetStreamer *TS = getTargetStreamer()) {
TS->emitDwarfFileDirective(OS1.str());
- else
+ } else {
EmitRawText(OS1.str());
+ }
return FileNo;
}
-void MCAsmStreamer::emitDwarfFile0Directive(StringRef Directory,
- StringRef Filename,
- MD5::MD5Result *Checksum,
- Optional<StringRef> Source,
- unsigned CUID) {
- assert(CUID == 0);
-
- SmallString<128> Str;
- raw_svector_ostream OS1(Str);
- printDwarfFileDirective(0, Directory, Filename, Checksum, Source,
- UseDwarfDirectory, OS1);
-
- if (MCTargetStreamer *TS = getTargetStreamer())
- TS->emitDwarfFileDirective(OS1.str());
- else
- EmitRawText(OS1.str());
-}
-
void MCAsmStreamer::EmitDwarfLocDirective(unsigned FileNo, unsigned Line,
unsigned Column, unsigned Flags,
unsigned Isa,
Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Mon Mar 5 19:15:21 2018
@@ -346,34 +346,6 @@ void MCDwarfLineTableHeader::emitV2FileD
MCOS->EmitIntValue(0, 1); // Terminate the file list.
}
-static void emitOneV5FileEntry(MCStreamer *MCOS, const MCDwarfFile &DwarfFile,
- bool HasMD5, bool HasSource,
- Optional<MCDwarfLineStr> &LineStr) {
- assert(!DwarfFile.Name.empty());
- if (LineStr)
- LineStr->emitRef(MCOS, DwarfFile.Name);
- else {
- MCOS->EmitBytes(DwarfFile.Name); // FileName and...
- MCOS->EmitBytes(StringRef("\0", 1)); // its null terminator.
- }
- MCOS->EmitULEB128IntValue(DwarfFile.DirIndex); // Directory number.
- if (HasMD5) {
- MD5::MD5Result *Cksum = DwarfFile.Checksum;
- MCOS->EmitBinaryData(
- StringRef(reinterpret_cast<const char *>(Cksum->Bytes.data()),
- Cksum->Bytes.size()));
- }
- if (HasSource) {
- if (LineStr)
- LineStr->emitRef(MCOS, DwarfFile.Source.getValueOr(StringRef()));
- else {
- MCOS->EmitBytes(
- DwarfFile.Source.getValueOr(StringRef())); // Source and...
- MCOS->EmitBytes(StringRef("\0", 1)); // its null terminator.
- }
- }
-}
-
void MCDwarfLineTableHeader::emitV5FileDirTables(
MCStreamer *MCOS, Optional<MCDwarfLineStr> &LineStr) const {
// The directory format, which is just a list of the directory paths. In a
@@ -422,12 +394,33 @@ void MCDwarfLineTableHeader::emitV5FileD
MCOS->EmitULEB128IntValue(LineStr ? dwarf::DW_FORM_line_strp
: dwarf::DW_FORM_string);
}
- // Then the counted list of files. The root file is file #0, then emit the
- // files as provide by .file directives.
- MCOS->EmitULEB128IntValue(MCDwarfFiles.size());
- emitOneV5FileEntry(MCOS, RootFile, HasMD5, HasSource, LineStr);
- for (unsigned i = 1; i < MCDwarfFiles.size(); ++i)
- emitOneV5FileEntry(MCOS, MCDwarfFiles[i], HasMD5, HasSource, LineStr);
+ // Then the list of file names. These start at 1.
+ MCOS->EmitULEB128IntValue(MCDwarfFiles.size() - 1);
+ for (unsigned i = 1; i < MCDwarfFiles.size(); ++i) {
+ assert(!MCDwarfFiles[i].Name.empty());
+ if (LineStr)
+ LineStr->emitRef(MCOS, MCDwarfFiles[i].Name);
+ else {
+ MCOS->EmitBytes(MCDwarfFiles[i].Name); // FileName and...
+ MCOS->EmitBytes(StringRef("\0", 1)); // its null terminator.
+ }
+ MCOS->EmitULEB128IntValue(MCDwarfFiles[i].DirIndex); // Directory number.
+ if (HasMD5) {
+ MD5::MD5Result *Cksum = MCDwarfFiles[i].Checksum;
+ MCOS->EmitBinaryData(
+ StringRef(reinterpret_cast<const char *>(Cksum->Bytes.data()),
+ Cksum->Bytes.size()));
+ }
+ if (HasSource) {
+ if (LineStr)
+ LineStr->emitRef(MCOS, MCDwarfFiles[i].Source.getValueOr(StringRef()));
+ else {
+ MCOS->EmitBytes(
+ MCDwarfFiles[i].Source.getValueOr(StringRef())); // Source and...
+ MCOS->EmitBytes(StringRef("\0", 1)); // its null terminator.
+ }
+ }
+ }
}
std::pair<MCSymbol *, MCSymbol *>
Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Mon Mar 5 19:15:21 2018
@@ -3258,8 +3258,8 @@ bool AsmParser::parseDirectiveFile(SMLoc
FileNumber = getTok().getIntVal();
Lex();
- if (FileNumber < 0)
- return TokError("negative file number");
+ if (FileNumber < 1)
+ return TokError("file number less than one");
}
std::string Path = getTok().getString();
@@ -3338,8 +3338,6 @@ bool AsmParser::parseDirectiveFile(SMLoc
// we turn off -g option, directly use the existing debug info instead.
if (getContext().getGenDwarfForAssembly())
getContext().setGenDwarfForAssembly(false);
- else if (FileNumber == 0)
- getStreamer().emitDwarfFile0Directive(Directory, Filename, CKMem, Source);
else {
Expected<unsigned> FileNumOrErr = getStreamer().tryEmitDwarfFileDirective(
FileNumber, Directory, Filename, CKMem, Source);
Modified: llvm/trunk/lib/MC/MCStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCStreamer.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCStreamer.cpp Mon Mar 5 19:15:21 2018
@@ -199,15 +199,6 @@ MCStreamer::tryEmitDwarfFileDirective(un
Source, CUID);
}
-void MCStreamer::emitDwarfFile0Directive(StringRef Directory,
- StringRef Filename,
- MD5::MD5Result *Checksum,
- Optional<StringRef> Source,
- unsigned CUID) {
- getContext().setMCLineTableRootFile(CUID, Directory, Filename, Checksum,
- Source);
-}
-
void MCStreamer::EmitDwarfLocDirective(unsigned FileNo, unsigned Line,
unsigned Column, unsigned Flags,
unsigned Isa,
Modified: llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll (original)
+++ llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll Mon Mar 5 19:15:21 2018
@@ -8,25 +8,28 @@
; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM
; RUN: %llc_dwarf -dwarf-version 5 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM
; RUN: %llc_dwarf -dwarf-version 4 -filetype=obj -o %t4.o %s
-; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ
+; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ-4
; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s
-; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefixes=OBJ,OBJ-5
+; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefix=OBJ-5
-; ASM: .file 0 "[[COMPDIR:.*]]{{[/\\]}}t.c" md5 "00000000000000000000000000000000"
-; ASM: .file 1 "[[COMPDIR]]{{[/\\]}}t1.h" md5 "11111111111111111111111111111111"
-; ASM: .file 2 "[[COMPDIR]]{{[/\\]}}t2.h" md5 "22222222222222222222222222222222"
+; FIXME: Need to convey the MD5 for the primary source file.
+; ASM: .file 1 ".{{/|\\\\}}t1.h" md5 "11111111111111111111111111111111"
+; ASM: .file 2 ".{{/|\\\\}}t2.h" md5 "22222222222222222222222222222222"
+
+; OBJ-4: file_names[ 1]:
+; OBJ-4-NEXT: name: "t1.h"
+; OBJ-4-NEXT: dir_index: 1
+; OBJ-4: file_names[ 2]:
+; OBJ-4-NEXT: name: "t2.h"
+; OBJ-4-NEXT: dir_index: 1
; OBJ-5: file_names[ 0]:
-; OBJ-5-NEXT: name: "t.c"
-; OBJ-5-NEXT: dir_index: 0
-; OBJ-5-NEXT: md5_checksum: 00000000000000000000000000000000
-; OBJ: file_names[ 1]:
-; OBJ-NEXT: name: "t1.h"
-; OBJ-NEXT: dir_index: 0
+; OBJ-5-NEXT: name: "t1.h"
+; OBJ-5-NEXT: dir_index: 1
; OBJ-5-NEXT: md5_checksum: 11111111111111111111111111111111
-; OBJ: file_names[ 2]:
-; OBJ-NEXT: name: "t2.h"
-; OBJ-NEXT: dir_index: 0
+; OBJ-5: file_names[ 1]:
+; OBJ-5-NEXT: name: "t2.h"
+; OBJ-5-NEXT: dir_index: 1
; OBJ-5-NEXT: md5_checksum: 22222222222222222222222222222222
; ModuleID = 't.c'
@@ -47,9 +50,9 @@ source_filename = "t.c"
!5 = !{!0, !6}
!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())
!7 = distinct !DIGlobalVariable(name: "t2", scope: !2, file: !8, line: 1, type: !9, isLocal: false, isDefinition: true)
-!8 = !DIFile(filename: "t2.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "22222222222222222222222222222222")
+!8 = !DIFile(filename: "./t2.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "22222222222222222222222222222222")
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
-!10 = !DIFile(filename: "t1.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "11111111111111111111111111111111")
+!10 = !DIFile(filename: "./t1.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "11111111111111111111111111111111")
!11 = !{i32 2, !"Dwarf Version", i32 4}
!12 = !{i32 2, !"Debug Info Version", i32 3}
!13 = !{i32 1, !"wchar_size", i32 4}
Modified: llvm/trunk/test/CodeGen/Generic/dwarf-source.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/dwarf-source.ll?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Generic/dwarf-source.ll (original)
+++ llvm/trunk/test/CodeGen/Generic/dwarf-source.ll Mon Mar 5 19:15:21 2018
@@ -8,27 +8,30 @@
; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM
; RUN: %llc_dwarf -dwarf-version 5 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM
; RUN: %llc_dwarf -dwarf-version 4 -filetype=obj -o %t4.o %s
-; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefixes=OBJ,OBJ-4
+; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ-4
; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s
-; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefixes=OBJ,OBJ-5
+; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefix=OBJ-5
-; ASM: .file 0 "[[COMPDIR:.*]]{{[/\\]}}t.c" source "00000000000000000000000000000000"
-; ASM: .file 1 "[[COMPDIR]]{{[/\\]}}t1.h" source "11111111111111111111111111111111"
-; ASM: .file 2 "[[COMPDIR]]{{[/\\]}}t2.h" source "22222222222222222222222222222222"
+; FIXME: Need to convey the source for the primary source file.
+; ASM: .file 1 ".{{/|\\\\}}t1.h" source "11111111111111111111111111111111"
+; ASM: .file 2 ".{{/|\\\\}}t2.h" source "22222222222222222222222222222222"
+
+; OBJ-4: file_names[ 1]:
+; OBJ-4-NEXT: name: "t1.h"
+; OBJ-4-NEXT: dir_index: 1
+; OBJ-4-NOT: 11111111111111111111111111111111
+; OBJ-4: file_names[ 2]:
+; OBJ-4-NEXT: name: "t2.h"
+; OBJ-4-NEXT: dir_index: 1
+; OBJ-4-NOT: 22222222222222222222222222222222
; OBJ-5: file_names[ 0]:
-; OBJ-5-NEXT: name: "t.c"
-; OBJ-5-NEXT: dir_index: 0
-; OBJ-5-NEXT: source: "00000000000000000000000000000000"
-; OBJ: file_names[ 1]:
-; OBJ-NEXT: name: "t1.h"
-; OBJ-NEXT: dir_index: 0
-; OBJ-4-NOT: 11111111111111111111111111111111
+; OBJ-5-NEXT: name: "t1.h"
+; OBJ-5-NEXT: dir_index: 1
; OBJ-5-NEXT: source: "11111111111111111111111111111111"
-; OBJ: file_names[ 2]:
-; OBJ-NEXT: name: "t2.h"
-; OBJ-NEXT: dir_index: 0
-; OBJ-4-NOT: 22222222222222222222222222222222
+; OBJ-5: file_names[ 1]:
+; OBJ-5-NEXT: name: "t2.h"
+; OBJ-5-NEXT: dir_index: 1
; OBJ-5-NEXT: source: "22222222222222222222222222222222"
; ModuleID = 't.c'
@@ -49,9 +52,9 @@ source_filename = "t.c"
!5 = !{!0, !6}
!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())
!7 = distinct !DIGlobalVariable(name: "t2", scope: !2, file: !8, line: 1, type: !9, isLocal: false, isDefinition: true)
-!8 = !DIFile(filename: "t2.h", directory: "/test", source: "22222222222222222222222222222222")
+!8 = !DIFile(filename: "./t2.h", directory: "/test", source: "22222222222222222222222222222222")
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
-!10 = !DIFile(filename: "t1.h", directory: "/test", source: "11111111111111111111111111111111")
+!10 = !DIFile(filename: "./t1.h", directory: "/test", source: "11111111111111111111111111111111")
!11 = !{i32 2, !"Dwarf Version", i32 4}
!12 = !{i32 2, !"Debug Info Version", i32 3}
!13 = !{i32 1, !"wchar_size", i32 4}
Modified: llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll Mon Mar 5 19:15:21 2018
@@ -2,7 +2,7 @@
; Verify that the file name is relative to the directory.
; rdar://problem/8884898
-; CHECK: file 1 "/Users/manav/one/two" "simple.c"
+; CHECK: file 1 "simple.c"
declare i32 @printf(i8*, ...) nounwind
Modified: llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll Mon Mar 5 19:15:21 2018
@@ -22,7 +22,7 @@
; CHECK: .file 2 "B.asm"
; CHECK: .loc 1 111
; CHECK: .loc 2 222
-; CHECK: .file 3 "/{{.*}}/test.c"
+; CHECK: .file 3 "test.c"
; CHECK: .loc 3 14 0
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
Modified: llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s (original)
+++ llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s Mon Mar 5 19:15:21 2018
@@ -54,9 +54,9 @@ b:
// DWARF-DL: .debug_line contents:
// DWARF-DL: version: [[DWVER]]
// DWARF-DL-5: address_size: 4
-// DWARF-DL-5: include_directories[ 0] = "/tmp"
+// DWARF-DL-5: include_directories[ 0] = ""
// DWARF-DL: file_names[ [[DWFILE]]]:
-// DWARF-DL: name: "{{(<stdin>|-)}}"
+// DWARF-DL: name: "<stdin>"
// 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
Modified: llvm/trunk/test/MC/ELF/debug-file-options.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-file-options.s?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-file-options.s (original)
+++ llvm/trunk/test/MC/ELF/debug-file-options.s Mon Mar 5 19:15:21 2018
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -filetype=obj %s -o -| llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s -DFILE0NAME=%s
+// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -filetype=obj %s -o -| llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s
// Test combinations of options to the .file directive.
@@ -11,32 +11,25 @@
# CHECK: debug_line[0x00000000]
# CHECK: version: 5
-# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "{{.*}}"
+# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = ""
# CHECK: include_directories[ 1] = .debug_line_str[0x[[DIR1:[0-9a-f]+]]] = "dir1"
# CHECK: include_directories[ 2] = .debug_line_str[0x[[DIR2:[0-9a-f]+]]] = "dir2"
# CHECK-NOT: include_directories
# CHECK: file_names[ 0]:
-# CHECK-NEXT: name: .debug_line_str[0x[[FILE0:[0-9a-f]+]]] = "[[FILE0NAME]]"
-# CHECK-NEXT: dir_index: 0
-# CHECK-NEXT: md5_checksum:
-# CHECK-NEXT: source: .debug_line_str[0x[[FILE0SRC:[0-9a-f]+]]] = ""
-# CHECK: file_names[ 1]:
# CHECK-NEXT: name: .debug_line_str[0x[[FILE1:[0-9a-f]+]]] = "foo"
# CHECK-NEXT: dir_index: 1
# CHECK-NEXT: md5_checksum: ee87e05688663173cd6043a3a15bba6e
# CHECK-NEXT: source: .debug_line_str[0x[[FILE1SRC:[0-9a-f]+]]] = "void foo() {}"
-# CHECK: file_names[ 2]:
+# CHECK: file_names[ 1]:
# CHECK-NEXT: name: .debug_line_str[0x[[FILE2:[0-9a-f]+]]] = "bar"
# CHECK-NEXT: dir_index: 2
# CHECK-NEXT: md5_checksum: 816225a0c90ca8948b70eb58be4d522f
# CHECK-NEXT: source: .debug_line_str[0x[[FILE2SRC:[0-9a-f]+]]] = "void bar() {}"
# CHECK: .debug_line_str contents:
-# CHECK-NEXT: 0x[[DIR0]]: "{{.*}}"
+# CHECK-NEXT: 0x[[DIR0]]: ""
# CHECK-NEXT: 0x[[DIR1]]: "dir1"
# CHECK-NEXT: 0x[[DIR2]]: "dir2"
-# CHECK-NEXT: 0x[[FILE0]]: "[[FILE0NAME]]"
-# CHECK-NEXT: 0x[[FILE0SRC]]: ""
# CHECK-NEXT: 0x[[FILE1]]: "foo"
# CHECK-NEXT: 0x[[FILE1SRC]]: "void foo() {}"
# CHECK-NEXT: 0x[[FILE2]]: "bar"
Modified: llvm/trunk/test/MC/ELF/debug-md5.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-md5.s?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-md5.s (original)
+++ llvm/trunk/test/MC/ELF/debug-md5.s Mon Mar 5 19:15:21 2018
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -fdebug-compilation-dir=/tmp -filetype=obj %s -o - | llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s -DROOTFILE=%s
+// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -filetype=obj %s -o - | llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s
.file 1 "dir1/foo" md5 "00112233445566778899aabbccddeeff"
.file 2 "dir2" "bar" md5 "ffeeddccbbaa99887766554433221100"
@@ -9,26 +9,22 @@
# CHECK: debug_line[0x00000000]
# CHECK: version: 5
-# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "/tmp"
+# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = ""
# CHECK: include_directories[ 1] = .debug_line_str[0x[[DIR1:[0-9a-f]+]]] = "dir1"
# CHECK: include_directories[ 2] = .debug_line_str[0x[[DIR2:[0-9a-f]+]]] = "dir2"
# CHECK-NOT: include_directories
# CHECK: file_names[ 0]:
-# CHECK-NEXT: name: .debug_line_str[0x[[FILE0:[0-9a-f]+]]] = "[[ROOTFILE]]"
-# CHECK-NEXT: dir_index: 0
-# CHECK: file_names[ 1]:
# CHECK-NEXT: name: .debug_line_str[0x[[FILE1:[0-9a-f]+]]] = "foo"
# CHECK-NEXT: dir_index: 1
# CHECK-NEXT: md5_checksum: 00112233445566778899aabbccddeeff
-# CHECK: file_names[ 2]:
+# CHECK: file_names[ 1]:
# CHECK-NEXT: name: .debug_line_str[0x[[FILE2:[0-9a-f]+]]] = "bar"
# CHECK-NEXT: dir_index: 2
# CHECK-NEXT: md5_checksum: ffeeddccbbaa99887766554433221100
# CHECK: .debug_line_str contents:
-# CHECK-NEXT: 0x[[DIR0]]: "/tmp"
+# CHECK-NEXT: 0x[[DIR0]]: ""
# CHECK-NEXT: 0x[[DIR1]]: "dir1"
# CHECK-NEXT: 0x[[DIR2]]: "dir2"
-# CHECK-NEXT: 0x[[FILE0]]: "[[ROOTFILE]]"
# CHECK-NEXT: 0x[[FILE1]]: "foo"
# CHECK-NEXT: 0x[[FILE2]]: "bar"
Modified: llvm/trunk/test/MC/ELF/debug-source.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-source.s?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-source.s (original)
+++ llvm/trunk/test/MC/ELF/debug-source.s Mon Mar 5 19:15:21 2018
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -filetype=obj %s -o -| llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s -DFILE0NAME=%s
+// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -filetype=obj %s -o -| llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s
.file 1 "dir1/foo" source "void foo() {}"
.file 2 "dir2" "bar" source "void bar()\n{\n}"
@@ -9,29 +9,23 @@
# CHECK: debug_line[0x00000000]
# CHECK: version: 5
-# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "{{.*}}"
+# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = ""
# CHECK: include_directories[ 1] = .debug_line_str[0x[[DIR1:[0-9a-f]+]]] = "dir1"
# CHECK: include_directories[ 2] = .debug_line_str[0x[[DIR2:[0-9a-f]+]]] = "dir2"
# CHECK-NOT: include_directories
# CHECK: file_names[ 0]:
-# CHECK-NEXT: name: .debug_line_str[0x[[FILE0:[0-9a-f]+]]] = "[[FILE0NAME]]"
-# CHECK-NEXT: dir_index: 0
-# CHECK-NEXT: source: .debug_line_str[0x[[FILE0SRC:[0-9a-f]+]]] = ""
-# CHECK: file_names[ 1]:
# CHECK-NEXT: name: .debug_line_str[0x[[FILE1:[0-9a-f]+]]] = "foo"
# CHECK-NEXT: dir_index: 1
# CHECK-NEXT: source: .debug_line_str[0x[[FILE1SRC:[0-9a-f]+]]] = "void foo() {}"
-# CHECK: file_names[ 2]:
+# CHECK: file_names[ 1]:
# CHECK-NEXT: name: .debug_line_str[0x[[FILE2:[0-9a-f]+]]] = "bar"
# CHECK-NEXT: dir_index: 2
# CHECK-NEXT: source: .debug_line_str[0x[[FILE2SRC:[0-9a-f]+]]] = "void bar()\n{\n}"
# CHECK: .debug_line_str contents:
-# CHECK-NEXT: 0x[[DIR0]]: "{{.*}}"
+# CHECK-NEXT: 0x[[DIR0]]: ""
# CHECK-NEXT: 0x[[DIR1]]: "dir1"
# CHECK-NEXT: 0x[[DIR2]]: "dir2"
-# CHECK-NEXT: 0x[[FILE0]]: "[[FILE0NAME]]"
-# CHECK-NEXT: 0x[[FILE0SRC]]: ""
# CHECK-NEXT: 0x[[FILE1]]: "foo"
# CHECK-NEXT: 0x[[FILE1SRC]]: "void foo() {}"
# CHECK-NEXT: 0x[[FILE2]]: "bar"
Removed: llvm/trunk/test/MC/ELF/dwarf-file0.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/dwarf-file0.s?rev=326761&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/dwarf-file0.s (original)
+++ llvm/trunk/test/MC/ELF/dwarf-file0.s (removed)
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -dwarf-version 4 %s -filetype=obj -o - | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK,CHECK-4
-# RUN: llvm-mc -dwarf-version 5 %s -filetype=obj -o - | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK,CHECK-5
- .file 0 "root.cpp"
- .file 1 "header.h"
- .file 2 "root.cpp"
-# CHECK-5: include_directories[ 0] = ""
-# CHECK-4-NOT: include_directories
-# CHECK-4-NOT: file_names[ 0]
-# CHECK-5: file_names[ 0]:
-# CHECK-5-NEXT: name: "root.cpp"
-# CHECK-5-NEXT: dir_index: 0
-# CHECK: file_names[ 1]:
-# CHECK-NEXT: name: "header.h"
-# CHECK-NEXT: dir_index: 0
-# CHECK: file_names[ 2]:
-# CHECK-NEXT: name: "root.cpp"
-# CHECK-NEXT: dir_index: 0
Modified: llvm/trunk/tools/llvm-mc/llvm-mc.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mc/llvm-mc.cpp?rev=326762&r1=326761&r2=326762&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mc/llvm-mc.cpp (original)
+++ llvm/trunk/tools/llvm-mc/llvm-mc.cpp Mon Mar 5 19:15:21 2018
@@ -524,17 +524,6 @@ int main(int argc, char **argv) {
}
if (!MainFileName.empty())
Ctx.setMainFileName(MainFileName);
- if (DwarfVersion >= 5) {
- // DWARF v5 needs the root file as well as the compilation directory.
- // If we find a '.file 0' directive that will supersede these values.
- MD5 Hash;
- MD5::MD5Result Cksum;
- Hash.update(Buffer->getBuffer());
- Hash.final(Cksum);
- Ctx.setMCLineTableRootFile(
- /*CUID=*/0, Ctx.getCompilationDir(),
- !MainFileName.empty() ? MainFileName : InputFilename, &Cksum, None);
- }
// Package up features to be passed to target/subtarget
std::string FeaturesStr;
More information about the llvm-commits
mailing list