syscall: skip TestSyscallNoError on mips{,le}

On MIPS, Linux returns whether the syscall had an error in a separate
register (R7), not using a negative return value as on other
architectures. Thus, skip TestSyscallNoError as there is no error case
for syscall.RawSyscall which it could test against.

Also reformat the error output so the expected and gotten values are
aligned so they're easier to compare.

Fixes #35422

Change-Id: Ibc88f7c5382bb7ee8faf15ad4589ca1f9f017a06
Reviewed-on: https://go-review.googlesource.com/c/go/+/205898
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
diff --git a/src/syscall/syscall_linux_test.go b/src/syscall/syscall_linux_test.go
index 8a57863..e30a10b 100644
--- a/src/syscall/syscall_linux_test.go
+++ b/src/syscall/syscall_linux_test.go
@@ -299,6 +299,14 @@
 		t.Skip("skipping on non-32bit architecture")
 	}
 
+	// See https://golang.org/issue/35422
+	// On MIPS, Linux returns whether the syscall had an error in a separate
+	// register (R7), not using a negative return value as on other
+	// architectures.
+	if runtime.GOARCH == "mips" || runtime.GOARCH == "mipsle" {
+		t.Skipf("skipping on %s", runtime.GOARCH)
+	}
+
 	if os.Getuid() != 0 {
 		t.Skip("skipping root only test")
 	}
@@ -363,7 +371,8 @@
 		if filesystemIsNoSUID(tmpBinary) {
 			t.Skip("skipping test when temp dir is mounted nosuid")
 		}
-		t.Errorf("expected %s, got %s", want, got)
+		// formatted so the values are aligned for easier comparison
+		t.Errorf("expected %s,\ngot      %s", want, got)
 	}
 }