Brian Xu - Sun Microsystems - Beijing China
2007-Jun-06 11:32 UTC
[dtrace-discuss] Help: dtrace failed to compile
Hi, I use dtrace fbt provider to trace the arguments to a function in one kernel module, then after I rebuild that module, why the dtrace script which works well before rebuilding fails to be compiled. See below: helios(32):> sudo ./scan.d Password: dtrace: failed to compile script ./scan.d: line 5: operands have incompatible types: "priv_info_uint_t" + "int" Line 5 in scan.d: printf("essid = %.*s\n", ((struct ieee80211_scanparams *)args[1])->ssid[1],stringof(((struct ieee80211_scanparams *)args[1])->ssid + 2)); Any hints would be appreciated. Thanks in advance, Brian
Hi Brian, It sounds like you have mismached CTF data which is preventing DTrace from resolving your reference to the args[] array. You can either compile the kernel module so that it''s no uniquifying against genunix or you can use references to arg1 and cast it to the appropriate type. Adam On Wed, Jun 06, 2007 at 07:32:41PM +0800, Brian Xu - Sun Microsystems - Beijing China wrote:> Hi, > > I use dtrace fbt provider to trace the arguments to a function in one kernel module, then after I rebuild that module, why the dtrace script which works well before rebuilding fails to be compiled. See below: > > helios(32):> sudo ./scan.d > Password: > dtrace: failed to compile script ./scan.d: line 5: operands have > incompatible types: "priv_info_uint_t" + "int" > > Line 5 in scan.d: > printf("essid = %.*s\n", ((struct ieee80211_scanparams *)args[1])->ssid[1],stringof(((struct ieee80211_scanparams *)args[1])->ssid + 2)); > > Any hints would be appreciated. > > Thanks in advance, > Brian > > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org-- Adam Leventhal, Solaris Kernel Development http://blogs.sun.com/ahl
Brian Xu - Sun Microsystems - Beijing China
2007-Jun-07 06:18 UTC
[dtrace-discuss] Help: dtrace failed to compile
Adam Leventhal ??:> Hi Brian, > > It sounds like you have mismached CTF data which is preventing DTrace from > resolving your reference to the args[] array. You can either compile the > kernel module so that it''s no uniquifying against genunix or you can > use references to arg1 and cast it to the appropriate type. > >Thanks Adam. The reason is: After the kernel module is compiled, it should also ctfmerge with the appropriate genunix. Thanks again, your clue is quite useful. :-) Brian> Adam > > On Wed, Jun 06, 2007 at 07:32:41PM +0800, Brian Xu - Sun Microsystems - Beijing China wrote: > >> Hi, >> >> I use dtrace fbt provider to trace the arguments to a function in one kernel module, then after I rebuild that module, why the dtrace script which works well before rebuilding fails to be compiled. See below: >> >> helios(32):> sudo ./scan.d >> Password: >> dtrace: failed to compile script ./scan.d: line 5: operands have >> incompatible types: "priv_info_uint_t" + "int" >> >> Line 5 in scan.d: >> printf("essid = %.*s\n", ((struct ieee80211_scanparams *)args[1])->ssid[1],stringof(((struct ieee80211_scanparams *)args[1])->ssid + 2)); >> >> Any hints would be appreciated. >> >> Thanks in advance, >> Brian >> >> _______________________________________________ >> dtrace-discuss mailing list >> dtrace-discuss at opensolaris.org >> > >