mirror of
https://github.com/ziglang/zig.git
synced 2026-01-11 09:55:12 +00:00
stage1: apply LLVM ssp attributes globally
instead of per-function. Otherwise LLVM asserts with: "stack protected callee but caller requested no stack protector"
This commit is contained in:
parent
da54e7cd00
commit
bbb3403b5d
@ -492,14 +492,12 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
|
||||
if (fn->body_node != nullptr) {
|
||||
maybe_export_dll(g, llvm_fn, linkage);
|
||||
|
||||
bool want_fn_safety = g->build_mode != BuildModeFastRelease &&
|
||||
bool want_ssp_attrs = g->build_mode != BuildModeFastRelease &&
|
||||
g->build_mode != BuildModeSmallRelease &&
|
||||
!fn->def_scope->safety_off;
|
||||
if (want_fn_safety) {
|
||||
if (g->link_libc) {
|
||||
addLLVMFnAttr(llvm_fn, "sspstrong");
|
||||
addLLVMFnAttrStr(llvm_fn, "stack-protector-buffer-size", "4");
|
||||
}
|
||||
g->link_libc;
|
||||
if (want_ssp_attrs) {
|
||||
addLLVMFnAttr(llvm_fn, "sspstrong");
|
||||
addLLVMFnAttrStr(llvm_fn, "stack-protector-buffer-size", "4");
|
||||
}
|
||||
if (g->have_stack_probing && !fn->def_scope->safety_off) {
|
||||
addLLVMFnAttrStr(llvm_fn, "probe-stack", "__zig_probe_stack");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user