mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
This was reverted several times due to what ultimately turned out to be incompatibilities in our serialized hash table format. Several changes went in prior to this to fix those issues since they were more fundamental and independent of supporting injected sources, so now that those are fixed this change should hopefully pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328363 91177308-0d34-0410-b5e6-96231b3b80d8
73 lines
2.0 KiB
C++
73 lines
2.0 KiB
C++
//===- PDBStringTableBuilder.h - PDB String Table Builder -------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file creates the "/names" stream.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_DEBUGINFO_PDB_RAW_PDBSTRINGTABLEBUILDER_H
|
|
#define LLVM_DEBUGINFO_PDB_RAW_PDBSTRINGTABLEBUILDER_H
|
|
|
|
#include "llvm/ADT/DenseMap.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/DebugInfo/CodeView/DebugStringTableSubsection.h"
|
|
#include "llvm/Support/Error.h"
|
|
#include <vector>
|
|
|
|
namespace llvm {
|
|
class BinaryStreamWriter;
|
|
class WritableBinaryStreamRef;
|
|
|
|
namespace msf {
|
|
struct MSFLayout;
|
|
}
|
|
|
|
namespace pdb {
|
|
|
|
class PDBFileBuilder;
|
|
class PDBStringTableBuilder;
|
|
|
|
struct StringTableHashTraits {
|
|
PDBStringTableBuilder *Table;
|
|
|
|
explicit StringTableHashTraits(PDBStringTableBuilder &Table);
|
|
uint32_t hashLookupKey(StringRef S) const;
|
|
StringRef storageKeyToLookupKey(uint32_t Offset) const;
|
|
uint32_t lookupKeyToStorageKey(StringRef S);
|
|
};
|
|
|
|
class PDBStringTableBuilder {
|
|
public:
|
|
// If string S does not exist in the string table, insert it.
|
|
// Returns the ID for S.
|
|
uint32_t insert(StringRef S);
|
|
|
|
uint32_t getIdForString(StringRef S) const;
|
|
StringRef getStringForId(uint32_t Id) const;
|
|
|
|
uint32_t calculateSerializedSize() const;
|
|
Error commit(BinaryStreamWriter &Writer) const;
|
|
|
|
void setStrings(const codeview::DebugStringTableSubsection &Strings);
|
|
|
|
private:
|
|
uint32_t calculateHashTableSize() const;
|
|
Error writeHeader(BinaryStreamWriter &Writer) const;
|
|
Error writeStrings(BinaryStreamWriter &Writer) const;
|
|
Error writeHashTable(BinaryStreamWriter &Writer) const;
|
|
Error writeEpilogue(BinaryStreamWriter &Writer) const;
|
|
|
|
codeview::DebugStringTableSubsection Strings;
|
|
};
|
|
|
|
} // end namespace pdb
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_DEBUGINFO_PDB_RAW_PDBSTRINGTABLEBUILDER_H
|