From owner-p4-projects@FreeBSD.ORG Thu Aug 10 01:35:56 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DF73D16A4E1; Thu, 10 Aug 2006 01:35:55 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 93EE316A4E0 for ; Thu, 10 Aug 2006 01:35:55 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5224A43D46 for ; Thu, 10 Aug 2006 01:35:55 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k7A1Ztj2037439 for ; Thu, 10 Aug 2006 01:35:55 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k7A1ZtSc037436 for perforce@freebsd.org; Thu, 10 Aug 2006 01:35:55 GMT (envelope-from marcel@freebsd.org) Date: Thu, 10 Aug 2006 01:35:55 GMT Message-Id: <200608100135.k7A1ZtSc037436@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 103544 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Aug 2006 01:35:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=103544 Change 103544 by marcel@marcel_nfs on 2006/08/10 01:35:24 Use defaults when sv_reg, sv_fpreg and/or sv_dbreg are NULL pointers. This allows most struct sysentvec definitions to leave these undefined. Affected files ... .. //depot/projects/gdb/sys/kern/sys_process.c#12 edit Differences ... ==== //depot/projects/gdb/sys/kern/sys_process.c#12 (text+ko) ==== @@ -61,10 +61,6 @@ #include #ifdef COMPAT_IA32 -#include -#include -#include - extern struct sysentvec ia32_freebsd_sysvec; struct ptrace_io_desc32 { @@ -300,15 +296,18 @@ switch (uap->req) { case PT_GETREGS: case PT_SETREGS: - bufsz = sv->sv_reg->rs_size; + bufsz = (sv->sv_reg != NULL) ? sv->sv_reg->rs_size : + sizeof(struct reg); break; case PT_GETFPREGS: case PT_SETFPREGS: - bufsz = sv->sv_fpreg->rs_size; + bufsz = (sv->sv_fpreg != NULL) ? sv->sv_fpreg->rs_size : + sizeof(struct fpreg); break; case PT_GETDBREGS: case PT_SETDBREGS: - bufsz = sv->sv_dbreg->rs_size; + bufsz = (sv->sv_dbreg != NULL) ? sv->sv_dbreg->rs_size : + sizeof(struct dbreg); break; case PT_GETXREGSIZE: bufsz = sizeof(size_t); @@ -396,6 +395,8 @@ struct thread *td2 = NULL; struct ptrace_io_desc *piod = NULL; struct ptrace_lwpinfo *pl; + ptregset_readf fread; + ptregset_writef fwrite; int error, write, tmp, num; int proctree_locked = 0; lwpid_t *buf; @@ -790,33 +791,45 @@ goto sendsig; /* in PT_CONTINUE above */ case PT_SETREGS: - error = ptrace_write_regf(td2, addr, sv->sv_reg->rs_write); + fwrite = (sv->sv_reg != NULL) ? sv->sv_reg->rs_write : + (ptregset_writef)set_regs; + error = ptrace_write_regf(td2, addr, fwrite); break; case PT_GETREGS: - error = ptrace_read_regf(td2, addr, sv->sv_reg->rs_read); + fread = (sv->sv_reg != NULL) ? sv->sv_reg->rs_read : + (ptregset_readf)fill_regs; + error = ptrace_read_regf(td2, addr, fread); break; case PT_SETFPREGS: - error = ptrace_write_regf(td2, addr, sv->sv_fpreg->rs_write); + fwrite = (sv->sv_fpreg != NULL) ? sv->sv_fpreg->rs_write : + (ptregset_writef)set_fpregs; + error = ptrace_write_regf(td2, addr, fwrite); break; case PT_GETFPREGS: - error = ptrace_read_regf(td2, addr, sv->sv_fpreg->rs_read); + fread = (sv->sv_fpreg != NULL) ? sv->sv_fpreg->rs_read : + (ptregset_readf)fill_fpregs; + error = ptrace_read_regf(td2, addr, fread); break; case PT_SETDBREGS: - error = ptrace_write_regf(td2, addr, sv->sv_dbreg->rs_write); + fwrite = (sv->sv_dbreg != NULL) ? sv->sv_dbreg->rs_write : + (ptregset_writef)set_dbregs; + error = ptrace_write_regf(td2, addr, fwrite); break; case PT_GETDBREGS: - error = ptrace_read_regf(td2, addr, sv->sv_dbreg->rs_read); + fread = (sv->sv_dbreg != NULL) ? sv->sv_dbreg->rs_read : + (ptregset_readf)fill_dbregs; + error = ptrace_read_regf(td2, addr, fread); break; case PT_SETXREGS: if (data >= 0 && data < sv->sv_nxregs) { - error = ptrace_write_regf(td2, addr, - sv->sv_xregs[data].rs_write); + fwrite = sv->sv_xregs[data].rs_write; + error = ptrace_write_regf(td2, addr, fwrite); } else error = EINVAL; break; @@ -832,8 +845,8 @@ case PT_GETXREGS: if (data >= 0 && data < sv->sv_nxregs) { - error = ptrace_read_regf(td2, addr, - sv->sv_xregs[data].rs_read); + fread = sv->sv_xregs[data].rs_read; + error = ptrace_read_regf(td2, addr, fread); } else error = EINVAL; break;