DTrace and CTF data

Artem Belevich fbsdlist at src.cx
Mon May 31 17:52:41 UTC 2010


>>> If I do a 'objdump' on the kernel.debug binary I do not see any CTF sections showing up?

Reference to 'objdump' combined with the fact that 80% of the message
was dedicated to disassembly suggested that by "CTF section" you
actually meant "probe".

> If the CTFCONVERT ran successfully I should be able to see a .SUNW_ctf
> section when I run objdump --section-headers.

Now it's clear that you indeed are looking for .SUNW_ctf section. My
apologies for assuming too much. I should've asked to clarify the
question first.

> So if I ran the CTFCONVERT utility on a *binary*, it should append CTF sections to it should it not ?

It should, provided it's run properely and that there's something to
append. For what it's worth, .SUNW_ctf *is* present in my kernel built
with WITH_CTF=1:

$ objdump --section-headers /boot/kernel/kernel |grep SUNW
 24 .SUNW_ctf     00044fe5  0000000000000000  0000000000000000  0062f01c  2**2

That said, FBT provider may figure out function location based on
plain old ELF symbols. For that CTF may not be needed. However, it may
not be able to provide function and argument types if CTF info is not
present. What does "dtrace -l -f kernel_function -v" show? Does it
display proper info about argument types for entry/exit?

--Artem



On Mon, May 31, 2010 at 9:44 AM, Shrikanth Kamath <shrikanth07 at gmail.com> wrote:
> Thanks Artem, but I was actually asking about the CTF info, I always thought
> the
> probes used the CTF info for *knowing* where to instrument. So if I ran the
> CTFCONVERT
> utility on a *binary*, it should append CTF sections to it should it not ?
> If the CTFCONVERT ran successfully I should be able to see a .SUNW_ctf
> section when I run objdump --section-headers. But since this was not there
> in the binary
> but still FBT was able to instrument the *entry* of the function I was
> curious does FBT provider
> need the CTF info for function entry/return ?
>
> --
> Shrikanth R K
>
> On Mon, May 31, 2010 at 2:21 AM, Artem Belevich <fbsdlist at src.cx> wrote:
>>
>> You may be confusing CTF info and the probes. Those are different things.
>>
>> CTF info just describes data types and variable/function location.
>> DTrace later uses it to figure out where and how to install the
>> probes.
>>
>> Probes are installed dynamically, at runtime when DTrace program is
>> run. That's why you see it with kgdb on the live kernel once probe has
>> been installed.
>> DTrace does not modify your original kernel binary, so you will not
>> see any probes there.
>>
>> --Artem
>>
>>
>>
>> On Sun, May 30, 2010 at 12:10 PM, Shrikanth Kamath
>> <shrikanth07 at gmail.com> wrote:
>> > I have a query about the FBT provider in DTrace, does FBT provider not
>> > need
>> > the CTF info for the /kernel binary...
>> >
>> > I have this observation, when I disassemble say a 'kernel_funtion' , I
>> > see
>> > the function is not instrumented...
>> >
>> > (kgdb) disassemble kernel_function
>> > Dump of assembler code for function kernel_function:
>> > 0xc04aa05d <kernel_function+0>: push   %ebp
>> > 0xc04aa05e <kernel_function+1>: mov    %esp,%ebp
>> > 0xc04aa060 <kernel_function+3>: sub    $0x2c,%esp
>> >
>> >
>> > Now after I did a 'fbt::kernel_function:entry', if I disassemble the
>> > 'kernel_function'...
>> >
>> > (kgdb) disassemble kernel_function
>> > Dump of assembler code for function kernel_function:
>> > 0xc04aa05d <kernel_function+0>: lock mov %esp,%ebp                 <==
>> > FBT
>> > instrumentation
>> > 0xc04aa060 <kernel_function+3>: sub    $0x2c,%esp
>> >
>> > If I do a 'objdump' on the kernel.debug binary I do not see any CTF
>> > sections
>> > showing up?
>> >
>> >
>> > --
>> > Shrikanth R K
>> > _______________________________________________
>> > freebsd-hackers at freebsd.org mailing list
>> > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>> > To unsubscribe, send any mail to
>> > "freebsd-hackers-unsubscribe at freebsd.org"
>> >
>
>


More information about the freebsd-hackers mailing list