aboutsummaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-02-03 12:30:00 +0000
committerGitHub <noreply@github.com>2024-02-03 12:30:00 +0000
commit5f0f9f477ea26fbd4d9bc60df0280cd3a4ea9d6f (patch)
tree5fe4c99c1b5aec44116a1209ec295607b1890976 /base
parentdd7c65a89c2fed8c3550ddd3cf43cc71cf2bab4a (diff)
parenteb811e8341f9797501103aee6921196fb6b23f49 (diff)
Merge pull request #3161 from laytan/fix-no-crt-darwin
fix -no-crt on Darwin
Diffstat (limited to 'base')
-rw-r--r--base/runtime/os_specific_darwin.odin23
1 files changed, 6 insertions, 17 deletions
diff --git a/base/runtime/os_specific_darwin.odin b/base/runtime/os_specific_darwin.odin
index 5d2709d1f..84de03f0f 100644
--- a/base/runtime/os_specific_darwin.odin
+++ b/base/runtime/os_specific_darwin.odin
@@ -2,25 +2,14 @@
//+private
package runtime
-foreign import libc "system:System.framework"
-
-@(default_calling_convention="c")
-foreign libc {
- @(link_name="__stderrp")
- _stderr: rawptr
-
- @(link_name="fwrite")
- _fwrite :: proc(ptr: rawptr, size: uint, nmemb: uint, stream: rawptr) -> uint ---
-
- @(link_name="__error")
- _get_errno :: proc() -> ^i32 ---
-}
+import "base:intrinsics"
_stderr_write :: proc "contextless" (data: []byte) -> (int, _OS_Errno) {
- ret := _fwrite(raw_data(data), 1, len(data), _stderr)
- if ret < len(data) {
- err := _get_errno()
- return int(ret), _OS_Errno(err^ if err != nil else 0)
+ WRITE :: 0x20000004
+ STDERR :: 2
+ ret := intrinsics.syscall(WRITE, STDERR, uintptr(raw_data(data)), uintptr(len(data)))
+ if ret < 0 {
+ return 0, _OS_Errno(-ret)
}
return int(ret), 0
}