diff --git a/c/c.go b/c/c.go index e557e829..da64e03d 100644 --- a/c/c.go +++ b/c/c.go @@ -97,13 +97,13 @@ func Qsort(base Pointer, count, elem uintptr, compar func(a, b Pointer) Int) // ----------------------------------------------------------------------------- -//go:linkname Stdin __stdinp +//go:linkname Stdin llgo_stdin var Stdin FilePtr -//go:linkname Stdout __stdoutp +//go:linkname Stdout llgo_stdout var Stdout FilePtr -//go:linkname Stderr __stderrp +//go:linkname Stderr llgo_stderr var Stderr FilePtr //go:linkname Printf C.printf diff --git a/cl/_testrt/concat/out.ll b/cl/_testrt/concat/out.ll index 1ef2685d..9480aeb1 100644 --- a/cl/_testrt/concat/out.ll +++ b/cl/_testrt/concat/out.ll @@ -13,7 +13,7 @@ source_filename = "main" @3 = private unnamed_addr constant [6 x i8] c"Hello\00", align 1 @4 = private unnamed_addr constant [2 x i8] c" \00", align 1 @5 = private unnamed_addr constant [6 x i8] c"World\00", align 1 -@__stderrp = external global ptr +@llgo_stderr = external global ptr @6 = private unnamed_addr constant [8 x i8] c"Hi, %s\0A\00", align 1 define %"github.com/goplus/llgo/internal/runtime.String" @main.concat(%"github.com/goplus/llgo/internal/runtime.Slice" %0) { @@ -119,7 +119,7 @@ _llgo_0: store i64 3, ptr %21, align 4 %22 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %18, align 8 %23 = call %"github.com/goplus/llgo/internal/runtime.String" @main.concat(%"github.com/goplus/llgo/internal/runtime.Slice" %22) - %24 = load ptr, ptr @__stderrp, align 8 + %24 = load ptr, ptr @llgo_stderr, align 8 %25 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %23, 1 %26 = add i64 %25, 1 %27 = alloca i8, i64 %26, align 1 diff --git a/internal/runtime/c/c.go b/internal/runtime/c/c.go index 3d200e36..a81e95f2 100644 --- a/internal/runtime/c/c.go +++ b/internal/runtime/c/c.go @@ -19,10 +19,6 @@ package c import "C" import "unsafe" -const ( - LLGoPackage = "decl" -) - type ( Char = int8 Int = C.int @@ -30,13 +26,13 @@ type ( FilePtr = unsafe.Pointer ) -//go:linkname Stdin __stdinp +//go:linkname Stdin llgo_stdin var Stdin FilePtr -//go:linkname Stdout __stdoutp +//go:linkname Stdout llgo_stdout var Stdout FilePtr -//go:linkname Stderr __stderrp +//go:linkname Stderr llgo_stderr var Stderr FilePtr //go:linkname Str llgo.cstr diff --git a/internal/runtime/c/c_default.go b/internal/runtime/c/c_default.go new file mode 100644 index 00000000..fd3e7261 --- /dev/null +++ b/internal/runtime/c/c_default.go @@ -0,0 +1,8 @@ +//go:build !linux +// +build !linux + +package c + +const ( + LLGoPackage = "decl: stdio_default.ll" +) diff --git a/internal/runtime/c/c_default.ll b/internal/runtime/c/c_default.ll new file mode 100644 index 00000000..208dd270 --- /dev/null +++ b/internal/runtime/c/c_default.ll @@ -0,0 +1,9 @@ +; ModuleID = 'github.com/goplus/llgo/internal/runtime/c' +source_filename = "github.com/goplus/llgo/internal/runtime/c" + +@__stderrp = external global ptr +@__stdinp = external global ptr +@__stdoutp = external global ptr +@llgo_stdin = alias i8*, i8** @__stdinp +@llgo_stdout = alias i8*, i8** @__stdoutp +@llgo_stderr = alias i8*, i8** @__stderrp diff --git a/internal/runtime/c/c_linux.go b/internal/runtime/c/c_linux.go new file mode 100644 index 00000000..6f22e8de --- /dev/null +++ b/internal/runtime/c/c_linux.go @@ -0,0 +1,8 @@ +//go:build linux +// +build linux + +package c + +const ( + LLGoPackage = "decl: stdio_linux.ll" +) diff --git a/internal/runtime/c/c_linux.ll b/internal/runtime/c/c_linux.ll new file mode 100644 index 00000000..4fc23ebf --- /dev/null +++ b/internal/runtime/c/c_linux.ll @@ -0,0 +1,9 @@ +; ModuleID = 'github.com/goplus/llgo/internal/runtime/c' +source_filename = "github.com/goplus/llgo/internal/runtime/c" + +@stderr = external global ptr +@stdin = external global ptr +@stdout = external global ptr +@llgo_stdin = alias i8*, i8** @stdin +@llgo_stdout = alias i8*, i8** @stdout +@llgo_stderr = alias i8*, i8** @stderr diff --git a/internal/runtime/llgo_autogen.lla b/internal/runtime/llgo_autogen.lla index 4cb3ec4a..64fd5020 100644 Binary files a/internal/runtime/llgo_autogen.lla and b/internal/runtime/llgo_autogen.lla differ