diff --git a/c/setjmp/setjmp.go b/c/setjmp/setjmp.go index 89c6745a1..c4bccb189 100644 --- a/c/setjmp/setjmp.go +++ b/c/setjmp/setjmp.go @@ -44,9 +44,6 @@ func Longjmp(env *JmpBuf, val c.Int) // ----------------------------------------------------------------------------- -//go:linkname Sigsetjmp C.sigsetjmp -func Sigsetjmp(env *SigjmpBuf, savemask c.Int) c.Int - //go:linkname Siglongjmp C.siglongjmp func Siglongjmp(env *SigjmpBuf, val c.Int) diff --git a/c/setjmp/setjmp_linux.go b/c/setjmp/setjmp_linux.go new file mode 100644 index 000000000..17bad9161 --- /dev/null +++ b/c/setjmp/setjmp_linux.go @@ -0,0 +1,12 @@ +//go:build linux + +package setjmp + +import ( + _ "unsafe" + + "github.com/goplus/llgo/c" +) + +//go:linkname Sigsetjmp C.__sigsetjmp +func Sigsetjmp(env *SigjmpBuf, savemask c.Int) c.Int diff --git a/c/setjmp/setjmp_other.go b/c/setjmp/setjmp_other.go new file mode 100644 index 000000000..a83d513d8 --- /dev/null +++ b/c/setjmp/setjmp_other.go @@ -0,0 +1,12 @@ +//go:build !linux + +package setjmp + +import ( + _ "unsafe" + + "github.com/goplus/llgo/c" +) + +//go:linkname Sigsetjmp C.sigsetjmp +func Sigsetjmp(env *SigjmpBuf, savemask c.Int) c.Int diff --git a/internal/build/build.go b/internal/build/build.go index 6de1e0c4e..aa3b8b893 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -356,6 +356,8 @@ func linkMainPkg(ctx *context, pkg *packages.Package, pkgs []*aPackage, llFiles "-rpath", "$ORIGIN", "-rpath", "$ORIGIN/../lib", "-Xlinker", "--gc-sections", + "-lm", + "-latomic", "-lpthread", // libpthread is built-in since glibc 2.34 (2021-08-01); we need to support earlier versions. ) }