GDB: problem debugging 32 bit binary on 64 bit machine

Jan Kratochvil jan.kratochvil@redhat.com
Tue Nov 29 21:11:00 GMT 2011


On Tue, 29 Nov 2011 21:58:14 +0100, Jeff Kenton wrote:
> 0x400000008" (address is above the 32 bit limit).  This is caused by
> a call to extract_typed_address() from scan_dyntag() reading an 8
> byte type when it should only be reading 4 bytes.

ARCH_SIZE there should be 32 and TARGET_GDBARCH should be 32-bit.

I guess for some reasons your GDB found wrong (64-bit) library for your 32-bit
program.  See the settings like `set solib-search-path', `set sysroot' etc.

> I have two questions:
> 1. is tweaking extract_typed_address() the right way to handle 32
> bit addresses on a 64 bit machine?

No.  If ARCH_SIZE and TARGET_GDBARCH are set right it will work.


> 2. what's going wrong with dl_main()?

There is called a notification new library has been loaded in the inferior,
therefore GDB tries to load a matching symbol file (=the library itself) on
the GDB side.


> 3. meta-question: is this a generic bug in gdb's handling of 32 bit
> binaries, or is there likely something I missed while porting?

It 32-on-64 normally works, at least in Fedora, no custom patches for it
there.


Regards,
Jan



More information about the Gdb mailing list