diff options
author | peter <peter@FreeBSD.org> | 2001-08-08 05:25:15 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2001-08-08 05:25:15 +0000 |
commit | bb5c43c4b860ad46968f5c811e6a704114915724 (patch) | |
tree | 9c1725fe17f3d99c873d801333a60db6ec49fb59 /sys/ia64 | |
parent | 185e591533d493e9aa5e937d42e40833936ae6f4 (diff) | |
download | FreeBSD-src-bb5c43c4b860ad46968f5c811e6a704114915724.zip FreeBSD-src-bb5c43c4b860ad46968f5c811e6a704114915724.tar.gz |
Zap 'ptrace(PT_READ_U, ...)' and 'ptrace(PT_WRITE_U, ...)' since they
are a really nasty interface that should have been killed long ago
when 'ptrace(PT_[SG]ETREGS' etc came along. The entity that they
operate on (struct user) will not be around much longer since it
is part-per-process and part-per-thread in a post-KSE world.
gdb does not actually use this except for the obscure 'info udot'
command which does a hexdump of as much of the child's 'struct user'
as it can get. It carries its own #defines so it doesn't break
compiles.
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/machdep.c | 53 | ||||
-rw-r--r-- | sys/ia64/include/ptrace.h | 5 |
2 files changed, 0 insertions, 58 deletions
diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index 1bf4a78..f915782 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -1084,59 +1084,6 @@ ptrace_single_step(struct proc *p) return 0; } -int ptrace_read_u_check(struct proc *p, vm_offset_t addr, size_t len) -{ - vm_offset_t gap; - - if ((vm_offset_t) (addr + len) < addr) - return EPERM; - if ((vm_offset_t) (addr + len) <= sizeof(struct user)) - return 0; - - gap = (char *) p->p_frame - (char *) p->p_addr; - - if ((vm_offset_t) addr < gap) - return EPERM; - if ((vm_offset_t) (addr + len) <= - (vm_offset_t) (gap + sizeof(struct trapframe))) - return 0; - return EPERM; -} - -int -ptrace_write_u(struct proc *p, vm_offset_t off, long data) -{ - vm_offset_t min; -#if 0 - struct trapframe frame_copy; - struct trapframe *tp; -#endif - - /* - * Privileged kernel state is scattered all over the user area. - * Only allow write access to parts of regs and to fpregs. - */ - min = (char *)p->p_frame - (char *)p->p_addr; - if (off >= min && off <= min + sizeof(struct trapframe) - sizeof(int)) { -#if 0 - tp = p->p_frame; - frame_copy = *tp; - *(int *)((char *)&frame_copy + (off - min)) = data; - if (!EFLAGS_SECURE(frame_copy.tf_eflags, tp->tf_eflags) || - !CS_SECURE(frame_copy.tf_cs)) - return (EINVAL); -#endif - *(int*)((char *)p->p_addr + off) = data; - return (0); - } - min = offsetof(struct user, u_pcb); - if (off >= min && off <= min + sizeof(struct pcb)) { - *(int*)((char *)p->p_addr + off) = data; - return (0); - } - return (EFAULT); -} - int ia64_pa_access(vm_offset_t pa) { diff --git a/sys/ia64/include/ptrace.h b/sys/ia64/include/ptrace.h index 8a7ff84..2cf8f26 100644 --- a/sys/ia64/include/ptrace.h +++ b/sys/ia64/include/ptrace.h @@ -45,9 +45,4 @@ #define PT_GETFPREGS (PT_FIRSTMACH + 3) #define PT_SETFPREGS (PT_FIRSTMACH + 4) -#ifdef _KERNEL -int ptrace_read_u_check __P((struct proc *p, vm_offset_t off, size_t len)); #endif - -#endif - |