From owner-freebsd-dtrace@FreeBSD.ORG Wed Apr 16 02:54:21 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 D1F67728; Wed, 16 Apr 2014 02:54:21 +0000 (UTC) Received: from mail-ob0-x230.google.com (mail-ob0-x230.google.com [IPv6:2607:f8b0:4003:c01::230]) (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 8B0C31DF1; Wed, 16 Apr 2014 02:54:21 +0000 (UTC) Received: by mail-ob0-f176.google.com with SMTP id wp4so157064obc.7 for ; Tue, 15 Apr 2014 19:54:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=AGKbT7E/qpRQN0C8N4ZRZZv8LMBMoe/RfAgWrO9ZRAk=; b=xD7ojLsmWgw2A2onG1hzHakteOZcB5b9S8RGdoivr/4uA1T9njgTXUNBOiiYqH/N9p ptIEmfrayq/xJG6JFkBtDfLlaQzhhhd2h4gW39GhmydS21ukZWx/nRl8XWw0QWephztp B5nYJpib+e8teMUAiEGerQPPj9ESjsVph+DqjK4nZF+sQ1OjuyRaBBEiP2SGlRrffmv0 Dulr7NOp5225Cfk0UOFAnJlLGH0YOmAYH7tC4xucmxrTrgJvMR42+3kmRlf8gSG+T1w7 LiadoOZcAmpM0d4fBAIqoLbrDQ7o47YtWZ8Hd0AWoKz34itZ2KbaT7p4UsDO5az3W4L/ ipxA== MIME-Version: 1.0 X-Received: by 10.60.65.1 with SMTP id t1mr4449372oes.7.1397616860770; Tue, 15 Apr 2014 19:54:20 -0700 (PDT) Received: by 10.182.172.105 with HTTP; Tue, 15 Apr 2014 19:54:20 -0700 (PDT) In-Reply-To: References: Date: Tue, 15 Apr 2014 23:54:20 -0300 Message-ID: Subject: Re: uaddr and friends From: carlos antonio neira bustos To: Mark Johnston Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 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 02:54:21 -0000 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. 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 > > > > >