From owner-freebsd-sparc64@FreeBSD.ORG Sun Feb 5 16:57:04 2006 Return-Path: X-Original-To: freebsd-sparc64@freebsd.org Delivered-To: freebsd-sparc64@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A4B9816A420 for ; Sun, 5 Feb 2006 16:57:04 +0000 (GMT) (envelope-from marius@newtrinity.zeist.de) Received: from newtrinity.zeist.de (newtrinity.zeist.de [217.24.217.8]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3516743D4C for ; Sun, 5 Feb 2006 16:57:02 +0000 (GMT) (envelope-from marius@newtrinity.zeist.de) Received: from newtrinity.zeist.de (localhost [127.0.0.1]) by newtrinity.zeist.de (8.12.11/8.12.11/ZEIST.DE) with ESMTP id k15Gv10u011540; Sun, 5 Feb 2006 17:57:01 +0100 (CET) (envelope-from marius@newtrinity.zeist.de) Received: (from marius@localhost) by newtrinity.zeist.de (8.12.11/8.12.10/Submit) id k15GuuIH011539; Sun, 5 Feb 2006 17:56:56 +0100 (CET) (envelope-from marius) Date: Sun, 5 Feb 2006 17:56:56 +0100 From: Marius Strobl To: Andreas Tobler Message-ID: <20060205175656.S68720@newtrinity.zeist.de> References: <43E3D228.6060801@pop.agri.ch> <20060205112432.A3868@newtrinity.zeist.de> <43E5D988.2070009@pop.agri.ch> <20060205122153.O68720@newtrinity.zeist.de> <43E5E70D.1090209@pop.agri.ch> <20060205132234.P68720@newtrinity.zeist.de> <43E60F45.4070004@pop.agri.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <43E60F45.4070004@pop.agri.ch>; from toa@pop.agri.ch on Sun, Feb 05, 2006 at 03:44:21PM +0100 X-AntiVirus-modified: yes X-AntiVirus: checked by AntiVir Milter (version: 1.1.2-1; AVE: 6.33.0.31; VDF: 6.33.0.204; host: newtrinity.zeist.de) Cc: freebsd-sparc64@freebsd.org Subject: Re: profiling with cc X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Feb 2006 16:57:04 -0000 On Sun, Feb 05, 2006 at 03:44:21PM +0100, Andreas Tobler wrote: > Marius Strobl wrote: > > On Sun, Feb 05, 2006 at 12:52:45PM +0100, Andreas Tobler wrote: > >> Marius Strobl wrote: > >> > >>> I think all it takes is the MD _mcount() -> mcount() wrapper but I'm > >>> not sure what it's actually supposed to do. > >> Ok, thank you for the pointer. I try to read through the code and see if > >> I can get something out of it. > >> > >> Build question, if I play around in this section, does it mean to > >> rebuild the whole kernel/world everytime, or is it enough to just > >> compile and install the modified parts ? > >> > > > > AFAICT the wrapper has to go into the userland version of the MCOUNT > > macro in and you'll have to re-compile and re- > > install libc, specifically libc_p.a, in order to test it. > > Good. > > To my understanding, the wrapper should look similar like in > sys/amd64/include/profile.h? > Basically yes. > > #else /* !_KERNEL */ > #define _MCOUNT_DECL \ > static void _mcount(uintfptr_t frompc, uintfptr_t selfpc) __used; \ > static void _mcount > > #ifdef __GNUCLIKE_ASM > > #define MCOUNT \ > __asm(".global " _mcount);\ > __asm(_mcount ":");\ > __asm("add %o7, 8, %o1");\ > __asm("1: call 2f; nop; 2:");\ > __asm("add %o7," __mcount "-1b, %o2");\ > __asm("ld [%o2], %o2");\ > __asm("jmpl %o2, %g0");\ > __asm("add %i7, 8, %o0"); > #else /* !__GNUCLIKE_ASM */ > #define MCOUNT \ > void \ > mcount() \ > { \ > } > #endif /* __GNUCLIKE_ASM */ > > Or am I looking to far? > > The above asm code comes from NetBSD... > As far as I understand MCOUNT refers to the symbol generated by the compiler and _MCOUNT_DECL to the name of the real function in libc. As the compiler apparently generates calls to _mcount() on sparc64 the MCOUNT macro should define _mcount() for userland and _MCOUNT_DECL mcount() or maybe better __mcount(). I'm not sure wheter the NetBSD asm applies to FreeBSD. If you let _MCOUNT_DECL define _mcount() as in your snippet above you'll bypass the wrapper on sparc64 altogether. Marius -- This mail was scanned by AntiVir Milter. This product is licensed for non-commercial use. See www.antivir.de for details.