From eb811e8341f9797501103aee6921196fb6b23f49 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 2 Feb 2024 19:49:40 +0100 Subject: [PATCH] fix -no-crt on Darwin --- base/runtime/os_specific_darwin.odin | 23 ++++++----------------- 1 file 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 }