Re: Problems with GDB-5.0 and recent Linux kernels (2.4.0-test1-ac[47])

From: Mark Kettenis (kettenis@wins.uva.nl)
Date: Sat Jun 03 2000 - 16:04:28 EDT

  • Next message: Matthew Dharm: "Re: How to sleep a kernel thread?"

    [ Apologies to those receiving two copies of this message. My ISP has
      managed to get one of its mail servers in ORBS again. Sigh ... ]

       From: Andris Pavenis <pavenis@latnet.lv>
       Date: Sat, 3 Jun 2000 20:37:45 +0200

       Have somebody tried GDB commands 'info float' and 'info reg' on a
       system running latest ac kernels. I'm getting coredump from gdb-5.0
       on these commands.

       2.4.0-test1 - seems that all works, no such problem
       2.4.0-test1-ac4 and 2.4.0-test1-ac7 - gdb coredumps on these commands

       It seems to be some stack corruption.

    Smells like a kernel bug to me. Yep it is! The Pentium III FXSR, SSE
    support breaks changes the ABI of the ptrace(GETFPREGS, ...) interface
    in an incompatible way. The size of `struct user_i387_struct' has been
    changed, so the kernel writes beyond the space on the stack reserved
    by GDB, hence the stack corruption.

    The kernel folks will have to find another way to implement this.
    Probably by introducing a new ptrace request. A while back Jim Blandy
    implemented support for the SSE registers in GDB, based on a different
    kernel patch that implemented a GETXFPREGS requests. It also
    implements support for core dumps in a different way, using an extra
    section for the SSE registers. Take a look at the GDB 5.0 release, or
    the following URL:

      http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/src/gdb/i386-linux-nat.c?cvsroot=src

    It would be great, if the interface in the kernel could be compatible
    with Jim's implementation, since that would mean instant support for
    the SSE registers in GDB once the glibc headers have been updated.

    By the way, I suspect that the change to `struct user_i387_struct'
    also change the offset of the u_debugreg member of `struct user', and
    therefore will break GDB's support for hardware brea/watchpoints.

    Mark

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/



    This archive was generated by hypermail 2b29 : Sat Jun 03 2000 - 16:49:02 EDT