Saving errno around signal handlers
Carlos O'Donell
carlos@redhat.com
Mon Mar 3 15:34:00 GMT 2014
On 03/03/2014 03:57 AM, Florian Weimer wrote:
> 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.
I'm not all that happy about that since that will certainly break
other tools that are only expecting the signal handler frame.
Cheers,
Carlos.
More information about the Libc-alpha
mailing list