ssa: fix Builder.Sigsetjmp for Linux

This follows up on #597.
This commit is contained in:
Aofei Sheng
2024-07-29 11:46:08 +08:00
parent 23bfaf1ba2
commit 3b5e8edd37
3 changed files with 17 additions and 3 deletions

View File

@@ -63,7 +63,11 @@ func (b Builder) AllocaSigjmpBuf() Expr {
}
func (b Builder) Sigsetjmp(jb, savemask Expr) Expr {
fn := b.Pkg.cFunc("sigsetjmp", b.Prog.tySigsetjmp())
fname := "sigsetjmp"
if b.Prog.target.GOOS == "linux" {
fname = "__sigsetjmp"
}
fn := b.Pkg.cFunc(fname, b.Prog.tySigsetjmp())
return b.Call(fn, jb, savemask)
}

View File

@@ -19,6 +19,7 @@ package ssa
import (
"go/token"
"go/types"
"runtime"
"strconv"
"unsafe"
@@ -203,7 +204,10 @@ type Program = *aProgram
// NewProgram creates a new program.
func NewProgram(target *Target) Program {
if target == nil {
target = &Target{}
target = &Target{
GOOS: runtime.GOOS,
GOARCH: runtime.GOARCH,
}
}
ctx := llvm.NewContext()
td := target.targetData() // TODO(xsw): target config