From d28981d48ee8c50fc306a3d3c6ce476add9b1eeb Mon Sep 17 00:00:00 2001 From: Shengjing Zhu Date: Tue, 22 Feb 2022 01:57:23 +0800 Subject: [PATCH] Fix build with gccgo gccgo changes the mangling scheme https://github.com/golang/gofrontend/commit/b483d0e0a289ba5fcdbd0388cbc75393367ca870 The change is available in gcc-11, which is the least version that implements go1.16. Signed-off-by: Shengjing Zhu --- ...ess_unsafe_linux.s => subprocess_unsafe.s} | 0 ...nsafe_linux.go => subprocess_unsafe_gc.go} | 3 ++ mount/subprocess_unsafe_gccgo.go | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+) rename mount/{subprocess_unsafe_linux.s => subprocess_unsafe.s} (100%) rename mount/{subprocess_unsafe_linux.go => subprocess_unsafe_gc.go} (95%) create mode 100644 mount/subprocess_unsafe_gccgo.go diff --git a/mount/subprocess_unsafe_linux.s b/mount/subprocess_unsafe.s similarity index 100% rename from mount/subprocess_unsafe_linux.s rename to mount/subprocess_unsafe.s diff --git a/mount/subprocess_unsafe_linux.go b/mount/subprocess_unsafe_gc.go similarity index 95% rename from mount/subprocess_unsafe_linux.go rename to mount/subprocess_unsafe_gc.go index c7cb0c034..695280a6b 100644 --- a/mount/subprocess_unsafe_linux.go +++ b/mount/subprocess_unsafe_gc.go @@ -1,3 +1,6 @@ +//go:build linux && gc +// +build linux,gc + /* Copyright The containerd Authors. diff --git a/mount/subprocess_unsafe_gccgo.go b/mount/subprocess_unsafe_gccgo.go new file mode 100644 index 000000000..72c38e70d --- /dev/null +++ b/mount/subprocess_unsafe_gccgo.go @@ -0,0 +1,33 @@ +//go:build linux && gccgo +// +build linux,gccgo + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package mount + +import ( + _ "unsafe" // required for go:linkname. +) + +//go:linkname beforeFork syscall.runtime__BeforeFork +func beforeFork() + +//go:linkname afterFork syscall.runtime__AfterFork +func afterFork() + +//go:linkname afterForkInChild syscall.runtime__AfterForkInChild +func afterForkInChild()