1//===- GsymReaderV1.h -------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_DEBUGINFO_GSYM_GSYMREADERV1_H
10#define LLVM_DEBUGINFO_GSYM_GSYMREADERV1_H
11
12#include "llvm/DebugInfo/GSYM/GsymReader.h"
13#include "llvm/DebugInfo/GSYM/Header.h"
14
15namespace llvm {
16class MemoryBuffer;
17
18namespace gsym {
19
20/// GsymReaderV1 reads GSYM V1 data from a buffer.
21class LLVM_ABI GsymReaderV1 : public GsymReader {
22 friend class GsymReader;
23 const Header *Hdr = nullptr;
24 std::unique_ptr<Header> SwappedHdr;
25
26protected:
27 GsymReaderV1(std::unique_ptr<MemoryBuffer> Buffer, llvm::endianness Endian);
28 llvm::Error parseHeaderAndGlobalDataEntries() override;
29
30public:
31 GsymReaderV1(GsymReaderV1 &&RHS) = default;
32 ~GsymReaderV1() override = default;
33
34 // Header accessors
35 uint16_t getVersion() const override { return Header::getVersion(); }
36 uint64_t getBaseAddress() const override { return Hdr->BaseAddress; }
37 uint64_t getNumAddresses() const override { return Hdr->NumAddresses; }
38 uint8_t getAddressOffsetSize() const override { return Hdr->AddrOffSize; }
39 uint8_t getAddressInfoOffsetSize() const override {
40 return Header::getAddressInfoOffsetSize();
41 }
42 uint8_t getStringOffsetSize() const override {
43 return Header::getStringOffsetSize();
44 }
45
46 using GsymReader::dump;
47 void dump(raw_ostream &OS) override;
48};
49
50} // namespace gsym
51} // namespace llvm
52
53#endif // LLVM_DEBUGINFO_GSYM_GSYMREADERV1_H
54