syscall: don't assume we have a GETEUID system call

On Alpha GNU/Linux there is no geteuid system call, there is only
    getresuid.  The raw geteuid system call is only used for testing, so
    just skip the test if it's not available.
    
    Reviewed-on: https://go-review.googlesource.com/137655

From-SVN: r264647
This commit is contained in:
Ian Lance Taylor 2018-09-26 15:17:30 +00:00
parent 6693898454
commit dd554b787d
3 changed files with 11 additions and 1 deletions

View File

@ -1,4 +1,4 @@
e7b98cf0a380eb45791cd5c52897224a686dcdec
944784a93cf89d3a238e5607c993ea5f18f99c12
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -302,6 +302,10 @@ func TestSyscallNoError(t *testing.T) {
t.Skip("skipping root only test")
}
if syscall.Sys_GETEUID == 0 {
t.Skip("skipping because there is no geteuid system call")
}
// Copy the test binary to a location that a non-root user can read/execute
// after we drop privileges
tempDir, err := ioutil.TempDir("", "TestSyscallNoError")

View File

@ -138,6 +138,12 @@ if ! grep '^const SYS_GETDENTS64 ' ${OUT} >/dev/null 2>&1; then
echo "const SYS_GETDENTS64 = 0" >> ${OUT}
fi
# The syscall package wants the geteuid system call number. It isn't
# defined on Alpha, which only provides the getresuid system call.
if ! grep '^const SYS_GETEUID ' ${OUT} >/dev/null 2>&1; then
echo "const SYS_GETEUID = 0" >> ${OUT}
fi
# Stat constants.
grep '^const _S_' gen-sysinfo.go | \
sed -e 's/^\(const \)_\(S_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}