diff options
author | Derek Schuff <dschuff@chromium.org> | 2020-02-11 15:13:40 -0800 |
---|---|---|
committer | Derek Schuff <dschuff@chromium.org> | 2020-02-11 15:17:18 -0800 |
commit | b2c44de956cca22efa374cfb587912b38c41ed67 (patch) | |
tree | 16fd35cd8438cb8c54de57c96a16daeb6e1d3b57 /llvm/tools/llvm-objcopy/wasm/Object.cpp | |
parent | 1bd6123b781120c9190b9ba58b900cdcb718cdd1 (diff) | |
download | llvm-b2c44de956cca22efa374cfb587912b38c41ed67.zip llvm-b2c44de956cca22efa374cfb587912b38c41ed67.tar.gz llvm-b2c44de956cca22efa374cfb587912b38c41ed67.tar.bz2 |
[llvm-objcopy][WebAssembly] Add dump/add/remove-section support
Add support for adding, removing, and dumping wasm sections to objcopy
Differential Revision: https://reviews.llvm.org/D70970
Diffstat (limited to 'llvm/tools/llvm-objcopy/wasm/Object.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/wasm/Object.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objcopy/wasm/Object.cpp b/llvm/tools/llvm-objcopy/wasm/Object.cpp new file mode 100644 index 0000000..0c41648 --- /dev/null +++ b/llvm/tools/llvm-objcopy/wasm/Object.cpp @@ -0,0 +1,36 @@ +//===- Object.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 "Object.h" + +#include "llvm/Support/LEB128.h" +#include "llvm/Support/raw_ostream.h" + +namespace llvm { +namespace objcopy { +namespace wasm { + +using namespace object; +using namespace llvm::wasm; + +void Object::addSectionWithOwnedContents( + Section NewSection, std::unique_ptr<MemoryBuffer> &&Content) { + Sections.push_back(NewSection); + OwnedContents.emplace_back(std::move(Content)); +} + +void Object::removeSections(function_ref<bool(const Section &)> ToRemove) { + // TODO: remove reloc sections for the removed section, handle symbols, etc. + Sections.erase( + std::remove_if(std::begin(Sections), std::end(Sections), ToRemove), + std::end(Sections)); +} + +} // end namespace wasm +} // end namespace objcopy +} // end namespace llvm |