]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r267759, r267761
authormarkj <markj@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 5 Aug 2014 01:53:15 +0000 (01:53 +0000)
committermarkj <markj@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 5 Aug 2014 01:53:15 +0000 (01:53 +0000)
commit3f1d166bf8512b77509ea30069251a0a27b883b5
tree9ff67f5aeee3c92448948fcec9dc58a82016454b
parent940abc4819260d31202adaaf032e52c1e75ff49c
MFC r267759, r267761

r267759:
Fix a couple of bugs on amd64 when fetching probe arguments beyond the
first five for probes entered through a UD fault (i.e. FBT probes).

Specifically, handle the fact that dtrace_invop_callsite must be
16 byte-aligned and thus may not immediately follow the call to
dtrace_invop() in dtrace_invop_start(). Also fetch register arguments and
the stack pointer through a struct trapframe instead of a struct reg.

r267761:
Fix some bugs when fetching probe arguments in i386. Firstly ensure that
the 4 byte-aligned dtrace_invop_callsite can be found and that it
immediately follows the call to dtrace_invop(). Secondly, fix some pointer
arithmetic to account for differences between struct i386_frame and illumos'
struct frame. Finally, ensure that dtrace_getarg() isn't inlined. It works
by following a fixed number of frame pointers to the probe site, so inlining
breaks it.

PR: 191260

git-svn-id: svn://svn.freebsd.org/base/stable/10@269557 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h
sys/cddl/dev/dtrace/amd64/dtrace_isa.c
sys/cddl/dev/dtrace/i386/dtrace_asm.S
sys/cddl/dev/dtrace/i386/dtrace_isa.c