brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 701df1f Raw
54 lines · c
1//===- OutputSegment.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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLD_WASM_OUTPUT_SEGMENT_H10#define LLD_WASM_OUTPUT_SEGMENT_H11 12#include "InputChunks.h"13#include "lld/Common/ErrorHandler.h"14#include "llvm/Object/Wasm.h"15 16namespace lld::wasm {17 18class InputSegment;19 20class OutputSegment {21public:22  OutputSegment(StringRef n) : name(n) {}23 24  void addInputSegment(InputChunk *inSeg);25  void finalizeInputSegments();26  // In most circumstances BSS segments don't need to be written27  // to the output binary.  However if the memory is imported, and28  // we can't use memory.fill during startup (due to lack of bulk29  // memory feature) then we include BSS segments verbatim.30  bool requiredInBinary() const { return !isBss || ctx.emitBssSegments; }31 32  bool isTLS() const { return name == ".tdata"; }33 34  StringRef name;35  bool isBss = false;36  uint32_t index = 0;37  uint32_t linkingFlags = 0;38  uint32_t initFlags = 0;39  uint32_t sectionOffset = 0;40  uint32_t alignment = 0;41  uint64_t startVA = 0;42  std::vector<InputChunk *> inputSegments;43 44  // Sum of the size of the all the input segments45  uint32_t size = 0;46 47  // Segment header48  std::string header;49};50 51} // namespace lld::wasm52 53#endif // LLD_WASM_OUTPUT_SEGMENT_H54