diff options
| author | Ian Lance Taylor <iant@golang.org> | 2020-03-22 12:57:36 -0700 |
|---|---|---|
| committer | Tobias Klauser <tobias.klauser@gmail.com> | 2020-03-24 11:03:07 +0000 |
| commit | 20b46c7c697ce9d833141abe9aa0ea6101f00ae2 (patch) | |
| tree | 78bead8f3d3e0eaf2fe103a514894bc6edb48065 /src/runtime | |
| parent | 9ef61d58c015e7bc297ed4404e34af5f3d514257 (diff) | |
| download | go-20b46c7c697ce9d833141abe9aa0ea6101f00ae2.tar.xz | |
runtime: negate errno value for mips pipe/pipe2
The callers expect negative errno values, so negate them when necessary.
No test because there is no reasonable way to make pipe/pipe2 fail.
This was reported on a system on which pipe2 returned ENOSYS.
Fixes #37997
Change-Id: I3ad6cbbc2521cf495f8df6ec991a3f781122b508
Reviewed-on: https://go-review.googlesource.com/c/go/+/224592
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/sys_linux_mips64x.s | 4 | ||||
| -rw-r--r-- | src/runtime/sys_linux_mipsx.s | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s index 723cfe43d9..6668a0fd86 100644 --- a/src/runtime/sys_linux_mips64x.s +++ b/src/runtime/sys_linux_mips64x.s @@ -117,6 +117,8 @@ TEXT runtime·pipe(SB),NOSPLIT|NOFRAME,$0-12 MOVV R0, R5 MOVV $SYS_pipe2, R2 SYSCALL + BEQ R7, 2(PC) + SUBVU R2, R0, R2 // caller expects negative errno MOVW R2, errno+8(FP) RET @@ -126,6 +128,8 @@ TEXT runtime·pipe2(SB),NOSPLIT|NOFRAME,$0-20 MOVW flags+0(FP), R5 MOVV $SYS_pipe2, R2 SYSCALL + BEQ R7, 2(PC) + SUBVU R2, R0, R2 // caller expects negative errno MOVW R2, errno+16(FP) RET diff --git a/src/runtime/sys_linux_mipsx.s b/src/runtime/sys_linux_mipsx.s index 15893a7a28..fab2ab3892 100644 --- a/src/runtime/sys_linux_mipsx.s +++ b/src/runtime/sys_linux_mipsx.s @@ -118,6 +118,7 @@ TEXT runtime·pipe(SB),NOSPLIT,$0-12 MOVW $-1, R1 MOVW R1, r+0(FP) MOVW R1, w+4(FP) + SUBU R2, R0, R2 // caller expects negative errno MOVW R2, errno+8(FP) RET pipeok: @@ -132,6 +133,8 @@ TEXT runtime·pipe2(SB),NOSPLIT,$0-16 MOVW flags+0(FP), R5 MOVW $SYS_pipe2, R2 SYSCALL + BEQ R7, 2(PC) + SUBU R2, R0, R2 // caller expects negative errno MOVW R2, errno+12(FP) RET |
