This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Random gdbserver question (x86)
> Date: Wed, 31 Mar 2010 10:35:29 -0700
> From: Michael Snyder <msnyder@vmware.com>
>
> Pedro Alves wrote:
> > On Wednesday 31 March 2010 00:40:34, Michael Snyder wrote:
> >> Question -- is gdbserver "multi-arch" to the extent that a 32-bit
> >> gdbserver (built with target = i386) can debug a 64-bit app?
> >
> > No, only the other way around. It's "multi-arch" to the extent
> > that a linux 64-bit gdbserver (built with target = x86-64) can
> > debug a 32-bit app. It used to only be, only 64x64 or 32x32 was
> > possible; with multi-arch, 64x32 was made possible.
> >
> >> I ask because linux-x86-low.c is full of ifdefs on the architecture.
> >> It looks like most of the 64-bit code won't be compiled if the
> >> build machine is 32-bit.
> >
> > Correct.
>
> And is that more-or-less true of gdb as well? I.e., if host/target
> is x86_64-linux, then gdb can debug both 32 and 64 bit apps, but if
> host/target is i386-linux, then gdb can only debug 32 bit apps?
>
> Actually, I phrase it as a question even though I am pretty sure it
> is true. My real question is "Why?". It seems to me that if we just
> included amd64-linux-nat.o and amd64-*-tdep.o in the build, then
> 32-bit gdb should be able to debug 64-bit native apps.
The problem here is that ptrace(2) from a 32-bit executable only gives
you access to the 32-bit registers. Debugging 64-bit executables
remotely should work fine though, provided you --enable-64-bit-bfd.