syscall: ensure openat uses variadic libc wrapper
authorPaul E. Murphy <murp@ibm.com>
Fri, 8 Jan 2021 21:43:54 +0000 (15:43 -0600)
committerIan Lance Taylor <iant@golang.org>
Tue, 12 Jan 2021 21:21:09 +0000 (13:21 -0800)
On powerpc64le, this caused a failure in TestUnshareUidGidMapping
due to stack corruption which resulted in a bogus execve syscall.

Use the existing c wrapper to ensure we respect the ppc abi for
variadic functions.

Fixes PR go/98610

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/282717

gcc/go/gofrontend/MERGE
libgo/go/syscall/exec_linux.go

index 094b8fad48312e0a986ff96c1e53e433e9c05f54..cd95c3d075575df582c0c342016a600b08c88237 100644 (file)
@@ -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.
index 38975810432973dbbcedd65bea5779094d094d01..0da6c9649668819193798af3c692458f25858bbd 100644 (file)
@@ -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).