1 //===- WriterUtils.h --------------------------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef LLD_WASM_WRITERUTILS_H
10 #define LLD_WASM_WRITERUTILS_H
12 #include "lld/Common/LLVM.h"
13 #include "llvm/ADT/Twine.h"
14 #include "llvm/Object/Wasm.h"
19 void debugWrite(uint64_t offset
, const Twine
&msg
);
21 void writeUleb128(raw_ostream
&os
, uint64_t number
, const Twine
&msg
);
23 void writeSleb128(raw_ostream
&os
, int64_t number
, const Twine
&msg
);
25 void writeBytes(raw_ostream
&os
, const char *bytes
, size_t count
,
28 void writeStr(raw_ostream
&os
, StringRef string
, const Twine
&msg
);
30 void writeU8(raw_ostream
&os
, uint8_t byte
, const Twine
&msg
);
32 void writeU32(raw_ostream
&os
, uint32_t number
, const Twine
&msg
);
34 void writeValueType(raw_ostream
&os
, llvm::wasm::ValType type
,
37 void writeSig(raw_ostream
&os
, const llvm::wasm::WasmSignature
&sig
);
39 void writeI32Const(raw_ostream
&os
, int32_t number
, const Twine
&msg
);
41 void writeI64Const(raw_ostream
&os
, int64_t number
, const Twine
&msg
);
43 void writePtrConst(raw_ostream
&os
, int64_t number
, bool is64
,
46 void writeMemArg(raw_ostream
&os
, uint32_t alignment
, uint64_t offset
);
48 void writeInitExpr(raw_ostream
&os
, const llvm::wasm::WasmInitExpr
&initExpr
);
50 void writeLimits(raw_ostream
&os
, const llvm::wasm::WasmLimits
&limits
);
52 void writeGlobalType(raw_ostream
&os
, const llvm::wasm::WasmGlobalType
&type
);
54 void writeTagType(raw_ostream
&os
, const llvm::wasm::WasmTagType
&type
);
56 void writeTag(raw_ostream
&os
, const llvm::wasm::WasmTag
&tag
);
58 void writeTableType(raw_ostream
&os
, const llvm::wasm::WasmTableType
&type
);
60 void writeImport(raw_ostream
&os
, const llvm::wasm::WasmImport
&import
);
62 void writeExport(raw_ostream
&os
, const llvm::wasm::WasmExport
&export_
);
66 std::string
toString(llvm::wasm::ValType type
);
67 std::string
toString(const llvm::wasm::WasmSignature
&sig
);
68 std::string
toString(const llvm::wasm::WasmGlobalType
&type
);
69 std::string
toString(const llvm::wasm::WasmTagType
&type
);
70 std::string
toString(const llvm::wasm::WasmTableType
&type
);
74 #endif // LLD_WASM_WRITERUTILS_H