blob: d3d28113e8b9c068792d39829a26795b20b37e29 [file] [log] [blame]
Bob Haarman653baa22016-10-21 19:43:19 +00001//===- GlobalsStream.cpp - PDB Index of Symbols by Name ---- ----*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Adrian McCarthy6b6b8c42017-01-25 22:38:55 +000010#include "llvm/DebugInfo/PDB/Native/GlobalsStream.h"
Bob Haarman653baa22016-10-21 19:43:19 +000011#include "GSI.h"
Zachary Turnerd9dc2822017-03-02 20:52:51 +000012#include "llvm/Support/BinaryStreamReader.h"
Bob Haarman653baa22016-10-21 19:43:19 +000013#include "llvm/Support/Error.h"
Eugene Zelenko570e39a2016-11-23 23:16:32 +000014#include <algorithm>
Bob Haarman653baa22016-10-21 19:43:19 +000015
16using namespace llvm;
17using namespace llvm::msf;
18using namespace llvm::pdb;
19
20GlobalsStream::GlobalsStream(std::unique_ptr<MappedBlockStream> Stream)
21 : Stream(std::move(Stream)) {}
22
Eugene Zelenko570e39a2016-11-23 23:16:32 +000023GlobalsStream::~GlobalsStream() = default;
Bob Haarman653baa22016-10-21 19:43:19 +000024
25Error GlobalsStream::reload() {
Zachary Turner120faca2017-02-27 22:11:43 +000026 BinaryStreamReader Reader(*Stream);
Bob Haarman653baa22016-10-21 19:43:19 +000027
28 const GSIHashHeader *HashHdr;
29 if (auto EC = readGSIHashHeader(HashHdr, Reader))
30 return EC;
31
32 if (auto EC = readGSIHashRecords(HashRecords, HashHdr, Reader))
33 return EC;
34
Reid Klecknerc85041fe2017-07-21 18:32:00 +000035 if (auto EC = readGSIHashBuckets(HashBuckets, HashBitmap, HashHdr, Reader))
Bob Haarman653baa22016-10-21 19:43:19 +000036 return EC;
37 NumBuckets = HashBuckets.size();
38
39 return Error::success();
40}
41
42Error GlobalsStream::commit() { return Error::success(); }