xref: /llvm-project/lld/wasm/WriterUtils.h (revision 9504ab32b76646116585cae4298f700cf46721ab)
1 //===- WriterUtils.h --------------------------------------------*- C++ -*-===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLD_WASM_WRITERUTILS_H
10 #define LLD_WASM_WRITERUTILS_H
11 
12 #include "lld/Common/LLVM.h"
13 #include "llvm/ADT/Twine.h"
14 #include "llvm/Object/Wasm.h"
15 
16 namespace lld {
17 namespace wasm {
18 
19 #ifdef LLVM_DEBUG
20 void debugWrite(uint64_t offset, const Twine &msg);
21 #else
22 #define debugWrite(...) (void *)0
23 #endif
24 
25 void writeUleb128(raw_ostream &os, uint64_t number, const Twine &msg);
26 
27 void writeSleb128(raw_ostream &os, int64_t number, const Twine &msg);
28 
29 void writeBytes(raw_ostream &os, const char *bytes, size_t count,
30                 const Twine &msg);
31 
32 void writeStr(raw_ostream &os, StringRef string, const Twine &msg);
33 
34 void writeU8(raw_ostream &os, uint8_t byte, const Twine &msg);
35 
36 void writeU32(raw_ostream &os, uint32_t number, const Twine &msg);
37 
38 void writeValueType(raw_ostream &os, llvm::wasm::ValType type,
39                     const Twine &msg);
40 
41 void writeSig(raw_ostream &os, const llvm::wasm::WasmSignature &sig);
42 
43 void writeI32Const(raw_ostream &os, int32_t number, const Twine &msg);
44 
45 void writeI64Const(raw_ostream &os, int64_t number, const Twine &msg);
46 
47 void writePtrConst(raw_ostream &os, int64_t number, bool is64,
48                    const Twine &msg);
49 
50 void writeMemArg(raw_ostream &os, uint32_t alignment, uint64_t offset);
51 
52 void writeInitExpr(raw_ostream &os, const llvm::wasm::WasmInitExpr &initExpr);
53 
54 void writeInitExprMVP(raw_ostream &os,
55                       const llvm::wasm::WasmInitExprMVP &initExpr);
56 
57 void writeLimits(raw_ostream &os, const llvm::wasm::WasmLimits &limits);
58 
59 void writeGlobalType(raw_ostream &os, const llvm::wasm::WasmGlobalType &type);
60 
61 void writeTableType(raw_ostream &os, const llvm::wasm::WasmTableType &type);
62 
63 void writeImport(raw_ostream &os, const llvm::wasm::WasmImport &import);
64 
65 void writeExport(raw_ostream &os, const llvm::wasm::WasmExport &export_);
66 
67 } // namespace wasm
68 
69 std::string toString(llvm::wasm::ValType type);
70 std::string toString(const llvm::wasm::WasmSignature &sig);
71 std::string toString(const llvm::wasm::WasmGlobalType &type);
72 std::string toString(const llvm::wasm::WasmTableType &type);
73 
74 } // namespace lld
75 
76 #endif // LLD_WASM_WRITERUTILS_H
77