1 //===- OutputSegment.h ------------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef LLD_WASM_OUTPUT_SEGMENT_H
10 #define LLD_WASM_OUTPUT_SEGMENT_H
12 #include "InputChunks.h"
13 #include "lld/Common/ErrorHandler.h"
14 #include "llvm/Object/Wasm.h"
23 OutputSegment(StringRef n
) : name(n
) {}
25 void addInputSegment(InputChunk
*inSeg
);
26 void finalizeInputSegments();
27 // In most circumstances BSS segments don't need to be written
28 // to the output binary. However if the memory is imported, and
29 // we can't use memory.fill during startup (due to lack of bulk
30 // memory feature) then we include BSS segments verbatim.
31 bool requiredInBinary() const { return !isBss
|| config
->emitBssSegments
; }
33 bool isTLS() const { return name
== ".tdata"; }
38 uint32_t linkingFlags
= 0;
39 uint32_t initFlags
= 0;
40 uint32_t sectionOffset
= 0;
41 uint32_t alignment
= 0;
43 std::vector
<InputChunk
*> inputSegments
;
45 // Sum of the size of the all the input segments
55 #endif // LLD_WASM_OUTPUT_SEGMENT_H