aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-09-24 16:49:20 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-09-25 10:50:41 -0700
commitccaf82d243fda453940ebb5679d6683089ed2b34 (patch)
tree0eb72277889bdc0f9980f9b1862f63f8bc30681f /src/main.zig
parent513389bc5bd709ee5cccdf93e2881a62aca6eced (diff)
downloadzig-ccaf82d243fda453940ebb5679d6683089ed2b34.tar.gz
zig-ccaf82d243fda453940ebb5679d6683089ed2b34.zip
CLI: simpler semantics for prefixed integer args
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/main.zig b/src/main.zig
index 149f1e9310..0ac38e35e9 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -1638,10 +1638,10 @@ fn buildOutputType(
linker_z_relro = true;
} else if (mem.eql(u8, z_arg, "norelro")) {
linker_z_relro = false;
- } else if (mem.chompPrefix(u8, z_arg, "common-page-size=")) |rest| {
- linker_z_common_page_size = parseIntSuffix(rest, 0);
- } else if (mem.chompPrefix(u8, z_arg, "max-page-size=")) |rest| {
- linker_z_max_page_size = parseIntSuffix(rest, 0);
+ } else if (prefixedIntArg(z_arg, "common-page-size=")) |int| {
+ linker_z_common_page_size = int;
+ } else if (prefixedIntArg(z_arg, "max-page-size=")) |int| {
+ linker_z_max_page_size = int;
} else {
fatal("unsupported linker extension flag: -z {s}", .{z_arg});
}
@@ -1662,14 +1662,14 @@ fn buildOutputType(
linker_import_table = true;
} else if (mem.eql(u8, arg, "--export-table")) {
linker_export_table = true;
- } else if (mem.chompPrefix(u8, arg, "--initial-memory=")) |rest| {
- linker_initial_memory = parseIntSuffix(rest, 0);
- } else if (mem.chompPrefix(u8, arg, "--max-memory=")) |rest| {
- linker_max_memory = parseIntSuffix(rest, 0);
+ } else if (prefixedIntArg(arg, "--initial-memory=")) |int| {
+ linker_initial_memory = int;
+ } else if (prefixedIntArg(arg, "--max-memory=")) |int| {
+ linker_max_memory = int;
} else if (mem.eql(u8, arg, "--shared-memory")) {
create_module.opts.shared_memory = true;
- } else if (mem.chompPrefix(u8, arg, "--global-base=")) |rest| {
- linker_global_base = parseIntSuffix(rest, 0);
+ } else if (prefixedIntArg(arg, "--global-base=")) |int| {
+ linker_global_base = int;
} else if (mem.chompPrefix(u8, arg, "--export=")) |rest| {
try linker_export_symbol_names.append(arena, rest);
} else if (mem.eql(u8, arg, "-Bsymbolic")) {
@@ -2555,10 +2555,10 @@ fn buildOutputType(
linker_z_relro = false;
} else if (mem.chompPrefix(u8, z_arg, "stack-size=")) |rest| {
stack_size = parseStackSize(rest);
- } else if (mem.chompPrefix(u8, z_arg, "common-page-size=")) |rest| {
- linker_z_common_page_size = parseIntSuffix(rest, 0);
- } else if (mem.chompPrefix(u8, z_arg, "max-page-size=")) |rest| {
- linker_z_max_page_size = parseIntSuffix(rest, 0);
+ } else if (prefixedIntArg(z_arg, "common-page-size=")) |int| {
+ linker_z_common_page_size = int;
+ } else if (prefixedIntArg(z_arg, "max-page-size=")) |int| {
+ linker_z_max_page_size = int;
} else {
fatal("unsupported linker extension flag: -z {s}", .{z_arg});
}
@@ -6617,10 +6617,9 @@ fn eatIntPrefix(arg: []const u8, base: u8) []const u8 {
return arg;
}
-fn parseIntSuffix(arg: []const u8, prefix_len: usize) u64 {
- return std.fmt.parseUnsigned(u64, arg[prefix_len..], 0) catch |err| {
- fatal("unable to parse '{s}': {s}", .{ arg, @errorName(err) });
- };
+fn prefixedIntArg(arg: []const u8, prefix: []const u8) ?u64 {
+ const number = mem.chompPrefix(u8, arg, prefix) orelse return null;
+ return std.fmt.parseUnsigned(u64, number, 0) catch |err| fatal("unable to parse '{s}': {t}", .{ arg, err });
}
fn warnAboutForeignBinaries(