From owner-freebsd-arch@FreeBSD.ORG Mon Jul 21 22:14:47 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2EA6B1065684 for ; Mon, 21 Jul 2008 22:14:47 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from asmtpout018.mac.com (asmtpout018.mac.com [17.148.16.93]) by mx1.freebsd.org (Postfix) with ESMTP id 12A8F8FC14 for ; Mon, 21 Jul 2008 22:14:46 +0000 (UTC) (envelope-from xcllnt@mac.com) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Received: from macbook-pro.jnpr.net (natint3.juniper.net [66.129.224.36]) by asmtp018.mac.com (Sun Java(tm) System Messaging Server 6.3-6.03 (built Mar 14 2008; 32bit)) with ESMTPSA id <0K4D00A8TKC9IR50@asmtp018.mac.com>; Mon, 21 Jul 2008 14:14:34 -0700 (PDT) Sender: xcllnt@mac.com Message-id: <0AD2E758-D7E1-41B0-BA31-6FBDEE3470A9@mac.com> From: Marcel Moolenaar To: John Baldwin In-reply-to: <200807211049.47579.jhb@freebsd.org> Date: Mon, 21 Jul 2008 14:14:32 -0700 References: <34889018-8358-46AC-897E-32767FB84E14@mac.com> <200807211049.47579.jhb@freebsd.org> X-Mailer: Apple Mail (2.928.1) Cc: freebsd-arch@freebsd.org Subject: Re: RFC: cross-libkvm/libthread_db/proc_service X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jul 2008 22:14:47 -0000 On Jul 21, 2008, at 7:49 AM, John Baldwin wrote: > On Saturday 19 July 2008 01:59:29 pm Marcel Moolenaar wrote: >> All, >> >> We have a couple of interfaces/APIs that can't be used cross- >> platform. >> >> Take for example libkvm. On a 32-bit platform, we can't typically use >> libkvm on a 64-kernel, because the libkvm interface uses u_long for >> the target address, which on 32-bit platforms is 32 bits wide. >> >> Likewise, libthread_db and proc_service are designed for native use >> only and need API tweaks to work in a cross-environment. Both use >> psaddr_t to represent a target address, which is defined as a void* >> in . >> >> I'd like to change those interfaces/APIs to allow them to be used in >> a cross-platform debugging environment. Basically, this means that a >> target address will have to be defined as a uint64_t. Other datatypes >> may also need to be retyped. >> >> For libkvm in particular I don't want to redefine struct kinfo_proc, >> struct nlist, etc. While it could be useful in a hybrid 32/64-bit >> environment, the effect of such changes have too high a chance to >> trickle down various other components/interfaces. Thus, for libkvm >> the focus is on kvm_read() and kvm_write(). >> >> Suggested plan of attack: >> o add kvm_xread() and kvm_xwrite() to the libkvm API to minimize >> the overall impact. The new functions operate on a 64-bit target >> address (psaddr_t). >> o change psaddr_t from a void* to a 64-bit integral (sys/procfs.h) >> This affects proc_service and libthread_db. And consequently our >> threading support in GDB. >> >> Comments/thoughts? > > I think this is ok. However, can't you just make newer (1.1) > versions of > kvm_read/write instead of adding a new API? The impact will be bigger, though. Any reference to kvm_read/kvm_write needs to be changed then. Think about stock GDB and various ports for example. Are we willing to differentiate from other OSes, provided we are willing to follow it through all the way? -- Marcel Moolenaar xcllnt@mac.com