version 1.7, 2002/07/22 01:26:08 |
version 1.8, 2002/07/22 03:06:00 |
|
|
if (((ps->ps_state == NONE) || (ps->ps_state == LOADED) || |
if (((ps->ps_state == NONE) || (ps->ps_state == LOADED) || |
(ps->ps_state == TERMINATED)) && (ps->ps_flags & PSF_CORE)) { |
(ps->ps_state == TERMINATED)) && (ps->ps_flags & PSF_CORE)) { |
return core_read(ps, from, to, size); |
return core_read(ps, from, to, size); |
} |
} else { |
else { |
|
piod.piod_op = PIOD_READ_D; |
piod.piod_op = PIOD_READ_D; |
piod.piod_offs = (void *)(long)from; |
piod.piod_offs = (void *)(long)from; |
piod.piod_addr = to; |
piod.piod_addr = to; |
|
|
{ |
{ |
struct ptrace_io_desc piod; |
struct ptrace_io_desc piod; |
|
|
if ((ps->ps_state == NONE) && (ps->ps_flags & PSF_CORE)) |
if ((ps->ps_state == NONE) && (ps->ps_flags & PSF_CORE)) { |
return core_write(ps, to, from, size); |
return core_write(ps, to, from, size); |
else { |
} else { |
piod.piod_op = PIOD_WRITE_D; |
piod.piod_op = PIOD_WRITE_D; |
piod.piod_offs = (void *)(long)to; |
piod.piod_offs = (void *)(long)to; |
piod.piod_addr = from; |
piod.piod_addr = from; |
|
|
{ |
{ |
|
|
if (ps->ps_state == STOPPED) { |
if (ps->ps_state == STOPPED) { |
if (ptrace(PT_GETREGS, ps->ps_pid, (caddr_t)&r, 0) != 0) |
if (ptrace(PT_GETREGS, ps->ps_pid, (caddr_t)r, 0) != 0) |
return (-1); |
return (-1); |
} else if (ps->ps_flags & PSF_CORE) { |
} else if (ps->ps_flags & PSF_CORE) { |
memcpy(r, ps->ps_core->regs, sizeof(*r)); |
memcpy(r, ps->ps_core->regs, sizeof(*r)); |