Commit 61c08d3c7e

Luuk de Gram <luuk@degram.dev>
2023-04-12 18:02:09
fix zig cc linker flags for Wasm
Closes #15258
1 parent e089073
Changed files (1)
src/main.zig
@@ -1425,7 +1425,7 @@ fn buildOutputType(
                         linker_initial_memory = parseIntSuffix(arg, "--initial-memory=".len);
                     } else if (mem.startsWith(u8, arg, "--max-memory=")) {
                         linker_max_memory = parseIntSuffix(arg, "--max-memory=".len);
-                    } else if (mem.startsWith(u8, arg, "--shared-memory")) {
+                    } else if (mem.eql(u8, arg, "--shared-memory")) {
                         linker_shared_memory = true;
                     } else if (mem.startsWith(u8, arg, "--global-base=")) {
                         linker_global_base = parseIntSuffix(arg, "--global-base=".len);
@@ -1959,16 +1959,23 @@ fn buildOutputType(
                     linker_import_table = true;
                 } else if (mem.eql(u8, arg, "--export-table")) {
                     linker_export_table = true;
-                } else if (mem.startsWith(u8, arg, "--initial-memory=")) {
-                    linker_initial_memory = parseIntSuffix(arg, "--initial-memory=".len);
-                } else if (mem.startsWith(u8, arg, "--max-memory=")) {
-                    linker_max_memory = parseIntSuffix(arg, "--max-memory=".len);
-                } else if (mem.startsWith(u8, arg, "--shared-memory")) {
+                } else if (mem.eql(u8, arg, "--initial-memory")) {
+                    const next_arg = linker_args_it.nextOrFatal();
+                    linker_initial_memory = std.fmt.parseUnsigned(u32, eatIntPrefix(next_arg, 16), 16) catch |err| {
+                        fatal("unable to parse initial memory size '{s}': {s}", .{ next_arg, @errorName(err) });
+                    };
+                } else if (mem.eql(u8, arg, "--max-memory")) {
+                    const next_arg = linker_args_it.nextOrFatal();
+                    linker_max_memory = std.fmt.parseUnsigned(u32, eatIntPrefix(next_arg, 16), 16) catch |err| {
+                        fatal("unable to parse max memory size '{s}': {s}", .{ next_arg, @errorName(err) });
+                    };
+                } else if (mem.eql(u8, arg, "--shared-memory")) {
                     linker_shared_memory = true;
-                } else if (mem.startsWith(u8, arg, "--global-base=")) {
-                    linker_global_base = parseIntSuffix(arg, "--global-base=".len);
-                } else if (mem.startsWith(u8, arg, "--export=")) {
-                    try linker_export_symbol_names.append(arg["--export=".len..]);
+                } else if (mem.eql(u8, arg, "--global-base")) {
+                    const next_arg = linker_args_it.nextOrFatal();
+                    linker_global_base = std.fmt.parseUnsigned(u32, eatIntPrefix(next_arg, 16), 16) catch |err| {
+                        fatal("unable to parse global base '{s}': {s}", .{ next_arg, @errorName(err) });
+                    };
                 } else if (mem.eql(u8, arg, "--export")) {
                     try linker_export_symbol_names.append(linker_args_it.nextOrFatal());
                 } else if (mem.eql(u8, arg, "--compress-debug-sections")) {