Saving errno around signal handlers
Florian Weimer
fweimer@redhat.com
Mon Mar 3 08:58:00 GMT 2014
On 02/28/2014 11:16 PM, Joseph S. Myers wrote:
> On Fri, 28 Feb 2014, Richard Henderson wrote:
>
>> I'll note that this *may* affect other tools, that have previously looked
>> through trampolines via code inspection.
>
> I don't know if the comment in sysdeps/unix/sysv/linux/mips/sigaction.c is
> still accurate:
>
> /* NOTE: Please think twice before making any changes to the bits of
> code below. GDB needs some intimate knowledge about it to
> recognize them as signal trampolines, and make backtraces through
> signal handlers work right. Important are both the names
> (__restore_rt) and the exact instruction sequence.
> If you ever feel the need to make any changes, please notify the
> appropriate GDB maintainer. */
>
> (<https://sourceware.org/glibc/wiki/Development_Todo/Master#MIPS> points
> to a summary of known MIPS cases of CFI information missing in assembly
> sources, which includes this one.)
If we're fine with showing another stack frame in the backtrace of
signal handlers, we could just avoid the fancy tail call and not change
the restorer function at all. Then, from GDB's point of view, the
signal handler is the glibc-provided wrapper (which obviously needs
proper unwinding information etc.), and the user-installed handler is
just some function called from a signal handler.
--
Florian Weimer / Red Hat Product Security Team
More information about the Libc-alpha
mailing list