Two minor problems are noted with fbt when using kernels compiled with
gcc:
1. Tables containing legal but meaningless instructions trigger
warnings of the form:
Apr 6 18:07:27 flask fbt: [ID 783403 kern.notice] NOTICE: strange leaf
jmpl/call delay at 7b277b60
Apr 6 18:07:27 flask fbt: [ID 783403 kern.notice] NOTICE: strange leaf
jmpl/call delay at 7b277b64
Apr 6 18:07:27 flask fbt: [ID 783403 kern.notice] NOTICE: strange leaf
jmpl/call delay at 7b277b68
Apr 6 18:07:27 flask fbt: [ID 783403 kern.notice] NOTICE: strange leaf
jmpl/call delay at 7b277b6c
The instructions in question look like:
geterrno+0x140: call -0x136216d0 <0x67c56490>
geterrno+0x144: call -0x136216d0 <0x67c56494>
geterrno+0x148: call -0x136216b0 <0x67c564b8>
0x7b277b6c: illtrap 0
0x7b277b70: illtrap 0
Since these aren''t really calls, fbt does the right thing. The
messages are harmless but voluminous.
The examples I''ve looked at invariably have the table between
functions. Determining that these instructions are unreachable,
however, seems impractical. Any suggestions?
2. fbt refuses to instrument functions whose first instruction is a
branch other than non-annulled ba. However, gcc compiles functions
like
int
foo(void *bar) {
if (bar == NULL)
return (0);
...
}
into
failover_safe: brz,pn %o0, +0x38
<failover_safe+0x38>
failover_safe+4: clr %o5
failover_safe+8: ldx [%o0], %o0
...
which is not incorrect. There are unfortunately quite a few of these
functions, though the only negative impact is that they aren''t
instrumented and warnings are issued on the console. A grovel through
bugster doesn''t show that anyone''s run across this yet. How
difficult
would it be to instrument these?
--
Keith M Wesolowski "Sir, we''re surrounded!"
Solaris Kernel Team "Excellent; we can attack in any direction!"
_______________________________________________
DTrace mailing list
DTrace@opensolaris.org
https://www.opensolaris.org/mailman/listinfo/dtrace