aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-01-11 22:07:47 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-01-11 22:07:47 -0700
commit0edde40c25c033aec67f235365593ee26ff52740 (patch)
treedfdd8caf259e2d03ba89d4c0211d9cafb45c6064 /src/main.zig
parent56c03881ebd8617e6506bfad01bf9cfdd4d3df7e (diff)
parent5b2a79848ced20db80f3f4ce46b3ef7f4a051d53 (diff)
downloadzig-0edde40c25c033aec67f235365593ee26ff52740.tar.gz
zig-0edde40c25c033aec67f235365593ee26ff52740.zip
Merge 'Add support for no red zone'
Merges #7511
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
index b50f89e5c2..867aa348b1 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -267,6 +267,8 @@ const usage_build_generic =
\\ -mcmodel=[default|tiny| Limit range of code and data virtual addresses
\\ small|kernel|
\\ medium|large]
+ \\ -mred-zone Force-enable the "red-zone"
+ \\ -mno-red-zone Force-disable the "red-zone"
\\ --name [name] Override root name (not a file path)
\\ -O [mode] Choose what to optimize for
\\ Debug (default) Optimizations off, safety on
@@ -505,6 +507,7 @@ fn buildOutputType(
var want_pie: ?bool = null;
var want_sanitize_c: ?bool = null;
var want_stack_check: ?bool = null;
+ var want_red_zone: ?bool = null;
var want_valgrind: ?bool = null;
var want_tsan: ?bool = null;
var want_compiler_rt: ?bool = null;
@@ -843,6 +846,10 @@ fn buildOutputType(
want_stack_check = true;
} else if (mem.eql(u8, arg, "-fno-stack-check")) {
want_stack_check = false;
+ } else if (mem.eql(u8, arg, "-mred-zone")) {
+ want_red_zone = true;
+ } else if (mem.eql(u8, arg, "-mno-red-zone")) {
+ want_red_zone = false;
} else if (mem.eql(u8, arg, "-fsanitize-c")) {
want_sanitize_c = true;
} else if (mem.eql(u8, arg, "-fno-sanitize-c")) {
@@ -1068,6 +1075,8 @@ fn buildOutputType(
.no_pic => want_pic = false,
.pie => want_pie = true,
.no_pie => want_pie = false,
+ .red_zone => want_red_zone = true,
+ .no_red_zone => want_red_zone = false,
.nostdlib => ensure_libc_on_non_freestanding = false,
.nostdlib_cpp => ensure_libcpp_on_non_freestanding = false,
.shared => {
@@ -1760,6 +1769,7 @@ fn buildOutputType(
.want_pie = want_pie,
.want_sanitize_c = want_sanitize_c,
.want_stack_check = want_stack_check,
+ .want_red_zone = want_red_zone,
.want_valgrind = want_valgrind,
.want_tsan = want_tsan,
.want_compiler_rt = want_compiler_rt,
@@ -2969,6 +2979,8 @@ pub const ClangArgIterator = struct {
framework_dir,
framework,
nostdlibinc,
+ red_zone,
+ no_red_zone,
};
const Args = struct {