From edeb26171b1ea5a4efdf6ac7b972050e61098293 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Thu, 26 Feb 2026 11:24:28 +0300 Subject: [PATCH] time: fix unexpected freestanding error (fixes #15777) --- cmd/tools/vtest-all.v | 5 +++++ vlib/builtin/linux_bare/linux_syscalls.v | 26 ++++++++++++------------ vlib/time/bare/time_now_example.v | 6 ++++++ 3 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 vlib/time/bare/time_now_example.v diff --git a/cmd/tools/vtest-all.v b/cmd/tools/vtest-all.v index 324261635..e1bb2f7df 100644 --- a/cmd/tools/vtest-all.v +++ b/cmd/tools/vtest-all.v @@ -298,6 +298,11 @@ fn get_all_commands() []Command { okmsg: 'V can compile & allocate memory with -freestanding on Linux with GCC.' rmfile: 'str_array' } + res << Command{ + line: '${vexe} -cc gcc -keepc -freestanding -o time_now vlib/time/bare/time_now_example.v' + okmsg: 'V can compile time.now() with -freestanding on Linux with GCC.' + rmfile: 'time_now' + } } //////////////////////////////////////////////////////////////////////// // Test compilation of a shared library (.so, .dll. .dylib) with -shared: diff --git a/vlib/builtin/linux_bare/linux_syscalls.v b/vlib/builtin/linux_bare/linux_syscalls.v index d15313955..9c53f1bd8 100644 --- a/vlib/builtin/linux_bare/linux_syscalls.v +++ b/vlib/builtin/linux_bare/linux_syscalls.v @@ -334,7 +334,7 @@ fn sys_call0(scn u64) u64 { asm amd64 { syscall ; =a (res) - ; a (scn) + ; 0 (scn) } return res } @@ -344,7 +344,7 @@ fn sys_call1(scn u64, arg1 u64) u64 { asm amd64 { syscall ; =a (res) - ; a (scn) + ; 0 (scn) D (arg1) } return res @@ -355,7 +355,7 @@ fn sys_call2(scn u64, arg1 u64, arg2 u64) u64 { asm amd64 { syscall ; =a (res) - ; a (scn) + ; 0 (scn) D (arg1) S (arg2) } @@ -367,7 +367,7 @@ fn sys_call3(scn u64, arg1 u64, arg2 u64, arg3 u64) u64 { asm amd64 { syscall ; =a (res) - ; a (scn) + ; 0 (scn) D (arg1) S (arg2) d (arg3) @@ -381,11 +381,11 @@ fn sys_call4(scn u64, arg1 u64, arg2 u64, arg3 u64, arg4 u64) u64 { mov r10, arg4 syscall ; =a (res) - ; a (scn) + ; 0 (scn) D (arg1) S (arg2) d (arg3) - r (arg4) + g (arg4) ; r10 } return res @@ -398,12 +398,12 @@ fn sys_call5(scn u64, arg1 u64, arg2 u64, arg3 u64, arg4 u64, arg5 u64) u64 { mov r8, arg5 syscall ; =a (res) - ; a (scn) + ; 0 (scn) D (arg1) S (arg2) d (arg3) - r (arg4) - r (arg5) + g (arg4) + g (arg5) ; r10 r8 } @@ -418,13 +418,13 @@ fn sys_call6(scn u64, arg1 u64, arg2 u64, arg3 u64, arg4 u64, arg5 i64, arg6 u64 mov r9, arg6 syscall ; =a (res) - ; a (scn) + ; 0 (scn) D (arg1) S (arg2) d (arg3) - r (arg4) - r (arg5) - r (arg6) + g (arg4) + g (arg5) + g (arg6) ; r10 r8 r9 diff --git a/vlib/time/bare/time_now_example.v b/vlib/time/bare/time_now_example.v new file mode 100644 index 000000000..8e397561d --- /dev/null +++ b/vlib/time/bare/time_now_example.v @@ -0,0 +1,6 @@ +import time + +fn main() { + t := time.now() + println(t) +} -- 2.39.5