This libgo patch by Paul Murphy ensures that openat always uses the variadic libc wrapper. On powerpc64le, not using the wrapper caused a failure in TestUnshareUidGidMapping due to stack corruption which resulted in a bogus execve syscall. This fixes GCC PR 98610. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
3cab7034b52dbc40c78c8ccb1738795de80e927b diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 094b8fad483..cd95c3d0755 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -a2578eb3983514641f0baf44d27d6474d3a96758 +255657dc8d61ab26121ca68f124412ef37599166 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/syscall/exec_linux.go b/libgo/go/syscall/exec_linux.go index 38975810432..0da6c964966 100644 --- a/libgo/go/syscall/exec_linux.go +++ b/libgo/go/syscall/exec_linux.go @@ -20,7 +20,7 @@ import ( //mount(source *byte, target *byte, fstype *byte, flags _C_long, data *byte) _C_int //sysnb rawOpenat(dirfd int, pathname *byte, flags int, perm uint32) (fd int, err Errno) -//openat(dirfd _C_int, pathname *byte, flags _C_int, perm Mode_t) _C_int +//__go_openat(dirfd _C_int, pathname *byte, flags _C_int, perm Mode_t) _C_int // SysProcIDMap holds Container ID to Host ID mappings used for User Namespaces in Linux. // See user_namespaces(7).