This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Teach gdb how to unwind cygwin _sigbe frames

On 23/02/2015 21:24, Corinna Vinschen wrote:
On Feb 23 18:15, Jon TURNEY wrote:
I really wanted to do this by adding some DWARF CFI to the generated sigfe.s
file, but there doesn't seem to currently be a way to correctly describe
_sigbe's frame using that.

I was wondering about this already.  It seems weird if the CFI stuff
doesn't allow for a situation like that

My understanding is limited, but it seems to me that it only describes register unwinding, not unwinding the state of an arbitrary memory location.

After writing my patch, which only unwinds one sigstack entry correctly, I went back and had another go at writing the equivalent CFI, which I think should be possible, but I still couldn't get it to work.

I'll take another look.

So instead, write a custom unwinder for _sigbe frames, which gets the return
address from the sigstack.

Implemented for i386 and amd64.

Cool.  Really.  But, shouldn't that go to the gdb-patches mailing list?

4. This unfortunately ends up hardcoding into gdb the offset of sigstackptr in
the cygwin TLS area from the top of stack, and so will break if that changes.
Hopefully that doesn't happen to often.

It happens too often to be ignored.  Wouldn't it make sense to add
a cygwin_internal call to return tls offsets or addresses, the later
if the argument is a pointer to the stack or cygtls area?

That's not going to give the right answer when remote debugging.

But the offset is, of course, encoded into the _sigbe routine, so the better approach is probably to extract it from there.

Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]