Merge pull request #276 from cpunion/libc

runtime: fix alias no effects on linux
This commit is contained in:
xushiwei
2024-06-06 22:33:19 +08:00
committed by GitHub
8 changed files with 13 additions and 20 deletions

6
c/c.go
View File

@@ -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 var Stdin FilePtr
//go:linkname Stdout llgo_stdout //go:linkname Stdout stdout
var Stdout FilePtr var Stdout FilePtr
//go:linkname Stderr llgo_stderr //go:linkname Stderr stderr
var Stderr FilePtr var Stderr FilePtr
//go:linkname Printf C.printf //go:linkname Printf C.printf

View File

@@ -13,7 +13,7 @@ source_filename = "main"
@3 = private unnamed_addr constant [6 x i8] c"Hello\00", align 1 @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 @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 @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 @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) { 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 store i64 3, ptr %21, align 4
%22 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %18, align 8 %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) %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 %25 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %23, 1
%26 = add i64 %25, 1 %26 = add i64 %25, 1
%27 = alloca i8, i64 %26, align 1 %27 = alloca i8, i64 %26, align 1

View File

@@ -26,13 +26,13 @@ type (
FilePtr = unsafe.Pointer FilePtr = unsafe.Pointer
) )
//go:linkname Stdin llgo_stdin //go:linkname Stdin stdin
var Stdin FilePtr var Stdin FilePtr
//go:linkname Stdout llgo_stdout //go:linkname Stdout stdout
var Stdout FilePtr var Stdout FilePtr
//go:linkname Stderr llgo_stderr //go:linkname Stderr stderr
var Stderr FilePtr var Stderr FilePtr
//go:linkname Str llgo.cstr //go:linkname Str llgo.cstr

View File

@@ -4,5 +4,5 @@
package c package c
const ( const (
LLGoPackage = "decl: stdio_default.ll" LLGoPackage = "decl: c_default.ll"
) )

View File

@@ -4,6 +4,6 @@ source_filename = "github.com/goplus/llgo/internal/runtime/c"
@__stderrp = external global ptr @__stderrp = external global ptr
@__stdinp = external global ptr @__stdinp = external global ptr
@__stdoutp = external global ptr @__stdoutp = external global ptr
@llgo_stdin = alias i8*, i8** @__stdinp @stdin = alias i8*, i8** @__stdinp
@llgo_stdout = alias i8*, i8** @__stdoutp @stdout = alias i8*, i8** @__stdoutp
@llgo_stderr = alias i8*, i8** @__stderrp @stderr = alias i8*, i8** @__stderrp

View File

@@ -4,5 +4,5 @@
package c package c
const ( const (
LLGoPackage = "decl: stdio_linux.ll" LLGoPackage = "decl: c_linux.ll"
) )

View File

@@ -1,9 +1,2 @@
; ModuleID = 'github.com/goplus/llgo/internal/runtime/c' ; ModuleID = 'github.com/goplus/llgo/internal/runtime/c'
source_filename = "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

Binary file not shown.