Derek Schuff f2af060700 [llvm-objcopy] Initial support for wasm in llvm-objcopy
Currently only supports simple copying, other operations to follow.

Reviewers: sbc100, alexshap, jhenderson

Differential Revision: https://reviews.llvm.org/D70930

This is a reland of a928d127a with a one-line fix to ensure that
the wasm version number is written as little-endian (it's the only
field in all of the binary format that's not a single byte or an
LEB, but we may have to watch out more when we start handling the
linking section).
2020-01-29 17:32:02 -08:00

40 lines
1.1 KiB
C++

//===- Object.h -------------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_TOOLS_LLVM_OBJCOPY_WASM_OBJECT_H
#define LLVM_TOOLS_LLVM_OBJCOPY_WASM_OBJECT_H
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Object/Wasm.h"
#include <vector>
namespace llvm {
namespace objcopy {
namespace wasm {
struct Section {
// For now, each section is only an opaque binary blob with no distinction
// between custom and known sections.
uint8_t SectionType;
StringRef Name;
ArrayRef<uint8_t> Contents;
};
struct Object {
llvm::wasm::WasmObjectHeader Header;
// For now don't discriminate between kinds of sections.
std::vector<Section> Sections;
};
} // end namespace wasm
} // end namespace objcopy
} // end namespace llvm
#endif // LLVM_TOOLS_LLVM_OBJCOPY_WASM_OBJECT_H