Re: Patch for FreeBSD 4.5 to run ups

From: John Utz (john_at_utzweb.net)
Date: Wed Mar 27 2002 - 00:40:02 GMT

  • Next message: callum.gibson_at_db.com: "Re: Patch for FreeBSD 4.5 to run ups"
    This is really nice.
    
    did they basically reinvent the deprecated interface back into 4.5 with 
    this patch? or is this something better?
    
    tnx!
    
    johnu
    
    On Wed, 27 Mar 2002 callum.gibson_at_db.com wrote:
    
    > Hi all,
    > 
    > A followup on my previous post in late Feb regarding ups on FreeBSD 4.5...
    > 
    > This is the patch you need to apply to a FreeBSD 4.5-RELEASE kernel for
    > ups to work/compile correctly. You can either use ups compiled on a
    > previous release (as I am doing) or recompile on 4.5 as this reportedly
    > works now too. Patch kindly supplied by Bakul Shah and Julian Elischer.
    > Some non-trivial work will need to be done on ups for it to work on
    > the 5.X series systems as it (ups) uses a deprecated interface. Bakul
    > has said he will try to work on this soon.
    > 
    >     C
    > 
    > Callum Gibson                               callum.gibson_at_db.com
    > Global Markets IT, Deutsche Bank, Australia       61 2 9258 1620
    > ### The opinions in this message are mine and not Deutsche's ###
    > 
    > Index: sys/ptrace.h
    > ===================================================================
    > RCS file: /home/ncvs/src/sys/sys/ptrace.h,v
    > retrieving revision 1.10.2.1
    > diff -u -r1.10.2.1 ptrace.h
    > --- sys/ptrace.h	3 Oct 2001 06:55:43 -0000	1.10.2.1
    > +++ sys/ptrace.h	1 Mar 2002 21:52:57 -0000
    > @@ -40,7 +40,7 @@
    >  #define	PT_TRACE_ME	0	/* child declares it's being traced */
    >  #define	PT_READ_I	1	/* read word in child's I space */
    >  #define	PT_READ_D	2	/* read word in child's D space */
    > -/* was	PT_READ_U	3	 * read word in child's user structure */
    > +#define	PT_READ_U	3	/* read word in child's user structure */
    >  #define	PT_WRITE_I	4	/* write word in child's I space */
    >  #define	PT_WRITE_D	5	/* write word in child's D space */
    >  /* was	PT_WRITE_U	6	 * write word in child's user structure */
    > Index: kern/sys_process.c
    > ===================================================================
    > RCS file: /home/ncvs/src/sys/kern/sys_process.c,v
    > retrieving revision 1.51.2.3
    > diff -u -r1.51.2.3 sys_process.c
    > --- kern/sys_process.c	22 Jan 2002 17:22:59 -0000	1.51.2.3
    > +++ kern/sys_process.c	1 Mar 2002 23:45:18 -0000
    > @@ -257,6 +257,7 @@
    >  
    >  	case PT_READ_I:
    >  	case PT_READ_D:
    > +	case PT_READ_U:
    >  	case PT_WRITE_I:
    >  	case PT_WRITE_D:
    >  	case PT_CONTINUE:
    > @@ -413,6 +417,33 @@
    >  		}
    >  		return (error);
    >  
    > +	case PT_READ_U:
    > +                 if ((uintptr_t)uap->addr > UPAGES * PAGE_SIZE -
    > +                    sizeof(int)) {
    > +                         return EFAULT;
    > +                 }
    > +                 if ((uintptr_t)uap->addr & (sizeof(int) - 1)) {
    > +                         return EFAULT;
    > +                 }
    > +                 if (ptrace_read_u_check(p,(vm_offset_t) uap->addr,
    > +                                         sizeof(int))) {
    > +                         return EFAULT;
    > +                 }
    > +                 error = 0;
    > +                 PHOLD(p);       /* user had damn well better be incore!*/
    > +                 if (p->p_flag & P_INMEM) {
    > +                         p->p_addr->u_kproc.kp_proc = *p;
    > +                         fill_eproc (p, &p->p_addr->u_kproc.kp_eproc);
    > +                         curp->p_retval[0] = *(int *)
    > +                             ((uintptr_t)p->p_addr +
    > +                             (uintptr_t)uap->addr);
    > +                 } else {
    > +                         curp->p_retval[0] = 0;
    > +                         error = EFAULT;
    > +                 }
    > +                 PRELE(p);
    > +                 return error;
    > +
    >  	case PT_KILL:
    >  		uap->data = SIGKILL;
    >  		goto sendsig;	/* in PT_CONTINUE above */
    > 
    > 
    
    -- 
    
    John L. Utz III
    john_at_utzweb.net
    
    Idiocy is the Impulse Function in the Convolution of Life
    


    This archive was generated by hypermail 2.1.4 : Thu May 23 2002 - 15:53:58 BST