This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB 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] Make mips-linux signal frame unwinding more robust.


On 02/25/2010 09:47 AM, Joel Brobecker wrote:
This patch makes gdb follow suit and find the sigcontext_base using
the signal frame's SP rather than an offset from the trampoline.

Is there a document that explains that the sigcontext structure is always going to be at the frame's SP?

No official document, however the principle of maintaining binary compatibility is important, and recognized by the kernel maintainers.


There are several things that constrain the the changes that can be made in the kernel:

1) The glibc setcontext API as discussed here:

http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=alpine.DEB.1.10.0902282326580.4064%40tp.orcam.me.uk

2) libgcc's unwinder:

http://gcc.gnu.org/viewcvs/trunk/gcc/config/mips/linux-unwind.h?revision=145841&view=markup


I don't know mips-linux, but something looked funny to me: You avoid the use of SIGFRAME_CODE_OFFSET to compute the address where the sigcontext structure is located, but you still use it to compute the frame base address (used when building the frame ID). Is the frame base address still a constant offset from FUNC, or does the frame ID base address also needs to be changed.

Right, I missed that part. When it started working, I stopped patching. I will take another look at that part.




I believe that Daniel J has a good knowledge of mips-linux, and would be an ideal reviewer. If he doesn't have time, though, I'm OK with approving a patch for the HEAD branch. For the 7.1 branch, though, I'd rather have a more knowledgeable opinion.


Thanks, David Daney


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