1//===- DebugSymbolRVASubsection.cpp ---------------------------------------===//
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#include "llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h"
10#include "llvm/ADT/ArrayRef.h"
11#include "llvm/DebugInfo/CodeView/CodeView.h"
12#include "llvm/Support/BinaryStreamReader.h"
13#include "llvm/Support/BinaryStreamWriter.h"
14#include <cstdint>
15
16using namespace llvm;
17using namespace llvm::codeview;
18
19DebugSymbolRVASubsectionRef::DebugSymbolRVASubsectionRef()
20    : DebugSubsectionRef(DebugSubsectionKind::CoffSymbolRVA) {}
21
22Error DebugSymbolRVASubsectionRef::initialize(BinaryStreamReader &Reader) {
23  return Reader.readArray(RVAs, Reader.bytesRemaining() / sizeof(uint32_t));
24}
25
26DebugSymbolRVASubsection::DebugSymbolRVASubsection()
27    : DebugSubsection(DebugSubsectionKind::CoffSymbolRVA) {}
28
29Error DebugSymbolRVASubsection::commit(BinaryStreamWriter &Writer) const {
30  return Writer.writeArray(makeArrayRef(RVAs));
31}
32
33uint32_t DebugSymbolRVASubsection::calculateSerializedSize() const {
34  return RVAs.size() * sizeof(uint32_t);
35}
36