[dtrace-discuss] help with listing called functions
Jonathan Adams
jonathan.adams at sun.com
Tue Aug 15 10:46:05 PDT 2006
On Tue, Aug 15, 2006 at 05:55:06PM +0100, Enda o'Connor - Sun Microsystems Ireland - Software Engineer wrote:
> Hi
> I am trying to grab a flow controlled list of the functions under main
> that patchadd calls when it is run
>
>
> # which patchadd
> /usr/sbin/patchadd
> # ls -l /usr/sbin/patchadd
> lrwxrwxrwx 1 root root 16 Aug 15 11:14 /usr/sbin/patchadd
> -> ../lib/patch/pdo
> # file /usr/lib/patch/pdo
> /usr/lib/patch/pdo: ELF 32-bit MSB executable SPARC Version 1,
> dynamically linked, stripped
> #
>
> So I have the following:
>
>
> # cat /export/pdo.d
> #pragma D option flowindent
>
> pid$target::main:entry
> {
> self->trace = 1;
> }
>
> pid$target::main:return
> /self->trace/
> {
> self->trace = 0;
> }
>
> pid$target:pdo::entry,
> pid$target:pdo::return
> /self->trace/
> {
> }
> pid$target:a.out::entry,
> pid$target:a.out::return
> /self->trace/
> {
> }
> #
>
>
> I would have though that this would then generate a listing of the
> functions called from main in 'pdo', but it does not,
>
> # dtrace -s /export/pdo.d -c "/usr/sbin/patchadd /export/119117-21"
>
> which gives
> ....
> Checking installed patches...
> CPU FUNCTION
> 0 -> main
> 0 | main:entry
> 0 -> xcalloc
> 0 | xcalloc:entry
> 0 | xcalloc:return
> 0 <- xcalloc
> 0 -> xcalloc
> .......
>
> but main calls patchadd() pretty much at the start of main
>
>
> What is wrong with my approach to this?
% file /usr/sbin/patchadd
/usr/sbin/patchadd: ELF 32-bit MSB executable SPARC32PLUS Version 1, V8+
Required, dynamically linked, stripped
^^^^^^^^
Without a symbol table, there is no record of the "patchadd" function. Get
an unstripped version of the binary.
Cheers,
- jonathan
--
Jonathan Adams, Solaris Kernel Development
More information about the dtrace-discuss
mailing list