1d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#!/bin/sh
2d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#
3d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# Skip the test if arch+kernel combination is not supported.
4d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#
5d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
639bac055674d23770b9a724221b728e443196ea7Elliott Hughes# Copyright (c) 2016-2017 The strace developers.
7d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# All rights reserved.
8d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#
9d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# Redistribution and use in source and binary forms, with or without
10d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# modification, are permitted provided that the following conditions
11d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# are met:
12d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# 1. Redistributions of source code must retain the above copyright
13d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#    notice, this list of conditions and the following disclaimer.
14d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# 2. Redistributions in binary form must reproduce the above copyright
15d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#    notice, this list of conditions and the following disclaimer in the
16d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#    documentation and/or other materials provided with the distribution.
17d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# 3. The name of the author may not be used to endorse or promote products
18d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#    derived from this software without specific prior written permission.
19d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#
20d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
31d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes. "${srcdir=.}/init.sh"
32d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
33d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesuname_r="$(uname -r)"
34d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughescase "$STRACE_ARCH" in
35d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	arm)
36d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# PTRACE_SET_SYSCALL is supported by linux kernel
37d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# starting with commit v2.6.16-rc1~107^2.
38d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		require_min_kernel_version_or_skip 2.6.16 ;;
39d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	aarch64)
40d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# NT_ARM_SYSTEM_CALL regset is supported by linux kernel
41d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# starting with commit v3.19-rc1~59^2~16.
42d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		require_min_kernel_version_or_skip 3.19 ;;
43d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	hppa)
44d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# Syscall number and return value modification did not work
45d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# properly before commit v4.5-rc7~31^2~1.
46d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		require_min_kernel_version_or_skip 4.5 ;;
47d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	sparc*)
48d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# Reloading the syscall number from %g1 register is supported
49d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# by linux kernel starting with commit v4.5-rc7~35^2~3.
50d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		require_min_kernel_version_or_skip 4.5 ;;
51d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	mips)
52d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# Only the native ABI is supported by the kernel properly, see
53d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		# https://sourceforge.net/p/strace/mailman/message/35587571/
5477c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		msg_prefix="mips $MIPS_ABI scno tampering does not work"
55d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		uname_m="$(uname -m)"
56d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		case "$MIPS_ABI:$uname_m" in
5777c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes			n64:mips64) ;;
5877c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes			o32:mips)
5977c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes				# is it really mips32?
6077c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes				if ../is_linux_mips_n64; then
6177c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes					skip_ "$msg_prefix on mips n64 yet"
6277c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes				fi
6377c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes				;;
6477c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes			*) skip_ "$msg_prefix on $uname_m yet" ;;
65d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes		esac ;;
66d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesesac
67