diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2024-02-03 12:30:00 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-03 12:30:00 +0000 |
| commit | 5f0f9f477ea26fbd4d9bc60df0280cd3a4ea9d6f (patch) | |
| tree | 5fe4c99c1b5aec44116a1209ec295607b1890976 /base | |
| parent | dd7c65a89c2fed8c3550ddd3cf43cc71cf2bab4a (diff) | |
| parent | eb811e8341f9797501103aee6921196fb6b23f49 (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.odin | 23 |
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 } |