diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d | 6 | ||||
-rw-r--r-- | usr/src/uts/intel/dtrace/sdt.c | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d b/usr/src/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d index 0577ef6e0d..0523de0951 100644 --- a/usr/src/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d +++ b/usr/src/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d @@ -37,6 +37,12 @@ BEGIN ignore = $1; } +ERROR +{ + printf("sdt:::test failed.\n"); + exit(1); +} + sdt:::test /arg0 != 1 || arg1 != 2 || arg2 != 3 || arg3 != 4 || arg4 != 5 || arg5 != 6 || arg6 != 7/ diff --git a/usr/src/uts/intel/dtrace/sdt.c b/usr/src/uts/intel/dtrace/sdt.c index 20422246a4..e5ac9e8d3d 100644 --- a/usr/src/uts/intel/dtrace/sdt.c +++ b/usr/src/uts/intel/dtrace/sdt.c @@ -335,13 +335,14 @@ sdt_getarg(void *arg, dtrace_id_t id, void *parg, int argno, int aframes) * we're seeking is passed in regsiters, we can just * load it directly. */ - struct regs *rp = (struct regs *)&fp[1]; + struct regs *rp = (struct regs *)((uintptr_t)&fp[1] + + sizeof (uintptr_t)); if (argno <= inreg) { stack = (uintptr_t *)&rp->r_rdi; } else { stack = (uintptr_t *)(rp->r_rsp); - argno -= inreg; + argno -= (inreg + 1); } #endif goto load; |