zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit c2e6be97ffc23f2fa6c28175766b8bb565e9c970 (tree)
parent 5cb45b68557e32724cb6a10ead8123a588c5000f
Author: Alex Rønne Petersen <alex@alexrp.com>
Date:   Tue, 15 Oct 2024 22:52:46 +0200

wasm2c: Add an optional endianness command line argument.

If not given, endianness is inferred from the target that wasm2c is built for.

Diffstat:
Mstage1/wasm2c.c | 20+++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/stage1/wasm2c.c b/stage1/wasm2c.c @@ -76,13 +76,27 @@ static void renderExpr(FILE *out, struct InputStream *in) { static const uint32_t big_endian = 0xff000000; int main(int argc, char **argv) { - if (argc != 3) { - fprintf(stderr, "usage: %s in.wasm.zst out.c\n", argv[0]); + if (argc != 3 && argc != 4) { + fprintf(stderr, "usage: %s <in.wasm.zst> <out.c> [endian]\n", argv[0]); return 1; } + bool is_big_endian; + + if (argc >= 4) { + if (!strcmp(argv[3], "big")) { + is_big_endian = true; + } else if (!strcmp(argv[3], "little")) { + is_big_endian = false; + } else { + fprintf(stderr, "endianness must be 'big' or 'little'\n"); + return 1; + } + } else { + is_big_endian = *(uint8_t *)&big_endian; // Infer from host endianness. + } + const char *mod = "wasm"; - bool is_big_endian = *(uint8_t *)&big_endian; struct InputStream in; InputStream_open(&in, argv[1]);