uaddr and friends
carlos antonio neira bustos
cneirabustos at gmail.com
Wed Apr 16 02:15:59 UTC 2014
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 at 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 at 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.
Bests
On Tue, Apr 15, 2014 at 10:09 PM, Mark Johnston <markj at freebsd.org> wrote:
> On Tue, Apr 15, 2014 at 8:35 PM, carlos antonio neira bustos
> <cneirabustos at gmail.com> 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 at 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 at 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
>
More information about the freebsd-dtrace
mailing list