Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Feb 1999 14:06:56 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        robert+freebsd@cyrus.watson.org
Cc:        hackers@freebsd.org
Subject:   Re: Signal--how to find address in SIGSEGV?
Message-ID:  <199902252206.OAA01887@vashon.polstra.com>
In-Reply-To: <Pine.BSF.3.96.990225160136.4294B-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <Pine.BSF.3.96.990225160136.4294B-100000@fledge.watson.org>,
Robert Watson  <robert+freebsd@cyrus.watson.org> wrote:
> 
> I'm playing with a userland library that will provide a simple paging
> service to code linked against it.  As such, it catches SIGSEGV and
> watches for trap 12 (T_PAGEFLT).  I notice that i386/i386/machdep.c places
> the fault address sf.sf_addr; i.e., in the stack frame.  However, the
> signal handler prototype:
> 
> int
> signal_handler(int signal, int code, struct sigcontext *scp)
> 
> does not appear to see that as a possible argument.  How can I get access
> to the address in question in a C-friendly way?

On the i386, the faulting address is in "scp->sc_err".  On the alpha,
I believe it's in "scp->sc_traparg_a0".

> Also, is there a way to tell whether or not the address was used in
> a read or a write

I don't know of one.

John
-- 
  John Polstra                                               jdp@polstra.com
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Nobody ever went broke underestimating the taste of the American public."
                                                            -- H. L. Mencken


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902252206.OAA01887>