aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2021-10-31 23:32:46 +0000
committerGitHub <noreply@github.com>2021-10-31 23:32:46 +0000
commit0bc3652fc7ef2d06c17043220275932875658e10 (patch)
treeddd9d9d9110cc8b5d8f508af0467588e2c65fac4 /src/llvm_backend_proc.cpp
parent141299eb02bc9a7330daa30d75d279e84ba28cc3 (diff)
parent672fc9fc4d20d06810a66aa6133a94a0565eae05 (diff)
Merge pull request #1256 from Yawning/feature/volatile-memset
Add a way to securely scrub memory
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 29f7b6655..e1edfcac7 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -1560,7 +1560,18 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
len = lb_emit_conv(p, len, t_int);
unsigned alignment = 1;
- lb_mem_zero_ptr_internal(p, ptr.value, len.value, alignment);
+ lb_mem_zero_ptr_internal(p, ptr.value, len.value, alignment, false);
+ return {};
+ }
+ case BuiltinProc_mem_zero_volatile:
+ {
+ lbValue ptr = lb_build_expr(p, ce->args[0]);
+ lbValue len = lb_build_expr(p, ce->args[1]);
+ ptr = lb_emit_conv(p, ptr, t_rawptr);
+ len = lb_emit_conv(p, len, t_int);
+
+ unsigned alignment = 1;
+ lb_mem_zero_ptr_internal(p, ptr.value, len.value, alignment, true);
return {};
}