aboutsummaryrefslogtreecommitdiff
path: root/src/syscall
AgeCommit message (Collapse)Author
2017-06-20runtime, syscall: workaround for bug in Linux's execveJohn R. Lenton
Linux's execve has (at the time of writing, and since v2.6.30) a bug when it ran concurrently with clone, in that it would fail to set up some datastructures if the thread count before and after some steps differed. This is described better and in more detail by Colin King in Launchpad¹ and kernel² bugs. When a program written in Go runtime.Exec's a setuid binary, this issue may cause the resulting process to not have the expected uid. This patch works around the issue by using a mutex to serialize exec and clone. 1. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1672819 2. https://bugzilla.kernel.org/show_bug.cgi?id=195453 Fixes #19546 Change-Id: I126e87d1d9ce3be5ea4ec9c7ffe13f92e087903d Reviewed-on: https://go-review.googlesource.com/43713 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-06-20syscall: mark forkAndExecInChild1 noinlineAustin Clements
This certainly won't get inlined right now, but in the spirit of making this more robust, we have to disable inlining because inlining would defeat the purpose of separating forkAndExecInChild1 into a separate function. Updates #20732. Change-Id: I736c3f909cc42c5f5783740c2e19ba4827c7c2ec Reviewed-on: https://go-review.googlesource.com/46174 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-06-20syscall: use CLONE_VFORK safelyAustin Clements
Currently, CLONE_VFORK is used without much regard to the stack. This is dangerous, because anything the child does to the stack is visible to the parent. For example, if the compiler were to reuse named stack slots (which it currently doesn't do), it would be easy for the child running in the same stack frame as the parent to corrupt local variables that the parent then depended on. We're not sure of anything specific going wrong in this code right now, but it is at best a ticking time bomb. CLONE_VFORK can only safely be used if we ensure the child does not execute in any of the active stack frames of the parent. This commit implements this by arranging for the parent to return immediately from the frame the child will operate in, and for the child to never return to the frame the parent will operate in. Fixes #20732. Change-Id: Iad5b4ddc2b994c082bd278bfd52ef53bd38c037f Reviewed-on: https://go-review.googlesource.com/46173 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-06-14runtime, syscall: reset signal handlers to default in childIan Lance Taylor
Block all signals during a fork. In the parent process, after the fork, restore the signal mask. In the child process, reset all currently handled signals to the default handler, and then restore the signal mask. The effect of this is that the child will be operating using the same signal regime as the program it is about to exec, as exec resets all non-ignored signals to the default, and preserves the signal mask. We do this so that in the case of a signal sent to the process group, the child process will not try to run a signal handler while in the precarious state after a fork. Fixes #18600. Change-Id: I9f39aaa3884035908d687ee323c975f349d5faaa Reviewed-on: https://go-review.googlesource.com/45471 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
2017-06-08syscall: make windows Exit call runtime.exitAlex Brainman
Both runtime.exit and syscall.Exit call Windows ExitProcess. But recently (CL 34616) runtime.exit was changed to ignore Windows CreateThread errors if ExitProcess is called. This CL adjusts syscall.Exit to do the same. Fixes #18253 (maybe) Change-Id: I6496c31b01e7c7d73b69c0b2ae33ed7fbe06736b Reviewed-on: https://go-review.googlesource.com/45115 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Austin Clements <austin@google.com>
2017-06-08net: make Dial("tcp", ln.Addr().String()) work even with bad IPv6 configBrad Fitzpatrick
Some machines can be configured (or came/come configured) in such a state that IPv6 only half works: you can bind on [::]:n but not connect back to it. This implements a fallback such that it's guaranteed that this pattern works: ln, err := Listen("tcp", ":0") ... addr := ln.Addr().String() // "[::]:n" c, err := Dial("tcp", addr) ... which is also now tested. It will first try to dial "[::]:n", as before, but if that dial fails, it will also try "0.0.0.0:n". Fixes #18806 (contains more details) Fixes #20611 (I was going to fix nacl later, but it was easy enough) Change-Id: I1107eb197e902ae8185c781ad1bc4e2bc61d1f4c Reviewed-on: https://go-review.googlesource.com/45088 Reviewed-by: Paul Marks <pmarks@google.com>
2017-05-31syscall: allow processes steal a controlling terminal on LinuxJulio Montes
The current implementation of forkAndExecInChild for Linux does not allow spawned processes steal the controlling terminal from a different session group. This patch passes 1 as the argument to TIOCSCTTY in order to allow spawned processes steal controlling terminals. Fixes #20454 Change-Id: I171b8981509d648b07f89bddc1e9d45cb70e00e6 Reviewed-on: https://go-review.googlesource.com/44343 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
2017-05-19syscall: add Conn and RawConn interfacesMikio Hara
This change adds Conn and RawConn interfaces which can be used to manipulate raw network connection end points typically represented as socket descriptors. Fixes #19435. Change-Id: Ide2d28eeab91bfd27473ab47a87bec69950b64c9 Reviewed-on: https://go-review.googlesource.com/37913 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2017-05-16runtime, syscall: in Plan 9 ARM asm, replace "SWI 0" with "SWI $0"Cherry Zhang
On other systems we use "SWI $n". Change Plan 9 files to be consistent. Generated binary is unchanged. Fixes #20378. Change-Id: Ia2a722061da2450c7b30cb707ed4f172fafecf74 Reviewed-on: https://go-review.googlesource.com/43533 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-04-28syscall: fix typo in documentation for StringToUTF16PtrTommy Schaefer
Fixes #20133 Change-Id: Ic1a6eb35de1f9ddac9527335eb49bf0b52963b6a Reviewed-on: https://go-review.googlesource.com/41992 Reviewed-by: Rob Pike <r@golang.org>
2017-04-28syscall: stylistic cleanup and typo fixes in syscall_dragonfly.goMikio Hara
Now it's not very different from syscall_dragonfly.go in golang.org/x/sys/unix repository. Change-Id: I8dfd22e1ebce9dc2cc71ab9ab7f0c92d93b2b762 Reviewed-on: https://go-review.googlesource.com/41835 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-04-25syscall: fix ordering of Unshare and chroot on LinuxRonald G. Minnich
When unshare specifies a new namespace, the syscall package changes / to make namespace changes private. If a chroot is specified, the unshare must be done first. If the chroot is done first then the unshare will not specify the correct /. A new test is included which test combining chroot and CLONE_NEWNS; it fails without the patch and works with it. Fixes #20103 Change-Id: I86022803c784bd418a30383321f3d64103d95c62 Reviewed-on: https://go-review.googlesource.com/41626 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-22syscall: define ESPIPE on Plan 9David du Colombier
TestSeekError has been added in CL 41311. This test doesn't build on Plan 9 because syscall.ESPIPE is not defined on Plan 9. This change defines syscall.ESPIPE on Plan 9. Fixes #20078. Change-Id: I3d9e95b00e0c4e43312eada6441d80961ae6bd67 Reviewed-on: https://go-review.googlesource.com/41471 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
2017-04-22os, syscall: fix errno in Seek on windowsHiroshi Ioka
Current implementation use EPIPE as an error for Seek on pipes. According to http://pubs.opengroup.org/onlinepubs/009695399/functions/lseek.html, it should use ESPIPE instead. Fixes #20066 Change-Id: I24c3b95be946bc19a287d6b10f447b034a9a1283 Reviewed-on: https://go-review.googlesource.com/41311 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-18syscall: add Accept4 and SOCK_{CLOEXEC,NONBLOCK} on dragonflyMikio Hara
This change just picks a few constants from DragonfFly BSD 4.6 kernel and doesn't synchronize all the existing constants with the latest DragonFly BSD kernels. Updates #14222. Change-Id: Ie107a8bee1a09393b3b42b6f82489532f5d13290 Reviewed-on: https://go-review.googlesource.com/40894 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-04-17syscall: make TestFcntlFlock more robustMostyn Bramley-Moore
Avoid the use of constant absolute temp files in tests. This could produce flaky results, for example on multiuser development machines. Change-Id: Ia76157a0660fbe294bb31a46ded886cea5deec97 Reviewed-on: https://go-review.googlesource.com/40916 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-13syscall: fix TestGroupCleanup{UserNamespace} on AlpineJess Frazelle
This updates TestGroupCleanup and TestGroupCleanupUserNamespace to pass in the Alpine builder. Updates #19938 Change-Id: Iacbfd73782eccd57f872f9e85726c6024529c277 Reviewed-on: https://go-review.googlesource.com/40692 Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-07syscall: mark WSAECONNABORTED, WSAECONNRESET as temporary network errorsTamir Duberstein
Windows was missed in https://golang.org/cl/141600043. Fixes #6163 (again). Change-Id: I09076be80fb6b2148d3e5618461ebaa79f27d5b3 Reviewed-on: https://go-review.googlesource.com/39490 Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-05syscall: update comments for x/sys migrationLynn Boger
The comments in this package state that users should be migrating code that uses the syscall package to its corresponding package in x/sys. However, the syscall.Signal and syscall.Errno types and the syscall.SysProcAttr struct is not defined in the x/sys package and still need to be referenced from within syscall. This adds a change to the comments to clarify that the migration will need to continue to use some references to syscall for now. Fixes #19560 Change-Id: I8abb96b93bea90070ce461da16dc7bcf7b4b29c1 Reviewed-on: https://go-review.googlesource.com/39450 Reviewed-by: Rob Pike <r@golang.org>
2017-03-31syscall: skip test on TestUnshareMountNameSpace permission errorBrad Fitzpatrick
TestUnshareMountNameSpace fails on arm64 due to permission problems. Skip that test for now when permission problems are encountered, so we don't regress elsewhere in the meantime. Updates #19698 Change-Id: I9058928afa474b813652c9489f343b8957160a6c Reviewed-on: https://go-review.googlesource.com/39052 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2017-03-23os/exec: handle Unshareflags with CLONE_NEWNSRonald G. Minnich
In some newer Linux distros, systemd forces all mount namespaces to be shared, starting at /. This disables the CLONE_NEWNS flag in unshare(2) and clone(2). While this problem is most commonly seen on systems with systemd, it can happen anywhere, due to how Linux namespaces now work. Hence, to create a private mount namespace, it is not sufficient to just set CLONE_NEWS; you have to call mount(2) to change the behavior of namespaces, i.e. mount("none", "/", NULL, MS_REC|MS_PRIVATE, NULL) This is tested and working and we can now correctly start child process with private namespaces on Linux distros that use systemd. The new test works correctly on Ubuntu 16.04.2 LTS. It fails if I comment out the new Mount, and succeeds otherwise. In each case it correctly cleans up after itself. Fixes #19661 Change-Id: I52240b59628e3772b529d9bbef7166606b0c157d Reviewed-on: https://go-review.googlesource.com/38471 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-22syscall: use CLONE_VFORK and CLONE_VMRichard Musiol
This greatly improves the latency of starting a child process when the Go process is using a lot of memory. Even though the kernel uses copy-on-write, preparation for that can take up to several 100ms under certain conditions. All other goroutines are suspended while starting a subprocess so this latency directly affects total throughput. With CLONE_VM the child process shares the same memory with the parent process. On its own this would lead to conflicting use of the same memory, so CLONE_VFORK is used to suspend the parent process until the child releases the memory when switching to to the new program binary via the exec syscall. When the parent process continues to run, one has to consider the changes to memory that the child process did, namely the return address of the syscall function needs to be restored from a register. A simple benchmark has shown a difference in latency of 16ms vs. 0.5ms at 10GB memory usage. However, much higher latencies of several 100ms have been observed in real world scenarios. For more information see comments on #5838. Fixes #5838 Change-Id: I6377d7bd8dcd00c85ca0c52b6683e70ce2174ba6 Reviewed-on: https://go-review.googlesource.com/37439 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-21syscall, os: fix FreeBSD 9 buildBrad Fitzpatrick
I broke FreeBSD 9 in https://golang.org/cl/38426 by using Pipe2. We still want to support FreeBSD 9 for one last release (Go 1.9 will be the last), and FreeBSD 9 doesn't have Pipe2. So this still uses Pipe2, but falls back to Pipe on error. Updates #18854 Updates #19072 Change-Id: I1de90fb83606c93fb84b4b86fba31e207a702835 Reviewed-on: https://go-review.googlesource.com/38430 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-21syscall, os: use pipe2 syscall on FreeBSD instead of pipeBrad Fitzpatrick
The pipe2 syscall exists in all officially supported FreeBSD versions: 10, 11 and future 12. The pipe syscall no longer exists in 11 and 12. To build and run Go on these versions, kernel needs COMPAT_FREEBSD10 option. Based on Gleb Smirnoff's https://golang.org/cl/38422 Fixes #18854 Change-Id: I8e201ee1b15dca10427c3093b966025d160aaf61 Reviewed-on: https://go-review.googlesource.com/38426 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-21syscall: fix linux/mipsx ret value FP offsets for Syscall9Josh Bleecher Snyder
Found by vet. Change-Id: Idf910405566816ddce6781c8e99f90b59f33d63c Reviewed-on: https://go-review.googlesource.com/37308 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2017-02-17syscall: only call setgroups if we need toWander Lairson Costa
If the caller set ups a Credential in os/exec.Command, os/exec.Command.Start will end up calling setgroups(2), even if no supplementary groups were given. Only root can call setgroups(2) on BSD kernels, which causes Start to fail for non-root users when they try to set uid and gid for the new process. We fix by introducing a new field to syscall.Credential named NoSetGroups, and setgroups(2) is only called if it is false. We make this field with inverted logic to preserve backward compatibility. RELNOTES=yes Change-Id: I3cff1f21c117a1430834f640ef21fd4e87e06804 Reviewed-on: https://go-review.googlesource.com/36697 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-02-13cmd/go: add "syscall" to the set of packages that run extFiles++Sameer Ajmani
This eliminates the need for syscall/asm.s, which is now empty. Change-Id: Ied060195e03e9653251f54ea8ef6572444b37fdf Reviewed-on: https://go-review.googlesource.com/36844 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-13syscall: delete the "use" function and calls in non-generated files.Sameer Ajmani
Delete use stub from asm.s, leaving only a dummy file. Deleting the file causes Windows build to fail. Fixes #16607 Change-Id: Ic5a55e042e588f1e1bc6605a3d309d1eabdeb288 Reviewed-on: https://go-review.googlesource.com/36716 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-09syscall: remove "use" function and calls from generated code.Sameer Ajmani
Update syscall code generators to set build tags. Regenerate zsyscall files, which makes the following changes: - remove calls to "use" - update build tags, adding missing ones in some cases - "stat" renamed to "st" in some cases - "libc_Utimes" renamed "libc_utimes" in one case I'll mirror this change to x/sys/unix once committed. Change-Id: Ic07e0ae1433dd133eb57e8dd2a3b86a62aab4eda Reviewed-on: https://go-review.googlesource.com/36616 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-01syscall: regenerate zsyscall_darwin_arm64.go with mksyscall.plElias Naur
Notably, this change fixes the TestTCPReadWriteAllocs test because the errnoErr wrapper is now used, elimitating the allocation for common errnos. The change to Dup is caused by a CL 8095 that changed the Dup* calls to use Syscall instead of RawSyscall. Found while working on the new iOS builders. Change-Id: I44ab9dcad27db190e175aa149865b33944f48674 Reviewed-on: https://go-review.googlesource.com/36061 Reviewed-by: David Crawshaw <crawshaw@golang.org> Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-01-13syscall: export Fsid.X__val on s390xMichael Munday
mkpost.go replaces all variables prefixed with 'X_' with '_' on s390x because most of them do not need to be exposed. X__val is being used by a third party library so it turns out we do need to expose it on s390x (it is already exposed on all other Linux architectures). Fixes #17298 and updates #18632. Change-Id: Ic03463229a5f75ca41a4a4b50300da4b4d892d45 Reviewed-on: https://go-review.googlesource.com/30130 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-12runtime, syscall: update openbsd for changes to syskillJoel Sing
Change the openbsd runtime to use the current sys_kill and sys_thrkill system calls. Prior to OpenBSD 5.9 the sys_kill system call could be used with both processes and threads. In OpenBSD 5.9 this functionality was split into a sys_kill system call for processes (with a new syscall number) and a sys_thrkill system call for threads. The original/legacy system call was retained in OpenBSD 5.9 and OpenBSD 6.0, however has been removed and will not exist in the upcoming OpenBSD 6.1 release. Note: This change is needed to make Go work on OpenBSD 6.1 (to be released in May 2017) and should be included in the Go 1.8 release. This change also drops support for OpenBSD 5.8, which is already an unsupported OpenBSD release. Change-Id: I525ed9b57c66c0c6f438dfa32feb29c7eefc72b0 Reviewed-on: https://go-review.googlesource.com/34093 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-15syscall: define bind flags on Plan 9David du Colombier
These bind flags were removed by mistake in CL 2167. Fixes #17921. Change-Id: I1e8089dade30a212b8db0b216c8299946d924d4b Reviewed-on: https://go-review.googlesource.com/33271 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-14syscall: Clearenv now unsets env vars on WindowsJesse Szwedko
Previously, `os.Clearenv()` (by way of `syscall.Clearenv`) would simply set all environment variables' values to `""` rather than actually unsetting them causing subsequent `os.LookupEnv` calls to return that they were still set. Fixes #17902 Change-Id: I54081b4b98665e9a39f55ea7582c8d40bb8a2a22 Reviewed-on: https://go-review.googlesource.com/33168 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
2016-11-12all: spell "marshal" and "unmarshal" consistentlyDmitri Shuralyov
The tree is inconsistent about single l vs double l in those words in documentation, test messages, and one error value text. $ git grep -E '[Mm]arshall(|s|er|ers|ed|ing)' | wc -l 42 $ git grep -E '[Mm]arshal(|s|er|ers|ed|ing)' | wc -l 1694 Make it consistently a single l, per earlier decisions. This means contributors won't be confused by misleading precedence, and it helps consistency. Change the spelling in one error value text in newRawAttributes of crypto/x509 package to be consistent. This change was generated with: perl -i -npe 's,([Mm]arshal)l(|s|er|ers|ed|ing),$1$2,' $(git grep -l -E '[Mm]arshall' | grep -v AUTHORS | grep -v CONTRIBUTORS) Updates #12431. Follows https://golang.org/cl/14150. Change-Id: I85d28a2d7692862ccb02d6a09f5d18538b6049a2 Reviewed-on: https://go-review.googlesource.com/33017 Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-09syscall: use 32-bit setuid/setgid syscalls on linux/{386,arm}Brad Fitzpatrick
Fixes #17092 Change-Id: Ib14e4db13116ebbe4d72c414fb979d27a06d6174 Reviewed-on: https://go-review.googlesource.com/33011 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-08syscall: fix name of prlimit parametersBrad Fitzpatrick
Fixes #17606 Change-Id: I040c7621cef265d44b58f16556e6d58660a2245d Reviewed-on: https://go-review.googlesource.com/32889 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-07syscall: add Getexecname on Solaris for os.ExecutableShenghou Ma
Change-Id: Icd77ccbfe6a31117a11effb949b5826950df75a9 Reviewed-on: https://go-review.googlesource.com/16550 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-03syscall: add support for GOARCH=mips{,le}Vladimir Stefanovic
Change-Id: I39a46b2a9412981db1780b688a86fec791f68b6f Reviewed-on: https://go-review.googlesource.com/31488 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2016-10-30syscall: remove X__cmsg_data from CmsghdrIan Gudger
This field is a zero length array and has little use. Since Go 1.5, trailing zero-length arrays take up space. Both syscall.UnixRights() and syscall.ParseSocketControlMessage() depend on being able to do an unsafe cast of socket control message data to Cmsghdr this is only safe if the socket control message data is greater than or equal to the size of Cmsghdr. Since control message data that is equal in size to Cmsghdr without X__cmsg_data is a valid socket control message, we must remove X__cmsg_data or not perform the unsafe cast. Removing X__cmsg_data will prevent Go code that uses X__cmsg_data from compiling, but removing the unsafe cast will cause Go code that uses X__cmsg_data to fail or exhibit undefined behavior at runtime. It was therefore decided that removing X__cmsg_data was the better option. Fixes #17649 Change-Id: I39f323f978eca09d62da5785c5c5c9c7cbdf8c31 Reviewed-on: https://go-review.googlesource.com/32319 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-25syscall: use name+(NN)FP on plan9/amd64David du Colombier
Generated from go vet. Change-Id: Ie775c29b505166e0bd511826ef20eeb153a0424c Reviewed-on: https://go-review.googlesource.com/32071 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-25syscall: use name+(NN)FP on plan9/386David du Colombier
Generated from go vet. Change-Id: I2620e5544be46485a876c7dce26b0592bf5a4101 Reviewed-on: https://go-review.googlesource.com/32070 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-25runtime, syscall: appease vetJosh Bleecher Snyder
No functional changes. Change-Id: I0842b2560f4296abfc453410fdd79514132cab83 Reviewed-on: https://go-review.googlesource.com/31935 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-22syscall: use ERROR_IO_PENDING value in errnoErrAlex Brainman
So errnoErr can be used in other packages. This is something I missed when I sent CL 28990. Fixes #17539 Change-Id: I8ee3b79c4d70ca1e5b29e5b40024f7ae9a86061e Reviewed-on: https://go-review.googlesource.com/29690 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-19syscall: make Utimes on Solaris match all the other geeseBrad Fitzpatrick
Updates #14892 Change-Id: I640c6e1635ccdf611f219521a7d297a9885c4cb3 Reviewed-on: https://go-review.googlesource.com/31446 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-19syscall: for ForkExec on Linux, always use 32-bit setgroups system callRuss Cox
Fixes #17092. Change-Id: If203d802a919e00594ddc1282782fc59a083fd63 Reviewed-on: https://go-review.googlesource.com/31458 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-19os, syscall: fix incorrect offset calculation in Readlink on windowsHiroshi Ioka
Current implementation of syscall.Readlink mistakenly calculates the end offset of the PrintName field. Also, there are some cases that the PrintName field is empty. Instead, the CL uses SubstituteName with correct calculation. Fixes #15978 Fixes #16145 Change-Id: If3257137141129ac1c552d003726d5b9c08bb754 Reviewed-on: https://go-review.googlesource.com/31118 Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-17syscall, net: make deadline changes affect blocked read/write calls on naclBrad Fitzpatrick
Flesh out nacl's fake network system to match how all the other platforms work: all other systems' SetReadDeadline and SetWriteDeadline affect currently-blocked read & write calls. This was documented in golang.org/cl/30164 because it was the status quo and existing packages relied on it. (notably the net/http package) And add a test. Change-Id: I074a1054dcabcedc97b173dad5e827f8babf7cfc Reviewed-on: https://go-review.googlesource.com/31178 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-12syscall: update darwin/amd64 for timespec changeRuss Cox
Change-Id: I74f47f519dfee10cd079ad9a4e09e36e8d74c6dc Reviewed-on: https://go-review.googlesource.com/30937 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-12syscall: document that Exec wraps execve(2)Kevin Burke
Change-Id: I611511434f37c75f77c22f61f469108243bc0101 Reviewed-on: https://go-review.googlesource.com/29121 Reviewed-by: Russ Cox <rsc@golang.org>