Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Feb 2002 17:50:56 -0800 (PST)
From:      Julian Elischer <julian@elischer.org>
To:        Andrew Gallatin <gallatin@cs.duke.edu>
Cc:        Jake Burkholder <jake@locore.ca>, current@FreeBSD.ORG
Subject:   Re: Non 386 testers REALLY NEEDED
Message-ID:  <20020212021152.C9C4C9EE51@okeeffe.bestweb.net>

next in thread | raw e-mail | index | archive | help
ok here's the fix that went into libkvm

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libkvm/kvm_proc.c.diff?r1=1.41&r2=1.42

basically you have to map in the thread structure separatly to the
proc structure, using the first entry in the linked list of threads.

Obviously this only works for a process with one thread but the program
will need more help than that to handle more than one thread.

kvread and KREAD are basically the same thing.

basically you have read in teh thread structure and then read the pcb from
there..

On Thu, 7 Feb 2002, Andrew Gallatin wrote:

> 
> Julian Elischer writes:
>  > 
>  > 
>  > I've committed both the kernel diff and a libkvm diff that seems to work
>  > for me here.
>  > 
>  > can you check it with the new -current  again ?
> 
> World breakage on alpha:
> 
> usr/src/gnu/usr.bin/binutils/gdb/alpha/kvm-fbsd.c: In function `set_proc_cmd':
> /usr/src/gnu/usr.bin/binutils/gdb/alpha/kvm-fbsd.c:393: structure has no member named `p_thread'
> *** Error code 1
> 
> Stop in /usr/src/gnu/usr.bin/binutils/gdb.
> *** Error code 1
> 
> 
> The following diff fixes it, but isn't likely to be correct.  How
> should kvm be finding the pcb based on the process?
> 
> Drew
> 
> 
> Index: kvm-fbsd.c
> ===================================================================
> RCS file: /home/ncvs/src/gnu/usr.bin/binutils/gdb/alpha/kvm-fbsd.c,v
> retrieving revision 1.6
> diff -u -r1.6 kvm-fbsd.c
> --- kvm-fbsd.c	13 Oct 2001 04:38:46 -0000	1.6
> +++ kvm-fbsd.c	8 Feb 2002 01:39:32 -0000
> @@ -390,7 +390,7 @@
>    addr = (CORE_ADDR)parse_and_eval_address(arg);
>  
>    /* Read the PCB address in proc structure. */
> -  addr += (int) &((struct proc *)0)->p_thread.td_pcb;
> +  addr += (int) &((struct proc *)0)->p_xxthread.td_pcb;
>    if (kvread(addr, &val))
>      error("cannot read pcb ptr");
>  
> 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020212021152.C9C4C9EE51>