From 1ceaf1df22ec571144792a4b4a951c62d1aba118 Mon Sep 17 00:00:00 2001 From: Li Jie Date: Thu, 6 Jun 2024 11:01:32 +0800 Subject: [PATCH] runtime: fix libc linking --- c/c.go | 6 +++--- cl/_testrt/concat/out.ll | 4 ++-- internal/runtime/c/c.go | 6 +++--- internal/runtime/c/c_default.go | 2 +- internal/runtime/c/c_default.ll | 6 +++--- internal/runtime/c/c_linux.go | 2 +- internal/runtime/c/c_linux.ll | 7 ------- internal/runtime/llgo_autogen.lla | Bin 14104 -> 14100 bytes 8 files changed, 13 insertions(+), 20 deletions(-) diff --git a/c/c.go b/c/c.go index da64e03d..c30ed0c9 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 llgo_stdin +//go:linkname Stdin stdin var Stdin FilePtr -//go:linkname Stdout llgo_stdout +//go:linkname Stdout stdout var Stdout FilePtr -//go:linkname Stderr llgo_stderr +//go:linkname Stderr stderr var Stderr FilePtr //go:linkname Printf C.printf diff --git a/cl/_testrt/concat/out.ll b/cl/_testrt/concat/out.ll index 9480aeb1..bbd1c3f6 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 -@llgo_stderr = external global ptr +@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 @llgo_stderr, align 8 + %24 = load ptr, ptr @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 a81e95f2..c16f0f22 100644 --- a/internal/runtime/c/c.go +++ b/internal/runtime/c/c.go @@ -26,13 +26,13 @@ type ( FilePtr = unsafe.Pointer ) -//go:linkname Stdin llgo_stdin +//go:linkname Stdin stdin var Stdin FilePtr -//go:linkname Stdout llgo_stdout +//go:linkname Stdout stdout var Stdout FilePtr -//go:linkname Stderr llgo_stderr +//go:linkname Stderr 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 index fd3e7261..ac9546ab 100644 --- a/internal/runtime/c/c_default.go +++ b/internal/runtime/c/c_default.go @@ -4,5 +4,5 @@ package c const ( - LLGoPackage = "decl: stdio_default.ll" + LLGoPackage = "decl: c_default.ll" ) diff --git a/internal/runtime/c/c_default.ll b/internal/runtime/c/c_default.ll index 208dd270..53fba4bb 100644 --- a/internal/runtime/c/c_default.ll +++ b/internal/runtime/c/c_default.ll @@ -4,6 +4,6 @@ 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 +@stdin = alias i8*, i8** @__stdinp +@stdout = alias i8*, i8** @__stdoutp +@stderr = alias i8*, i8** @__stderrp diff --git a/internal/runtime/c/c_linux.go b/internal/runtime/c/c_linux.go index 6f22e8de..940ba7ce 100644 --- a/internal/runtime/c/c_linux.go +++ b/internal/runtime/c/c_linux.go @@ -4,5 +4,5 @@ package c const ( - LLGoPackage = "decl: stdio_linux.ll" + LLGoPackage = "decl: c_linux.ll" ) diff --git a/internal/runtime/c/c_linux.ll b/internal/runtime/c/c_linux.ll index 4fc23ebf..9addb44e 100644 --- a/internal/runtime/c/c_linux.ll +++ b/internal/runtime/c/c_linux.ll @@ -1,9 +1,2 @@ ; 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 64fd50206b65e32a9e053ad7428ef7fc1ac342b5..7b0dadc2612e45750468f9dff587b4bf00d20997 100644 GIT binary patch delta 13435 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 delta 13439 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