Comment 1 for bug 684218

Revision history for this message
Ulrich Weigand (uweigand) wrote : Re: Failures in gdb.base/call-signal-resume.exp

This failure goes away if debug information for glibc is present.

The problem is that without CFI debug data, GDB is currently unable to backtrace out of the "kill" routine correctly:

000259f0 <kill>:
   259f0: e1a0c007 mov ip, r7
   259f4: e3a07025 mov r7, #37 ; 0x25
   259f8: ef000000 svc 0x00000000
   259fc: e1a0700c mov r7, ip
   25a00: e3700a01 cmn r0, #4096 ; 0x1000
   25a04: 312fff1e bxcc lr
   25a08: eaffbf0c b 15640 <__libc_start_main+0x1d0>
   25a0c: e320f000 nop {0}

because it doesn't detect that r7 has been saved into ip. (Thus, when backtracing out of the caller requires use of the caller's r7, GDB uses the incorrect value.)

Unfortunately, even with my patch to add support for ARM unwind tables (#661253), this particular case *still* is not handled, because the kill routine doesn't even provide correct ARM unwind tables. See the discussion leading up to this:
http://sourceware.org/ml/gdb-patches/2010-12/msg00005.html

So it looks like a glibc fix will be required in addition to the #661253 GDB fix.