aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-25 19:15:17 -0400
committerGitHub <noreply@github.com>2021-10-25 19:15:17 -0400
commit30d01c8fea68baab396081da040f49defa494088 (patch)
tree410ad5e004d75dfb7cf29c077ab163e8853f8748 /src/main.zig
parent97dc5f6eb531c91e8bd23a5589cae64e0a4561e8 (diff)
parentb5be01a5972d2288658eecbf6a52c3ea8331c151 (diff)
downloadzig-30d01c8fea68baab396081da040f49defa494088.tar.gz
zig-30d01c8fea68baab396081da040f49defa494088.zip
Merge pull request #9874 from leecannon/frame_pointer
Make omiting frame pointer independent of build mode
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 61380303e1..a2dd8d1d96 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -323,6 +323,8 @@ const usage_build_generic =
\\ medium|large]
\\ -mred-zone Force-enable the "red-zone"
\\ -mno-red-zone Force-disable the "red-zone"
+ \\ -fomit-frame-pointer Omit the stack frame pointer
+ \\ -fno-omit-frame-pointer Store the stack frame pointer
\\ -mexec-model=[value] Execution model (WASI only)
\\ --name [name] Override root name (not a file path)
\\ -O [mode] Choose what to optimize for
@@ -581,6 +583,7 @@ fn buildOutputType(
var want_sanitize_c: ?bool = null;
var want_stack_check: ?bool = null;
var want_red_zone: ?bool = null;
+ var omit_frame_pointer: ?bool = null;
var want_valgrind: ?bool = null;
var want_tsan: ?bool = null;
var want_compiler_rt: ?bool = null;
@@ -976,6 +979,10 @@ fn buildOutputType(
want_red_zone = true;
} else if (mem.eql(u8, arg, "-mno-red-zone")) {
want_red_zone = false;
+ } else if (mem.eql(u8, arg, "-fomit-frame-pointer")) {
+ omit_frame_pointer = true;
+ } else if (mem.eql(u8, arg, "-fno-omit-frame-pointer")) {
+ omit_frame_pointer = false;
} else if (mem.eql(u8, arg, "-fsanitize-c")) {
want_sanitize_c = true;
} else if (mem.eql(u8, arg, "-fno-sanitize-c")) {
@@ -1217,6 +1224,8 @@ fn buildOutputType(
.no_lto => want_lto = false,
.red_zone => want_red_zone = true,
.no_red_zone => want_red_zone = false,
+ .omit_frame_pointer => omit_frame_pointer = true,
+ .no_omit_frame_pointer => omit_frame_pointer = false,
.unwind_tables => want_unwind_tables = true,
.no_unwind_tables => want_unwind_tables = false,
.nostdlib => ensure_libc_on_non_freestanding = false,
@@ -2082,6 +2091,7 @@ fn buildOutputType(
.want_sanitize_c = want_sanitize_c,
.want_stack_check = want_stack_check,
.want_red_zone = want_red_zone,
+ .omit_frame_pointer = omit_frame_pointer,
.want_valgrind = want_valgrind,
.want_tsan = want_tsan,
.want_compiler_rt = want_compiler_rt,
@@ -3708,6 +3718,8 @@ pub const ClangArgIterator = struct {
nostdlibinc,
red_zone,
no_red_zone,
+ omit_frame_pointer,
+ no_omit_frame_pointer,
strip,
exec_model,
emit_llvm,