Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions llvm/lib/DebugInfo/PDB/Native/GSIStreamBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "llvm/DebugInfo/PDB/Native/RawTypes.h"
#include "llvm/Support/BinaryItemStream.h"
#include "llvm/Support/BinaryStreamWriter.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/Parallel.h"
#include "llvm/Support/TimeProfiler.h"
#include "llvm/Support/xxhash.h"
Expand All @@ -39,7 +40,7 @@ using namespace llvm::codeview;
// Helper class for building the public and global PDB hash table buckets.
struct llvm::pdb::GSIHashStreamBuilder {
// Sum of the size of all public or global records.
uint32_t RecordByteSize = 0;
uint64_t RecordByteSize = 0;

std::vector<PSHashRecord> HashRecords;

Expand Down Expand Up @@ -319,7 +320,14 @@ Error GSIStreamBuilder::finalizeMsfLayout() {
return Idx.takeError();
PublicsStreamIndex = *Idx;

uint32_t RecordBytes = PSH->RecordByteSize + GSH->RecordByteSize;
uint64_t RecordBytes = PSH->RecordByteSize + GSH->RecordByteSize;
if (RecordBytes > UINT32_MAX)
return make_error<StringError>(
formatv("the public ({0} bytes) and global ({1} bytes) "
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we also display what the maximum size is? It’s obvious for us, but not for regular users.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Github shows some kind of syntax error, maybe you have local fixup changes that didn't get pushed.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops. Done.

"symbols are too large to fit in a PDB file; ",
"the maximum total is 4294967295 bytes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: maybe pass UINT32_MAX as a parameter to the formatter so we don't have to hardcode the decimal value.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

PSH->RecordByteSize, GSH->RecordByteSize),
inconvertibleErrorCode());

Idx = Msf.addStream(RecordBytes);
if (!Idx)
Expand Down
Loading