From: Benjamin Berg <benjamin.b...@intel.com> The registers.c file only contains the routines for floating point register access in ptrace mode and initial size detection. After the addition of sys/uio.h and sys/ptrace.h to nolibc it can be moved to use it by using the sys_ptrace() wrapper.
Signed-off-by: Benjamin Berg <benjamin.b...@intel.com> --- v3: - Cast argument to (void *) - Remove unused sys/user.h include which does not exist in nolibc v2: - Use new sys_ptrace from nolibc --- arch/x86/um/os-Linux/Makefile | 5 ++++- arch/x86/um/os-Linux/registers.c | 20 +++++--------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/arch/x86/um/os-Linux/Makefile b/arch/x86/um/os-Linux/Makefile index 77a308aaa5ec..d37320430822 100644 --- a/arch/x86/um/os-Linux/Makefile +++ b/arch/x86/um/os-Linux/Makefile @@ -3,10 +3,13 @@ # Licensed under the GPL # -obj-y = registers.o mcontext.o +obj-y = mcontext.o obj-$(CONFIG_X86_32) += tls.o USER_OBJS := $(obj-y) +obj-y += registers.o +NOLIBC_OBJS := registers.o + include $(srctree)/arch/um/scripts/Makefile.rules diff --git a/arch/x86/um/os-Linux/registers.c b/arch/x86/um/os-Linux/registers.c index eb1cdadc8a61..72c7493f3b89 100644 --- a/arch/x86/um/os-Linux/registers.c +++ b/arch/x86/um/os-Linux/registers.c @@ -7,9 +7,6 @@ #include <errno.h> #include <stdlib.h> #include <sys/ptrace.h> -#ifdef __i386__ -#include <sys/user.h> -#endif #include <longjmp.h> #include <sysdep/ptrace_user.h> #include <sys/uio.h> @@ -28,9 +25,7 @@ int get_fp_registers(int pid, unsigned long *regs) .iov_len = host_fp_size, }; - if (ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov) < 0) - return -errno; - return 0; + return sys_ptrace(PTRACE_GETREGSET, pid, (void *)ptrace_regset, &iov); } int put_fp_registers(int pid, unsigned long *regs) @@ -40,9 +35,7 @@ int put_fp_registers(int pid, unsigned long *regs) .iov_len = host_fp_size, }; - if (ptrace(PTRACE_SETREGSET, pid, ptrace_regset, &iov) < 0) - return -errno; - return 0; + return sys_ptrace(PTRACE_SETREGSET, pid, (void *)ptrace_regset, &iov); } int arch_init_registers(int pid) @@ -60,9 +53,7 @@ int arch_init_registers(int pid) /* GDB has x86_xsave_length, which uses x86_cpuid_count */ ptrace_regset = NT_X86_XSTATE; - ret = ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov); - if (ret) - ret = -errno; + ret = sys_ptrace(PTRACE_GETREGSET, pid, (void *)ptrace_regset, &iov); if (ret == -ENODEV) { #ifdef CONFIG_X86_32 @@ -71,9 +62,8 @@ int arch_init_registers(int pid) ptrace_regset = NT_PRFPREG; #endif iov.iov_len = 2 * 1024 * 1024; - ret = ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov); - if (ret) - ret = -errno; + ret = sys_ptrace(PTRACE_GETREGSET, pid, + (void *)ptrace_regset, &iov); } munmap(iov.iov_base, 2 * 1024 * 1024); -- 2.51.0