xref: /aosp_15_r20/external/strace/linux/arm/set_scno.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker #ifndef PTRACE_SET_SYSCALL
2*cf84ac9aSAndroid Build Coastguard Worker # define PTRACE_SET_SYSCALL 23
3*cf84ac9aSAndroid Build Coastguard Worker #endif
4*cf84ac9aSAndroid Build Coastguard Worker /*
5*cf84ac9aSAndroid Build Coastguard Worker  * PTRACE_SET_SYSCALL is supported by linux kernel
6*cf84ac9aSAndroid Build Coastguard Worker  * starting with commit v2.6.16-rc1~107^2
7*cf84ac9aSAndroid Build Coastguard Worker  */
8*cf84ac9aSAndroid Build Coastguard Worker 
9*cf84ac9aSAndroid Build Coastguard Worker static int
arch_set_scno(struct tcb * tcp,kernel_ulong_t scno)10*cf84ac9aSAndroid Build Coastguard Worker arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
11*cf84ac9aSAndroid Build Coastguard Worker {
12*cf84ac9aSAndroid Build Coastguard Worker 	unsigned int n = (uint16_t) scno;
13*cf84ac9aSAndroid Build Coastguard Worker 	int rc = ptrace(PTRACE_SET_SYSCALL, tcp->pid, NULL, (unsigned long) n);
14*cf84ac9aSAndroid Build Coastguard Worker 	if (rc && errno != ESRCH)
15*cf84ac9aSAndroid Build Coastguard Worker 		perror_msg("arch_set_scno: PTRACE_SET_SYSCALL pid:%d scno:%#x",
16*cf84ac9aSAndroid Build Coastguard Worker 			   tcp->pid, n);
17*cf84ac9aSAndroid Build Coastguard Worker 	return rc;
18*cf84ac9aSAndroid Build Coastguard Worker }
19