123456789101112131415161718192021222324252627282930313233343536373839 |
- //===- WasmReader.cpp -----------------------------------------------------===//
- //
- // 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
- //
- //===----------------------------------------------------------------------===//
- #include "WasmReader.h"
- namespace llvm {
- namespace objcopy {
- namespace wasm {
- using namespace object;
- using namespace llvm::wasm;
- Expected<std::unique_ptr<Object>> Reader::create() const {
- auto Obj = std::make_unique<Object>();
- Obj->Header = WasmObj.getHeader();
- std::vector<Section> Sections;
- Obj->Sections.reserve(WasmObj.getNumSections());
- for (const SectionRef &Sec : WasmObj.sections()) {
- const WasmSection &WS = WasmObj.getWasmSection(Sec);
- Obj->Sections.push_back(
- {static_cast<uint8_t>(WS.Type), WS.Name, WS.Content});
- // Give known sections standard names to allow them to be selected. (Custom
- // sections already have their names filled in by the parser).
- Section &ReaderSec = Obj->Sections.back();
- if (ReaderSec.SectionType > WASM_SEC_CUSTOM &&
- ReaderSec.SectionType <= WASM_SEC_LAST_KNOWN)
- ReaderSec.Name = sectionTypeToString(ReaderSec.SectionType);
- }
- return std::move(Obj);
- }
- } // end namespace wasm
- } // end namespace objcopy
- } // end namespace llvm
|