Commit Graph

150 Commits

Author SHA1 Message Date
Yawning Angel 61c581baeb core/sys/unix: Add syscalls_linux.odin
Linux is in the unfortunate situation where the system call number is
architecture specific.  This consolidates the system call number
definitions in a single location, adds some wrappers, and hopefully
fixes the existing non-portable invocations of the syscall intrinsic.
2021-11-17 14:00:00 +00:00
Yawning Angel 672fc9fc4d core/mem: Add zero_explicit
This call is intended to provide the ability to securely scrub memory
without compiler interference, in a similar manner to explicit_bzero,
memset_s, SecureZeroMemory.

The approach taken is a volatile memset followed by a seqentially
consistent memory fence, to prevent the call from being optimized away
by DSE, and from being reordered.  An identical approach is currently
being used by the zeroize Rust crate, and is effective in practice.

LLVM IR output:
```
; Function Attrs: nounwind
define internal i8* @mem.zero_explicit(i8* %0, i64 %1) #0 {
decls:
  call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 %1, i1 true)
  fence seq_cst
  ret i8* %0
}
```
2021-10-31 22:57:13 +00:00
gingerBill aaaddd03a6 Improve internal procedures 2021-10-25 01:28:06 +01:00
gingerBill 58e3f779f2 Remove nonsense from static_arena_init 2021-10-05 17:12:24 +01:00
gingerBill 455d64fbd4 Add error value to commit 2021-10-05 17:11:12 +01:00
gingerBill 16ca677c1f Correct mmap usage 2021-10-05 17:05:33 +01:00
gingerBill 1f1434b384 Add arena_util.odin 2021-10-05 16:42:42 +01:00
gingerBill f83370235f Add static_arena_bootstrap_new 2021-10-05 16:39:14 +01:00
gingerBill 4961aff51b Minor cleanup 2021-10-05 16:37:15 +01:00
gingerBill 0ed3143006 Merge branch 'master' of https://github.com/odin-lang/Odin 2021-10-05 16:28:25 +01:00
gingerBill bc2b8b597c Add virtual.Static_Arena 2021-10-05 16:28:14 +01:00
gingerBill ccc4c641c4 Clean up Memory_Block logic 2021-10-05 16:25:30 +01:00
Jeroen van Rijn 1931e3147d Remove assert from mem.ptr_to_bytes. Fixes #1206 2021-10-05 14:18:48 +02:00
gingerBill 9d9ec192f1 Rename to growing_arena.odin 2021-10-04 17:57:59 +01:00
gingerBill 586a000152 Add Protect_Flags for virtual.protect 2021-10-04 17:42:15 +01:00
gingerBill 728f143e33 Add virtual_linux.odin 2021-10-04 17:30:06 +01:00
gingerBill f2e78dcc0b Separate out the virtual memory allocation procedures
`reserve`, `commit`, `reserve_and_commit`, `decommit`, `release`, `protect`
2021-10-04 16:43:52 +01:00
gingerBill e05a305764 Minor clean up 2021-10-03 12:43:11 +01:00
gingerBill a437c95fed Remove mutex from Growing_Arena; Add Growing_Arena_Temp 2021-10-03 12:41:24 +01:00
gingerBill 8fe70978ff Add @(init) usage to core:mem/virtual 2021-10-03 12:40:51 +01:00
gingerBill 08ac2fd1b6 Rename virtual.Arena to virtual.Growing_Arena 2021-09-29 16:50:36 +01:00
gingerBill b2a36f204e Add a mutex to arena_free_all 2021-09-29 16:46:14 +01:00
gingerBill efdd5cf499 Add a mutex to virtual.Arena 2021-09-29 16:43:58 +01:00
gingerBill 805e48ae1e Add core:mem/virtual 2021-09-29 16:39:20 +01:00
gingerBill 6fa3c992b5 mem.Raw_* alias runtime.Raw_* 2021-09-25 17:29:51 +01:00
gingerBill bfc92d0aaf Make runtime.memset use int for the length from uint 2021-09-23 23:43:29 +01:00
Jeroen van Rijn eb9665f836 fix mem.new_clone 2021-09-19 22:19:06 +02:00
Jeroen van Rijn bf15e63130 Revert "Merge pull request #1177 from Kelimion/new_clone"
This reverts commit efa513262e, reversing
changes made to daccfca11d.
2021-09-19 22:16:02 +02:00
Jeroen van Rijn 64ce55944a fix mem.new_clone 2021-09-19 22:10:19 +02:00
gingerBill ab85571ae6 Minor improvements to mem.odin 2021-09-11 16:33:05 +01:00
gingerBill b712c84afb Fix typo 2021-09-10 16:37:43 +01:00
gingerBill 9980f81062 Add other constants to c and libc 2021-09-10 16:14:39 +01:00
gingerBill 12af657369 Unify memset usage across platforms and core:c/libc 2021-09-10 15:59:14 +01:00
gingerBill 99df0f1b12 libc changes: unify c and libc types; Add [^]T where appropriate 2021-09-10 15:41:51 +01:00
gingerBill ca33cb990b Strip semicolons in core which were missing 2021-09-08 13:12:38 +01:00
gingerBill 3754af62d6 Correct "contextless" stuff in mem 2021-09-08 11:43:00 +01:00
gingerBill 12296cec2c Fix typo 2021-09-08 11:38:22 +01:00
gingerBill a9f4273514 Make many mem procedures "contextless" 2021-09-08 11:18:05 +01:00
gingerBill 720884e0f1 Strip even more semicolons if followed by a } or ) on the same line 2021-08-31 23:47:57 +01:00
gingerBill 251da264ed Remove unneeded semicolons from the core library 2021-08-31 22:21:13 +01:00
gingerBill a5c31bbee0 Add map_insert which returns the pointer to inserted value 2021-08-29 11:45:11 +01:00
gingerBill 81623861c0 Correct mem.clone_slice 2021-08-23 14:33:54 +01:00
gingerBill 4ccf135892 Unify new/make the internal logic between runtime and mem 2021-08-23 12:35:29 +01:00
gingerBill d5bad374d9 Remove deprecated procedure slice_ptr_to_bytes 2021-08-22 12:55:57 +01:00
gingerBill 445ed9be2b Use multi-pointers when appropriate 2021-08-22 12:54:04 +01:00
gingerBill f0437a4242 Enforce core:builtin and core:intrinsics for imports 2021-08-21 13:44:16 +01:00
gingerBill 2f5edebefa Rename mem.reinterpret to mem.reinterpret_copy 2021-08-20 10:19:30 +01:00
gingerBill b5cdb331b0 Add mem.reinterpret 2021-08-20 10:18:34 +01:00
gingerBill 7bbc9a4634 Add #any_int directive to replace auto_cast uses on parameters. 2021-08-15 12:56:59 +01:00
gingerBill 4d00c2b800 Allocator_Error.Mode_Not_Implemented; Minor improvement to map runtime procedures 2021-08-08 14:29:45 +01:00