[COFF] Avoid CodeView include in header

Most LLD/COFF files don't care about CodeView. Avoid using CodeView
types in InputFiles.h.
This commit is contained in:
Reid Kleckner 2019-11-14 14:27:48 -08:00
parent adfad4d7c8
commit de3fb1ec05
3 changed files with 8 additions and 6 deletions

View File

@ -767,7 +767,8 @@ void ObjFile::initializeDependencies() {
if (firstType == types.end())
return;
debugTypes.emplace(types);
// Remember the .debug$T or .debug$P section.
debugTypes = data;
if (isPCH) {
debugTypesObj = makePrecompSource(this);

View File

@ -15,7 +15,6 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/BinaryFormat/Magic.h"
#include "llvm/DebugInfo/CodeView/TypeRecord.h"
#include "llvm/Object/Archive.h"
#include "llvm/Object/COFF.h"
#include "llvm/Support/StringSaver.h"
@ -204,8 +203,8 @@ public:
// If the OBJ has a .debug$T stream, this tells how it will be handled.
TpiSource *debugTypesObj = nullptr;
// The .debug$T stream if there's one.
llvm::Optional<llvm::codeview::CVTypeArray> debugTypes;
// The .debug$P or .debug$T section data if present. Empty otherwise.
ArrayRef<uint8_t> debugTypes;
llvm::Optional<std::pair<StringRef, uint32_t>>
getVariableLocation(StringRef var);

View File

@ -369,8 +369,10 @@ PDBLinker::mergeDebugT(ObjFile *file, CVIndexMap *objectIndexMap) {
// don't merge any type information.
return maybeMergeTypeServerPDB(file);
}
CVTypeArray &types = *file->debugTypes;
CVTypeArray types;
BinaryStreamReader reader(file->debugTypes, support::little);
cantFail(reader.readArray(types, reader.getLength()));
if (file->debugTypesObj->kind == TpiSource::UsingPCH) {
// This object was compiled with /Yu, so process the corresponding