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>
This commit is contained in:
Ian Lance Taylor 2020-03-22 12:57:36 -07:00 committed by Tobias Klauser
parent 9ef61d58c0
commit 20b46c7c69
2 changed files with 7 additions and 0 deletions

View File

@ -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

View File

@ -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