brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 374e523 Raw
50 lines · c
1//===- WasmObject.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 LLVM_LIB_OBJCOPY_WASM_WASMOBJECT_H10#define LLVM_LIB_OBJCOPY_WASM_WASMOBJECT_H11 12#include "llvm/ADT/ArrayRef.h"13#include "llvm/ADT/StringRef.h"14#include "llvm/Object/Wasm.h"15#include "llvm/Support/MemoryBuffer.h"16#include <vector>17 18namespace llvm {19namespace objcopy {20namespace wasm {21 22struct Section {23  // For now, each section is only an opaque binary blob with no distinction24  // between custom and known sections.25  uint8_t SectionType;26  std::optional<uint8_t> HeaderSecSizeEncodingLen;27  StringRef Name;28  ArrayRef<uint8_t> Contents;29};30 31struct Object {32  llvm::wasm::WasmObjectHeader Header;33  // For now don't discriminate between kinds of sections.34  std::vector<Section> Sections;35  bool isRelocatableObject = false;36 37  void addSectionWithOwnedContents(Section NewSection,38                                   std::unique_ptr<MemoryBuffer> &&Content);39  void removeSections(function_ref<bool(const Section &)> ToRemove);40 41private:42  std::vector<std::unique_ptr<MemoryBuffer>> OwnedContents;43};44 45} // end namespace wasm46} // end namespace objcopy47} // end namespace llvm48 49#endif // LLVM_LIB_OBJCOPY_WASM_WASMOBJECT_H50