Alfred Perlstein <[EMAIL PROTECTED]> 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 - [EMAIL PROTECTED]
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message