[JITLink] Add support of R_X86_64_32S relocation
[llvm-project.git] / lld / wasm / WriterUtils.h
blob40daf45559483478054cb3f2ec77cd11577139d6
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 //===----------------------------------------------------------------------===//
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"
16 namespace lld {
17 namespace wasm {
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,
26 const Twine &msg);
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,
35 const Twine &msg);
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,
44 const Twine &msg);
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_);
64 } // namespace wasm
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);
72 } // namespace lld
74 #endif // LLD_WASM_WRITERUTILS_H