diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-08-19 06:41:34 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-19 06:41:34 -0400 |
| commit | be2bd5848a880765f4bc7e2363ef201a0930a04b (patch) | |
| tree | 868694d734e82cb93b52b6c0c155d932f5f65f8f /src/codegen/llvm.zig | |
| parent | 2ccaa5414b904edb2f4af293291f5401d106f277 (diff) | |
| parent | fdb934a157230ae6d3f11dee8d0d62013d5b919e (diff) | |
| download | zig-be2bd5848a880765f4bc7e2363ef201a0930a04b.tar.gz zig-be2bd5848a880765f4bc7e2363ef201a0930a04b.zip | |
Merge pull request #12472 from ziglang/stage2-stack-protector
stage2: implement stack protectors
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 8c84f61a81..0898c8fe87 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -711,9 +711,14 @@ pub const Object = struct { DeclGen.removeFnAttr(llvm_func, "noinline"); } - // TODO: port these over from stage1 - // addLLVMFnAttr(llvm_fn, "sspstrong"); - // addLLVMFnAttrStr(llvm_fn, "stack-protector-buffer-size", "4"); + // TODO: disable this if safety is off for the function scope + const ssp_buf_size = module.comp.bin_file.options.stack_protector; + if (ssp_buf_size != 0) { + var buf: [12]u8 = undefined; + const arg = std.fmt.bufPrintZ(&buf, "{d}", .{ssp_buf_size}) catch unreachable; + dg.addFnAttr(llvm_func, "sspstrong"); + dg.addFnAttrString(llvm_func, "stack-protector-buffer-size", arg); + } // TODO: disable this if safety is off for the function scope if (module.comp.bin_file.options.stack_check) { |
