Date: Fri, 6 Sep 2013 16:49:56 -0700 From: Shrikanth Kamath <shrikanth07@gmail.com> To: freebsd-hackers@freebsd.org, freebsd-dtrace@freebsd.org Subject: Glitch in ctfconvert Message-ID: <CAEOAkMXKjNN=_dGRQSzhHK85KD4sMHK7g9f_Cj8qCgJ2gGXKPQ@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
There is a glitch with ctfconvert builds the .SUNW_ctf section. It affects
debugging the kernel modules with FBT provider of DTrace.
I observe that the CTF sections built for the kernel modules have a
problem if module symtab stripped or if the symbol table has symbols
reordered. This messes up the FBT probes and shows wrong function name against a
set of arguments.
I presume the ctf mapping of a function to its arguments is done this way after
looking at ctfdump code.
func_name from symtab arguments dump from ctf_data_t
^ ^
|___symidx____ctfdump_____________|
The detais are fetched from two different places. So when ctfconvert is run the
function arguments are mapped with a particular symbol order.
Post the linker stage the symbols may get reordered. Or if a strip utility is
run the symtab may be removed completely.
When first ctfconvert is run on module.kld
symbol_X (idx 1) <-> [args set a in ctf_data_t]
symbol_Y (idx 2) <-> [args set b in ctf_data_t]
if symbols get re-arranged post the linker stage
symbol_Y (idx 1) <-> [args set a in ctf_data_t]
symbol_X (idx 2) <-> [args set b in ctf_data_t]
which means symbol_Y now has args set of symbol_X
Or if 'strip' is run it has totally junk shown against symbol_Y and symbol_X.
Overall this affects when we do a Function Boundary Tracing on the functions to
inspect arguments.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAEOAkMXKjNN=_dGRQSzhHK85KD4sMHK7g9f_Cj8qCgJ2gGXKPQ>
