Skip to content

Commit

Permalink
wasm2c: Add an optional endianness command line argument.
Browse files Browse the repository at this point in the history
If not given, endianness is inferred from the target that wasm2c is built for.
  • Loading branch information
alexrp committed Oct 26, 2024
1 parent 5cb45b6 commit c2e6be9
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions stage1/wasm2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
Expand Down

0 comments on commit c2e6be9

Please sign in to comment.