1*ec4bb8e8SBenjamin Berg /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 2*ec4bb8e8SBenjamin Berg /* 3*ec4bb8e8SBenjamin Berg * ptrace for NOLIBC 4*ec4bb8e8SBenjamin Berg * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu> 5*ec4bb8e8SBenjamin Berg * Copyright (C) 2025 Intel Corporation 6*ec4bb8e8SBenjamin Berg */ 7*ec4bb8e8SBenjamin Berg 8*ec4bb8e8SBenjamin Berg /* make sure to include all global symbols */ 9*ec4bb8e8SBenjamin Berg #include "../nolibc.h" 10*ec4bb8e8SBenjamin Berg 11*ec4bb8e8SBenjamin Berg #ifndef _NOLIBC_SYS_PTRACE_H 12*ec4bb8e8SBenjamin Berg #define _NOLIBC_SYS_PTRACE_H 13*ec4bb8e8SBenjamin Berg 14*ec4bb8e8SBenjamin Berg #include "../sys.h" 15*ec4bb8e8SBenjamin Berg 16*ec4bb8e8SBenjamin Berg #include <linux/ptrace.h> 17*ec4bb8e8SBenjamin Berg 18*ec4bb8e8SBenjamin Berg /* 19*ec4bb8e8SBenjamin Berg * long ptrace(int op, pid_t pid, void *addr, void *data); 20*ec4bb8e8SBenjamin Berg */ 21*ec4bb8e8SBenjamin Berg static __attribute__((unused)) 22*ec4bb8e8SBenjamin Berg long sys_ptrace(int op, pid_t pid, void *addr, void *data) 23*ec4bb8e8SBenjamin Berg { 24*ec4bb8e8SBenjamin Berg return my_syscall4(__NR_ptrace, op, pid, addr, data); 25*ec4bb8e8SBenjamin Berg } 26*ec4bb8e8SBenjamin Berg 27*ec4bb8e8SBenjamin Berg static __attribute__((unused)) 28*ec4bb8e8SBenjamin Berg ssize_t ptrace(int op, pid_t pid, void *addr, void *data) 29*ec4bb8e8SBenjamin Berg { 30*ec4bb8e8SBenjamin Berg return __sysret(sys_ptrace(op, pid, addr, data)); 31*ec4bb8e8SBenjamin Berg } 32*ec4bb8e8SBenjamin Berg 33*ec4bb8e8SBenjamin Berg #endif /* _NOLIBC_SYS_PTRACE_H */ 34