summaryrefslogtreecommitdiffstats
path: root/lld/wasm/InputGlobal.h
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-02-23 05:08:53 +0000
committerSam Clegg <sbc@chromium.org>2018-02-23 05:08:53 +0000
commit93102974386d5fe5ea217ec3d4aeda55395db4ff (patch)
tree06f3eb15d4047c4949f48cc9f1cec2fdbda7e2e1 /lld/wasm/InputGlobal.h
parent6c899ba6dee1a6cd1e1a49900bb5f3b6353a5487 (diff)
downloadbcm5719-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.h52
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
OpenPOWER on IntegriCloud