[PATCH] D37157: Fix Bug 30978 by emitting cv file checksums.

Eric Beckmann via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 6 21:38:05 PDT 2017


Thanks for the comments, however this patch is nowhere near close to ready
for review. I was going to make more changes before adding reviewers.

On Sep 6, 2017 9:27 PM, "Zachary Turner via Phabricator" <
reviews at reviews.llvm.org> wrote:

> zturner added a comment.
>
> Try to be more careful so as not to submit testing code / comments etc in
> uploaded patches.  Reasons like this are why I prefer using a debugger
> instead of printf debugging :)
>
>
>
> ================
> Comment at: llvm/include/llvm/IR/DebugInfoMetadata.h:476-481
> +  enum class ChecksumKind : uint8_t {
>      CSK_None,
>      CSK_MD5,
>      CSK_SHA1,
>      CSK_Last = CSK_SHA1 // Should be last enumeration.
>    };
> ----------------
> If you're going to make it an enum class, then it doesn't need the `CSK`
> prefix in the name, since you have to write `ChecksumKind` anyway.  I
> wouldn't suggest churning the code to change the names everywhere it's
> used, so instead maybe just leave this as a regular enum.  It's already
> scoped to `DIFile` anyway, so there's no risk of namespace pollution.
>
>
> ================
> Comment at: llvm/include/llvm/MC/MCCodeView.h:297-300
>    SmallVector<StringRef, 4> Filenames;
>
> +  // Map from filename to checksum.
> +  StringMap<std::pair<StringRef, uint8_t>> Checksums;
> ----------------
> Any reason this isn't just:
>
> ```
> struct FileInfo {
>   StringRef Name;
>   StringRef Checksum;
>   ChecksumKind Kind;
> };
>
> SmallVector<FileInfo> Files;
> ```
>
> having a `StringMap` seems unnecessary if we're already iterating a linear
> container anyway
>
>
> ================
> Comment at: llvm/lib/DebugInfo/CodeView/DebugChecksumsSubsection.cpp:53
>  Error DebugChecksumsSubsectionRef::initialize(BinaryStreamReader Reader)
> {
> +  //errs() << "checksum bytes remaining " << Reader.bytesRemaining() <<
> "\n";
>    if (auto EC = Reader.readArray(Checksums, Reader.bytesRemaining()))
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/lib/DebugInfo/CodeView/DebugStringTableSubsection.cpp:32
>  Error DebugStringTableSubsectionRef::initialize(BinaryStreamReader
> &Reader) {
> +  errs() << "String table bytes remaining " << Reader.bytesRemaining() <<
> "\n";
>    return Reader.readStreamRef(Stream);
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/lib/DebugInfo/CodeView/DebugStringTableSubsection.cpp:38
>  DebugStringTableSubsectionRef::getString(uint32_t Offset) const {
> +  //errs() << "DebugStringTableSubsectionRef getString\n";
>    BinaryStreamReader Reader(Stream);
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/lib/DebugInfo/CodeView/DebugStringTableSubsection.cpp:44
>      return std::move(EC);
> +  //errs() << "leaving getString\n";
>    return Result;
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/lib/MC/MCCodeView.cpp:188-200
> +    // std::pair<StringRef, uint8_t> Checksum = Checksums[Filename];
> +    // if (!Checksum.second) {
> +    //   // There is no checksum.
> +    //   OS.EmitIntValue(0, 4);
> +    //   continue;
> +    // }
> +    //OS.EmitIntValue(static_cast<uint8_t>(Checksum.first.size()), 1);
> ----------------
> What is this?  A bunch of code commented out, and then emitting a bunch of
> magic numbers?
>
>
> ================
> Comment at: llvm/tools/llvm-readobj/COFFDumper.cpp:927
>      case DebugSubsectionKind::StringTable:
> +      errs() << "initializing string table\n";
>        error(CVStringTable.initialize(ST));
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/tools/llvm-readobj/COFFDumper.cpp:929
>        error(CVStringTable.initialize(ST));
> +      errs() << "initialized string table\n";
>        break;
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/tools/llvm-readobj/COFFDumper.cpp:1088
>        ListScope S(W, "FilenameSegment");
> +      //errs() << "about to pring filename with offset " <<
> Entry.NameIndex << "\n";
>        printFileNameForOffset("Filename", Entry.NameIndex);
> ----------------
> Delete
>
>
> ================
> Comment at: llvm/tools/llvm-readobj/COFFDumper.cpp:1090
>        printFileNameForOffset("Filename", Entry.NameIndex);
> +      //errs() << "printed filename\n";
>        uint32_t ColumnIndex = 0;
> ----------------
> Delete
>
>
> https://reviews.llvm.org/D37157
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170906/e7317299/attachment.html>


More information about the llvm-commits mailing list