From 8e50396accfa540cbe0b549256487d237e3d02f3 Mon Sep 17 00:00:00 2001 From: "Adam H. Leventhal" Date: Mon, 21 Apr 2014 07:00:44 -0800 Subject: 4772 $C prints no output on crash dump following dtrace panic() Reviewed by: Sebastien Roy Reviewed by: Eric Schrock Reviewed by: Robert Mustacchi Reviewed by: Richard Lowe Approved by: Eric Schrock --- usr/src/uts/intel/dtrace/dtrace_isa.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'usr/src/uts/intel/dtrace/dtrace_isa.c') diff --git a/usr/src/uts/intel/dtrace/dtrace_isa.c b/usr/src/uts/intel/dtrace/dtrace_isa.c index 6b5a4e1bd1..f649473dfb 100644 --- a/usr/src/uts/intel/dtrace/dtrace_isa.c +++ b/usr/src/uts/intel/dtrace/dtrace_isa.c @@ -24,7 +24,9 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ #include #include @@ -433,7 +435,7 @@ dtrace_getarg(int arg, int aframes) * use the pointer that it passed to the stack as the * second argument to dtrace_invop() as the pointer to * the stack. When using this stack, we must step - * beyond the EIP/RIP that was pushed when the trap was + * beyond the EIP that was pushed when the trap was * taken -- hence the "+ 1" below. */ stack = ((uintptr_t **)&fp[1])[1] + 1; @@ -442,17 +444,17 @@ dtrace_getarg(int arg, int aframes) * In the case of amd64, we will use the pointer to the * regs structure that was pushed when we took the * trap. To get this structure, we must increment - * beyond the frame structure, and then again beyond - * the calling RIP stored in dtrace_invop(). If the - * argument that we're seeking is passed on the stack, - * we'll pull the true stack pointer out of the saved + * beyond the frame structure, the calling RIP, and + * padding stored in dtrace_invop(). If the argument + * that we're seeking is passed on the stack, we'll + * pull the true stack pointer out of the saved * registers and decrement our argument by the number * of arguments passed in registers; if the argument * we're seeking is passed in regsiters, we can just * load it directly. */ struct regs *rp = (struct regs *)((uintptr_t)&fp[1] + - sizeof (uintptr_t)); + sizeof (uintptr_t) * 2); if (arg <= inreg) { stack = (uintptr_t *)&rp->r_rdi; -- cgit v1.2.3