diff --git a/c/c.go b/c/c.go index c30ed0c9..cfa9a77c 100644 --- a/c/c.go +++ b/c/c.go @@ -97,15 +97,6 @@ func Qsort(base Pointer, count, elem uintptr, compar func(a, b Pointer) Int) // ----------------------------------------------------------------------------- -//go:linkname Stdin stdin -var Stdin FilePtr - -//go:linkname Stdout stdout -var Stdout FilePtr - -//go:linkname Stderr stderr -var Stderr FilePtr - //go:linkname Printf C.printf func Printf(format *Char, __llgo_va_list ...any) Int diff --git a/c/c_default.go b/c/c_default.go new file mode 100644 index 00000000..cc98cc44 --- /dev/null +++ b/c/c_default.go @@ -0,0 +1,15 @@ +//go:build !linux +// +build !linux + +package c + +import _ "unsafe" + +//go:linkname Stdin __stdinp +var Stdin FilePtr + +//go:linkname Stdout __stdoutp +var Stdout FilePtr + +//go:linkname Stderr __stderrp +var Stderr FilePtr diff --git a/c/c_linux.go b/c/c_linux.go new file mode 100644 index 00000000..a6a21c39 --- /dev/null +++ b/c/c_linux.go @@ -0,0 +1,15 @@ +//go:build linux +// +build linux + +package c + +import _ "unsafe" + +//go:linkname Stdin stdin +var Stdin FilePtr + +//go:linkname Stdout stdout +var Stdout FilePtr + +//go:linkname Stderr stderr +var Stderr FilePtr diff --git a/internal/build/build.go b/internal/build/build.go index d8718a05..afd731cc 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -294,7 +294,9 @@ func linkMainPkg(pkg *packages.Package, pkgs []*aPackage, runtimeFiles []string, dirty := false if needRuntime && runtimeFiles != nil { - args = append(args, runtimeFiles...) + for _, file := range runtimeFiles { + args = appendLinkFiles(args, file) + } } else { dirty = true fn := aPkg.LPkg.FuncOf(cl.RuntimeInit)