From owner-freebsd-dtrace@FreeBSD.ORG Wed Apr 16 03:16:10 2014 Return-Path: Delivered-To: freebsd-dtrace@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C73E2D9E; Wed, 16 Apr 2014 03:16:10 +0000 (UTC) Received: from mail-ie0-x231.google.com (mail-ie0-x231.google.com [IPv6:2607:f8b0:4001:c03::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8927411E0; Wed, 16 Apr 2014 03:16:10 +0000 (UTC) Received: by mail-ie0-f177.google.com with SMTP id rl12so9953326iec.22 for ; Tue, 15 Apr 2014 20:16:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=t0AyfEantD8uzD8xuD/ARi34YrhxxvE3EtJ+AWR8ueQ=; b=Qj4TuXuoXsSHYRdGtojVvPYY2/pwzpBqiizsjQusBQqwN6KJmf95ehwykLceWaHIK/ 7BroT4vmAySNFYAiIcetH+o+LDnENBcqZi/pd1m5GfawN6EztQicbr08mSzMjnjLnnZn NSxYSvUFz/ttAqxXNxW+6nhTOlfbk+xD23XZileH8P1HOStfNV4ijDTqEaAYMFbnv8V5 lSkPa/XHMAIYXlYU9f144nH+vLZDyfvaxMWx+cU2lyVeutcnhvcsPranFy4bpPMOmcPB E7nbpoAbeIEDD4AUVgCvwnlAHjTGcD47vTd+ERMBNHYHB7xIKwZgrQIH80OAYN2ro46c X8eg== MIME-Version: 1.0 X-Received: by 10.42.247.132 with SMTP id mc4mr1690730icb.44.1397618169446; Tue, 15 Apr 2014 20:16:09 -0700 (PDT) Sender: markjdb@gmail.com Received: by 10.64.19.241 with HTTP; Tue, 15 Apr 2014 20:16:09 -0700 (PDT) In-Reply-To: References: Date: Tue, 15 Apr 2014 23:16:09 -0400 X-Google-Sender-Auth: uW1q5G7_gBGO2LQdRouik0qE9Q4 Message-ID: Subject: Re: uaddr and friends From: Mark Johnston To: carlos antonio neira bustos Content-Type: text/plain; charset=UTF-8 Cc: "freebsd-dtrace@freebsd.org" X-BeenThere: freebsd-dtrace@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "A discussion list for developers working on DTrace in FreeBSD." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Apr 2014 03:16:10 -0000 On Tue, Apr 15, 2014 at 10:54 PM, carlos antonio neira bustos wrote: > Thanks Mark. > > You are right, I did not look at dt_subr.c, uaddr is a short version of > ustack, I'll update to current now and try to pick on something else from > the list. Thanks! I've updated the TODOs a bit. I find that a good way to find things to do is to just try random DTrace scripts until something fails reproducibly. Large processes like firefox and Xorg have been a fertile source of bugs. :) And yes, please update to CURRENT; there have been quite a few bugs fixed since 10.0. FreeBSD 10.1 will have much better userland DTrace support. -Mark > > Bests > > > On Tue, Apr 15, 2014 at 11:36 PM, Mark Johnston wrote: >> >> On Tue, Apr 15, 2014 at 10:15 PM, carlos antonio neira bustos >> wrote: >> > Hi Mark, >> > >> > I was looking at this document >> > >> > https://wikis.oracle.com/display/DTrace/Actions+and+Subroutines#ActionsandSubroutines-%7B%7Busym%7D%7D >> > currently looking at the code uaddr is the same as usym, but according >> > to >> > this document >> > >> > usym will print the symbol for a specified address. This is analogous to >> > how >> > uaddr works, but without the hexadecimal offsets. >> > >> > uaddr: date`clock_val+0x1 >> > usym: date`clock_val >> > >> > >> > here are my outputs from usym and uaddr : >> > >> > root@bsd:/home/cneira # dtrace -n 'pid$target::main:{usym(uregs[R_PC])}' >> > -c >> > ./test >> > dtrace: description 'pid$target::main:' matched 2 probes >> > abCPU ID FUNCTION:NAME >> > 0 56282 main:entry test`main >> > 0 56281 main:return test`main >> > dtrace: pid 10588 has exited >> > >> > root@bsd:/home/cneira # dtrace -n >> > 'pid$target::main:{uaddr(uregs[R_PC])}' -c >> > ./test >> > dtrace: description 'pid$target::main:' matched 2 probes >> > abCPU ID FUNCTION:NAME >> > 0 56282 main:entry >> > test`main+0x1 >> > >> > 0 56281 main:return >> > test`main+0x23 >> > >> > dtrace: pid 10591 has exited >> > >> > As current is only using dt_print_usym for uaddr the output should not >> > have >> > the hexadecimal offset specified in that documentation. >> > So I'm somewhat lost about which is the correct behavior , Do you have a >> > uaddr and usym output example in current to check this?, all my >> > changes >> > were done in 10 prod release. >> >> You're right, dt_print_usym handles both usym and uaddr. In the usym >> case, there's some special handling which looks up the symbol name >> corresponding to the given pc, and then sets the pc variable to the >> address of the symbol. Then dtrace_uaddr2str only prints the offset >> from the symbol if that offset is non-zero, so in the uaddr case you >> get "+0x1" and "+0x23" above. >> >> > >> > Bests >> > >> > >> > >> > >> > >> > >> > >> > On Tue, Apr 15, 2014 at 10:09 PM, Mark Johnston >> > wrote: >> >> >> >> On Tue, Apr 15, 2014 at 8:35 PM, carlos antonio neira bustos >> >> wrote: >> >> > Hi All, >> >> > >> >> > I was looking at Dtrace todo list from >> >> > https://wiki.freebsd.org/DTraceTODO >> >> > and started to work on : Get uaddr(), ufunc(), umod(), and usym() >> >> > action >> >> > funtions working. >> >> > I have the data recording action (uaddr) working now, here is an >> >> > example: >> >> >> >> Hi! >> >> >> >> Hm, these should have been (at least mostly) working since r258902: >> >> http://svnweb.freebsd.org/base?view=revision&revision=258902 >> >> >> >> > >> >> > root@bsd:/home/cneira # dtrace -n >> >> > 'pid$target::main:{uaddr(uregs[R_PC])}' >> >> > -c ./test >> >> > dtrace: description 'pid$target::main:' matched 2 probes >> >> > abCPU ID FUNCTION:NAME >> >> > 0 56282 main:entry >> >> > test`main+0x1 >> >> > >> >> > 0 56281 main:return >> >> > test`main+0x23 >> >> > >> >> > dtrace: pid 9687 has exited >> >> > >> >> > Here is the output of nm from the test binary I have used to check >> >> > this >> >> > change. >> >> > >> >> > U _init_tls@@FBSD_1.0 >> >> > 08048380 T _start >> >> > 080483a0 t _start1 >> >> > 0804814c r abitag >> >> > U atexit@@FBSD_1.0 >> >> > 08048164 r crt_noinit_tag >> >> > 080485c0 T dosomething >> >> > 08049764 B environ >> >> > U exit@@FBSD_1.0 >> >> > 080484f0 t finalizer >> >> > 08048560 t frame_dummy >> >> > 08048590 T main >> >> > U putchar@@FBSD_1.0 >> >> > >> >> > >> >> > root@bsd:/home/cneira # dtrace -c ./test -n 'pid$target::main:entry{ >> >> > uaddr(0x080485c0); }' >> >> > dtrace: description 'pid$target::main:entry' matched 1 probe >> >> > abCPU ID FUNCTION:NAME >> >> > 0 56281 main:entry >> >> > test`dosomething >> >> > >> >> > dtrace: pid 9736 has exited >> >> > >> >> > I'll continue working on the rest, how do I submit a patch with >> >> > these >> >> > changes ? >> >> >> >> Pasting it inline is generally fine if it's not too large. It's also >> >> ok to put it in a public directory somewhere and post a link to it. >> >> >> >> -Mark >> > >> > > >