| ... | @@ -688,11 +688,15 @@ fn buildOutputType( | ... | @@ -688,11 +688,15 @@ fn buildOutputType( |
| 688 | } else if (mem.eql(u8, arg, "--stack")) { | 688 | } else if (mem.eql(u8, arg, "--stack")) { |
| 689 | if (i + 1 >= args.len) fatal("expected parameter after {}", .{arg}); | 689 | if (i + 1 >= args.len) fatal("expected parameter after {}", .{arg}); |
| 690 | i += 1; | 690 | i += 1; |
| 691 | stack_size_override = parseAnyBaseInt(args[i]); | 691 | stack_size_override = std.fmt.parseUnsigned(u64, args[i], 0) catch |err| { |
| | 692 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); |
| | 693 | }; |
| 692 | } else if (mem.eql(u8, arg, "--image-base")) { | 694 | } else if (mem.eql(u8, arg, "--image-base")) { |
| 693 | if (i + 1 >= args.len) fatal("expected parameter after {}", .{arg}); | 695 | if (i + 1 >= args.len) fatal("expected parameter after {}", .{arg}); |
| 694 | i += 1; | 696 | i += 1; |
| 695 | image_base_override = parseAnyBaseInt(args[i]); | 697 | image_base_override = std.fmt.parseUnsigned(u64, args[i], 0) catch |err| { |
| | 698 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); |
| | 699 | }; |
| 696 | } else if (mem.eql(u8, arg, "--name")) { | 700 | } else if (mem.eql(u8, arg, "--name")) { |
| 697 | if (i + 1 >= args.len) fatal("expected parameter after {}", .{arg}); | 701 | if (i + 1 >= args.len) fatal("expected parameter after {}", .{arg}); |
| 698 | i += 1; | 702 | i += 1; |
| ... | @@ -1225,7 +1229,7 @@ fn buildOutputType( | ... | @@ -1225,7 +1229,7 @@ fn buildOutputType( |
| 1225 | if (i >= linker_args.items.len) { | 1229 | if (i >= linker_args.items.len) { |
| 1226 | fatal("expected linker arg after '{}'", .{arg}); | 1230 | fatal("expected linker arg after '{}'", .{arg}); |
| 1227 | } | 1231 | } |
| 1228 | version.major = std.fmt.parseInt(u32, linker_args.items[i], 10) catch |err| { | 1232 | version.major = std.fmt.parseUnsigned(u32, linker_args.items[i], 10) catch |err| { |
| 1229 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); | 1233 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); |
| 1230 | }; | 1234 | }; |
| 1231 | have_version = true; | 1235 | have_version = true; |
| ... | @@ -1234,7 +1238,7 @@ fn buildOutputType( | ... | @@ -1234,7 +1238,7 @@ fn buildOutputType( |
| 1234 | if (i >= linker_args.items.len) { | 1238 | if (i >= linker_args.items.len) { |
| 1235 | fatal("expected linker arg after '{}'", .{arg}); | 1239 | fatal("expected linker arg after '{}'", .{arg}); |
| 1236 | } | 1240 | } |
| 1237 | version.minor = std.fmt.parseInt(u32, linker_args.items[i], 10) catch |err| { | 1241 | version.minor = std.fmt.parseUnsigned(u32, linker_args.items[i], 10) catch |err| { |
| 1238 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); | 1242 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); |
| 1239 | }; | 1243 | }; |
| 1240 | have_version = true; | 1244 | have_version = true; |
| ... | @@ -1243,13 +1247,17 @@ fn buildOutputType( | ... | @@ -1243,13 +1247,17 @@ fn buildOutputType( |
| 1243 | if (i >= linker_args.items.len) { | 1247 | if (i >= linker_args.items.len) { |
| 1244 | fatal("expected linker arg after '{}'", .{arg}); | 1248 | fatal("expected linker arg after '{}'", .{arg}); |
| 1245 | } | 1249 | } |
| 1246 | stack_size_override = parseAnyBaseInt(linker_args.items[i]); | 1250 | stack_size_override = std.fmt.parseUnsigned(u64, linker_args.items[i], 0) catch |err| { |
| | 1251 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); |
| | 1252 | }; |
| 1247 | } else if (mem.eql(u8, arg, "--image-base")) { | 1253 | } else if (mem.eql(u8, arg, "--image-base")) { |
| 1248 | i += 1; | 1254 | i += 1; |
| 1249 | if (i >= linker_args.items.len) { | 1255 | if (i >= linker_args.items.len) { |
| 1250 | fatal("expected linker arg after '{}'", .{arg}); | 1256 | fatal("expected linker arg after '{}'", .{arg}); |
| 1251 | } | 1257 | } |
| 1252 | image_base_override = parseAnyBaseInt(linker_args.items[i]); | 1258 | image_base_override = std.fmt.parseUnsigned(u64, linker_args.items[i], 0) catch |err| { |
| | 1259 | fatal("unable to parse '{}': {}", .{ arg, @errorName(err) }); |
| | 1260 | }; |
| 1253 | } else { | 1261 | } else { |
| 1254 | warn("unsupported linker arg: {}", .{arg}); | 1262 | warn("unsupported linker arg: {}", .{arg}); |
| 1255 | } | 1263 | } |
| ... | @@ -3188,18 +3196,3 @@ pub fn cleanExit() void { | ... | @@ -3188,18 +3196,3 @@ pub fn cleanExit() void { |
| 3188 | process.exit(0); | 3196 | process.exit(0); |
| 3189 | } | 3197 | } |
| 3190 | } | 3198 | } |
| 3191 | | | |
| 3192 | fn parseAnyBaseInt(prefixed_bytes: []const u8) u64 { | | |
| 3193 | const base: u8 = if (mem.startsWith(u8, prefixed_bytes, "0x")) | | |
| 3194 | 16 | | |
| 3195 | else if (mem.startsWith(u8, prefixed_bytes, "0o")) | | |
| 3196 | 8 | | |
| 3197 | else if (mem.startsWith(u8, prefixed_bytes, "0b")) | | |
| 3198 | 2 | | |
| 3199 | else | | |
| 3200 | @as(u8, 10); | | |
| 3201 | const bytes = if (base == 10) prefixed_bytes else prefixed_bytes[2..]; | | |
| 3202 | return std.fmt.parseInt(u64, bytes, base) catch |err| { | | |
| 3203 | fatal("unable to parse '{}': {}", .{ prefixed_bytes, @errorName(err) }); | | |
| 3204 | }; | | |
| 3205 | } | | |