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 16 using namespace llvm; 17 using namespace llvm::codeview; 18 19 DebugSymbolRVASubsectionRef::DebugSymbolRVASubsectionRef() 20 : DebugSubsectionRef(DebugSubsectionKind::CoffSymbolRVA) {} 21 22 Error DebugSymbolRVASubsectionRef::initialize(BinaryStreamReader &Reader) { 23 return Reader.readArray(RVAs, Reader.bytesRemaining() / sizeof(uint32_t)); 24 } 25 26 DebugSymbolRVASubsection::DebugSymbolRVASubsection() 27 : DebugSubsection(DebugSubsectionKind::CoffSymbolRVA) {} 28 29 Error DebugSymbolRVASubsection::commit(BinaryStreamWriter &Writer) const { 30 return Writer.writeArray(ArrayRef(RVAs)); 31 } 32 33 uint32_t DebugSymbolRVASubsection::calculateSerializedSize() const { 34 return RVAs.size() * sizeof(uint32_t); 35 } 36