[llvm] r326839 - Reapply "[DWARFv5] Emit file 0 to the line table."
Alexander Kornienko via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 7 06:45:41 PST 2018
This commit breaks assembly file parsing:
$ cat q.c
void g() {}
$ clang -S q.c -g
$ clang -g -c q.s
q.s:9:2: error: file number already allocated
.file 1 "/tmp/test" "q.c"
^
Please fix or revert.
Thank you!
On Tue, Mar 6, 2018 at 11:40 PM Paul Robinson via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: probinson
> Date: Tue Mar 6 14:37:45 2018
> New Revision: 326839
>
> URL: http://llvm.org/viewvc/llvm-project?rev=326839&view=rev
> Log:
> Reapply "[DWARFv5] Emit file 0 to the line table."
>
> Fixes the bug found by asan. Also XFAIL the new test for Darwin,
> which is stuck on DWARF v2, and fix up other tests so they stop
> failing on Windows.
>
> Added:
> 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCContext.h (original)
> +++ llvm/trunk/include/llvm/MC/MCContext.h Tue Mar 6 14:37:45 2018
> @@ -537,8 +537,13 @@ namespace llvm {
> DwarfCompileUnitID = CUIndex;
> }
>
> - void setMCLineTableCompilationDir(unsigned CUID, StringRef
> CompilationDir) {
> - getMCDwarfLineTable(CUID).setCompilationDir(CompilationDir);
> + /// 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);
> }
>
> /// 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCDwarf.h (original)
> +++ llvm/trunk/include/llvm/MC/MCDwarf.h Tue Mar 6 14:37:45 2018
> @@ -214,6 +214,7 @@ struct MCDwarfLineTableHeader {
> SmallVector<MCDwarfFile, 3> MCDwarfFiles;
> StringMap<unsigned> SourceIdMap;
> StringRef CompilationDir;
> + MCDwarfFile RootFile;
> bool HasMD5 = false;
> bool HasSource = false;
>
> @@ -241,8 +242,17 @@ class MCDwarfDwoLineTable {
> MCDwarfLineTableHeader Header;
>
> public:
> - void setCompilationDir(StringRef CompilationDir) {
> - Header.CompilationDir = CompilationDir;
> + 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();
> }
>
> unsigned getFile(StringRef Directory, StringRef FileName,
> @@ -276,6 +286,17 @@ 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;
> }
> @@ -284,10 +305,6 @@ 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCStreamer.h (original)
> +++ llvm/trunk/include/llvm/MC/MCStreamer.h Tue Mar 6 14:37:45 2018
> @@ -774,6 +774,12 @@ 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Tue Mar 6 14:37:45
> 2018
> @@ -476,8 +476,9 @@ DwarfDebug::getOrCreateDwarfCompileUnit(
> // explicitly describe the directory of all files, never relying on the
> // compilation directory.
> if (!Asm->OutStreamer->hasRawTextSupport() || SingleCU)
> - Asm->OutStreamer->getContext().setMCLineTableCompilationDir(
> - NewCU.getUniqueID(), CompilationDir);
> + Asm->OutStreamer->emitDwarfFile0Directive(
> + CompilationDir, FN, NewCU.getMD5AsBytes(DIUnit->getFile()),
> + DIUnit->getSource(), NewCU.getUniqueID());
>
> StringRef Producer = DIUnit->getProducer();
> StringRef Flags = DIUnit->getFlags();
> @@ -2110,8 +2111,10 @@ void DwarfDebug::emitDebugStrDWO() {
> MCDwarfDwoLineTable *DwarfDebug::getDwoLineTable(const DwarfCompileUnit
> &CU) {
> if (!useSplitDwarf())
> return nullptr;
> - if (SingleCU)
> -
> SplitTypeUnitFileTable.setCompilationDir(CU.getCUNode()->getDirectory());
> + const DICompileUnit *DIUnit = CU.getCUNode();
> + SplitTypeUnitFileTable.maybeSetRootFile(
> + DIUnit->getDirectory(), DIUnit->getFilename(),
> + CU.getMD5AsBytes(DIUnit->getFile()), DIUnit->getSource());
> 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Tue Mar 6 14:37:45
> 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) {
> +MD5::MD5Result *DwarfUnit::getMD5AsBytes(const DIFile *File) const {
> 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Tue Mar 6 14:37:45 2018
> @@ -306,6 +306,10 @@ 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();
>
> @@ -316,10 +320,6 @@ 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Tue Mar 6 14:37:45 2018
> @@ -218,6 +218,10 @@ 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,
> @@ -1076,21 +1080,10 @@ void MCAsmStreamer::EmitFileDirective(St
> EmitEOL();
> }
>
> -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;
> -
> +void printDwarfFileDirective(unsigned FileNo, StringRef Directory,
> + StringRef Filename, MD5::MD5Result *Checksum,
> + Optional<StringRef> Source, bool
> UseDwarfDirectory,
> + raw_svector_ostream &OS) {
> SmallString<128> FullPathName;
>
> if (!UseDwarfDirectory && !Directory.empty()) {
> @@ -1104,31 +1097,68 @@ Expected<unsigned> MCAsmStreamer::tryEmi
> }
> }
>
> - SmallString<128> Str;
> - raw_svector_ostream OS1(Str);
> - OS1 << "\t.file\t" << FileNo << ' ';
> + OS << "\t.file\t" << FileNo << ' ';
> if (!Directory.empty()) {
> - PrintQuotedString(Directory, OS1);
> - OS1 << ' ';
> + PrintQuotedString(Directory, OS);
> + OS << ' ';
> }
> - PrintQuotedString(Filename, OS1);
> + PrintQuotedString(Filename, OS);
> if (Checksum) {
> - OS1 << " md5 ";
> - PrintQuotedString(Checksum->digest(), OS1);
> + OS << " md5 ";
> + PrintQuotedString(Checksum->digest(), OS);
> }
> if (Source) {
> - OS1 << " source ";
> - PrintQuotedString(*Source, OS1);
> + OS << " source ";
> + PrintQuotedString(*Source, OS);
> }
> - if (MCTargetStreamer *TS = getTargetStreamer()) {
> +}
> +
> +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())
> 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/MC/MCDwarf.cpp (original)
> +++ llvm/trunk/lib/MC/MCDwarf.cpp Tue Mar 6 14:37:45 2018
> @@ -346,6 +346,34 @@ 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
> @@ -394,33 +422,12 @@ void MCDwarfLineTableHeader::emitV5FileD
> MCOS->EmitULEB128IntValue(LineStr ? dwarf::DW_FORM_line_strp
> : dwarf::DW_FORM_string);
> }
> - // 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.
> - }
> - }
> - }
> + // 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);
> }
>
> 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Tue Mar 6 14:37:45 2018
> @@ -3258,8 +3258,8 @@ bool AsmParser::parseDirectiveFile(SMLoc
> FileNumber = getTok().getIntVal();
> Lex();
>
> - if (FileNumber < 1)
> - return TokError("file number less than one");
> + if (FileNumber < 0)
> + return TokError("negative file number");
> }
>
> std::string Path = getTok().getString();
> @@ -3338,6 +3338,8 @@ 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/MC/MCStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCStreamer.cpp Tue Mar 6 14:37:45 2018
> @@ -199,6 +199,15 @@ 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll (original)
> +++ llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll Tue Mar 6 14:37:45 2018
> @@ -8,28 +8,25 @@
> ; 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-4
> +; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ
> ; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s
> -; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s
> --check-prefix=OBJ-5
> +; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s
> --check-prefixes=OBJ,OBJ-5
>
> -; 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
> +; ASM: .file 0 "[[COMPDIR:.*]]{{[/\\]}}t.c" md5
> "00000000000000000000000000000000"
> +; ASM: .file 1 "[[COMPDIR]]{{[/\\]}}t1.h" md5
> "11111111111111111111111111111111"
> +; ASM: .file 2 "[[COMPDIR]]{{[/\\]}}t2.h" md5
> "22222222222222222222222222222222"
>
> ; OBJ-5: file_names[ 0]:
> -; OBJ-5-NEXT: name: "t1.h"
> -; OBJ-5-NEXT: dir_index: 1
> +; 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: md5_checksum: 11111111111111111111111111111111
> -; OBJ-5: file_names[ 1]:
> -; OBJ-5-NEXT: name: "t2.h"
> -; OBJ-5-NEXT: dir_index: 1
> +; OBJ: file_names[ 2]:
> +; OBJ-NEXT: name: "t2.h"
> +; OBJ-NEXT: dir_index: 0
> ; OBJ-5-NEXT: md5_checksum: 22222222222222222222222222222222
>
> ; ModuleID = 't.c'
> @@ -50,9 +47,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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/dwarf-source.ll (original)
> +++ llvm/trunk/test/CodeGen/Generic/dwarf-source.ll Tue Mar 6 14:37:45
> 2018
> @@ -8,30 +8,27 @@
> ; 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-4
> +; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s
> --check-prefixes=OBJ,OBJ-4
> ; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s
> -; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s
> --check-prefix=OBJ-5
> +; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s
> --check-prefixes=OBJ,OBJ-5
>
> -; 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
> +; ASM: .file 0 "[[COMPDIR:.*]]{{[/\\]}}t.c" source
> "00000000000000000000000000000000"
> +; ASM: .file 1 "[[COMPDIR]]{{[/\\]}}t1.h" source
> "11111111111111111111111111111111"
> +; ASM: .file 2 "[[COMPDIR]]{{[/\\]}}t2.h" source
> "22222222222222222222222222222222"
>
> ; OBJ-5: file_names[ 0]:
> -; OBJ-5-NEXT: name: "t1.h"
> -; OBJ-5-NEXT: dir_index: 1
> +; 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: source: "11111111111111111111111111111111"
> -; OBJ-5: file_names[ 1]:
> -; OBJ-5-NEXT: name: "t2.h"
> -; OBJ-5-NEXT: dir_index: 1
> +; OBJ: file_names[ 2]:
> +; OBJ-NEXT: name: "t2.h"
> +; OBJ-NEXT: dir_index: 0
> +; OBJ-4-NOT: 22222222222222222222222222222222
> ; OBJ-5-NEXT: source: "22222222222222222222222222222222"
>
> ; ModuleID = 't.c'
> @@ -52,9 +49,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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll (original)
> +++ llvm/trunk/test/DebugInfo/X86/dbg-file-name.ll Tue Mar 6 14:37:45 2018
> @@ -2,7 +2,7 @@
>
> ; Verify that the file name is relative to the directory.
> ; rdar://problem/8884898
> -; CHECK: file 1 "simple.c"
> +; CHECK: file 1 "/Users/manav/one/two" "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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll (original)
> +++ llvm/trunk/test/DebugInfo/X86/inline-asm-locs.ll Tue Mar 6 14:37:45
> 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s (original)
> +++ llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.s Tue Mar 6
> 14:37:45 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] = ""
> +// DWARF-DL-5: include_directories[ 0] = "/tmp"
> // 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/MC/ELF/debug-file-options.s (original)
> +++ llvm/trunk/test/MC/ELF/debug-file-options.s Tue Mar 6 14:37:45 2018
> @@ -11,25 +11,32 @@
>
> # 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]+]]] = "{{.+}}"
> +# 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[ 1]:
> +# CHECK: file_names[ 2]:
> # 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]]: "{{.+}}"
> +# 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/MC/ELF/debug-md5.s (original)
> +++ llvm/trunk/test/MC/ELF/debug-md5.s Tue Mar 6 14:37:45 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
> +// 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
>
> .file 1 "dir1/foo" md5 "00112233445566778899aabbccddeeff"
> .file 2 "dir2" "bar" md5 "ffeeddccbbaa99887766554433221100"
> @@ -9,22 +9,26 @@
>
> # 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]+]]]
> = "/tmp"
> # 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]+]]] = "{{.+}}"
> +# 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[ 1]:
> +# CHECK: file_names[ 2]:
> # 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]]: ""
> +# CHECK-NEXT: 0x[[DIR0]]: "/tmp"
> # CHECK-NEXT: 0x[[DIR1]]: "dir1"
> # CHECK-NEXT: 0x[[DIR2]]: "dir2"
> +# CHECK-NEXT: 0x[[FILE0]]: "{{.+}}"
> # 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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/MC/ELF/debug-source.s (original)
> +++ llvm/trunk/test/MC/ELF/debug-source.s Tue Mar 6 14:37:45 2018
> @@ -9,23 +9,29 @@
>
> # 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]+]]] = "{{.+}}"
> +# 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[ 1]:
> +# CHECK: file_names[ 2]:
> # 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]]: "{{.+}}"
> +# CHECK-NEXT: 0x[[FILE0SRC]]: ""
> # CHECK-NEXT: 0x[[FILE1]]: "foo"
> # CHECK-NEXT: 0x[[FILE1SRC]]: "void foo() {}"
> # CHECK-NEXT: 0x[[FILE2]]: "bar"
>
> Added: llvm/trunk/test/MC/ELF/dwarf-file0.s
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/dwarf-file0.s?rev=326839&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/MC/ELF/dwarf-file0.s (added)
> +++ llvm/trunk/test/MC/ELF/dwarf-file0.s Tue Mar 6 14:37:45 2018
> @@ -0,0 +1,19 @@
> +# 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
> +# Darwin is stuck on DWARF v2.
> +# XFAIL: darwin
> + .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=326839&r1=326838&r2=326839&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/llvm-mc/llvm-mc.cpp (original)
> +++ llvm/trunk/tools/llvm-mc/llvm-mc.cpp Tue Mar 6 14:37:45 2018
> @@ -390,6 +390,18 @@ 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 =
> + (MD5::MD5Result *)Ctx.allocate(sizeof(MD5::MD5Result), 1);
> + 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;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180307/421da9ab/attachment.html>
More information about the llvm-commits
mailing list