Date: 18 Jul 1999 12:45:27 +0200 From: Dag-Erling Smorgrav <des@flood.ping.uio.no> To: Alfred Perlstein <bright@rush.net> Cc: Dag-Erling Smorgrav <des@flood.ping.uio.no>, hackers@FreeBSD.ORG Subject: Re: Determining the return address Message-ID: <xzpaesunsmw.fsf@flood.ping.uio.no> In-Reply-To: Alfred Perlstein's message of "Sat, 17 Jul 1999 16:01:50 -0500 (EST)" References: <Pine.BSF.3.96.990717155538.14320Z-100000@cygnus.rush.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Alfred Perlstein <bright@rush.net> writes: > This looks like what you are doing is trying to grab the data on the > stack before "log" which is the return address. Yes. It actually works :) > I doubt this is > at all portable and may fail because of optimizations and ABI, such > as archs that store the return address in a register... I know - I don't expect it to be portable. > gdb and glibc have some functions to assist in runtime backtraces, > perhaps a look there may help? I found out about __builtin_return_address(0). > > BTW, is dladdr() signal-safe? > not according to the sigaction man page. OK, is there any way I can find out that I am being called from a signal handler, other than using a global variable? I want my logging functions to be signal-safe - that's why I use writev(), and I've gone to great lengths to ensure that log_makedate() (which uses localtime_r() and strftime() to build a date string) and lvformat() (a printf() clone with some additional goodies) are signal-safe. DES -- Dag-Erling Smorgrav - des@flood.ping.uio.no 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?xzpaesunsmw.fsf>