diff options
| author | Sam Clegg <sbc@chromium.org> | 2018-02-23 05:08:53 +0000 |
|---|---|---|
| committer | Sam Clegg <sbc@chromium.org> | 2018-02-23 05:08:53 +0000 |
| commit | 93102974386d5fe5ea217ec3d4aeda55395db4ff (patch) | |
| tree | 06f3eb15d4047c4949f48cc9f1cec2fdbda7e2e1 /lld/wasm/InputGlobal.h | |
| parent | 6c899ba6dee1a6cd1e1a49900bb5f3b6353a5487 (diff) | |
| download | bcm5719-llvm-93102974386d5fe5ea217ec3d4aeda55395db4ff.tar.gz bcm5719-llvm-93102974386d5fe5ea217ec3d4aeda55395db4ff.zip | |
[WebAssembly] Add explicit symbol table
This change modified lld to in response the llvm change which
moved to a more explicit symbol table in the object format.
Based on patches by Nicholas Wilson:
1. https://reviews.llvm.org/D41955
2. https://reviews.llvm.org/D42585
The primary difference that we see in the test output is that
for relocatable (-r) output we now have symbol table which
replaces exports/imports and globals.
See: https://github.com/WebAssembly/tool-conventions/issues/38
Differential Revision: https://reviews.llvm.org/D43264
llvm-svn: 325861
Diffstat (limited to 'lld/wasm/InputGlobal.h')
| -rw-r--r-- | lld/wasm/InputGlobal.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lld/wasm/InputGlobal.h b/lld/wasm/InputGlobal.h new file mode 100644 index 00000000000..53af220e827 --- /dev/null +++ b/lld/wasm/InputGlobal.h @@ -0,0 +1,52 @@ +//===- InputGlobal.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_WASM_INPUT_GLOBAL_H +#define LLD_WASM_INPUT_GLOBAL_H + +#include "Config.h" +#include "InputFiles.h" +#include "WriterUtils.h" +#include "lld/Common/ErrorHandler.h" +#include "llvm/Object/Wasm.h" + +using llvm::wasm::WasmGlobal; +using llvm::wasm::WasmInitExpr; + +namespace lld { +namespace wasm { + +// Represents a single Wasm Global Variable within an input file. These are +// combined to form the final GLOBALS section. +class InputGlobal { +public: + InputGlobal(const WasmGlobal &G) : Global(G) {} + + const WasmGlobalType &getType() const { return Global.Type; } + + uint32_t getOutputIndex() const { return OutputIndex.getValue(); } + bool hasOutputIndex() const { return OutputIndex.hasValue(); } + void setOutputIndex(uint32_t Index) { + assert(!hasOutputIndex()); + OutputIndex = Index; + } + + bool Live = false; + + WasmGlobal Global; + +protected: + llvm::Optional<uint32_t> OutputIndex; +}; + +} // namespace wasm + +} // namespace lld + +#endif // LLD_WASM_INPUT_GLOBAL_H |

