Skip to contentSkip to conversation

gdb/kgdb register mismatch

DISCUSSION Pete Popov 2 participants 3 messages Feb 23, 2006 MIPS

lore
Share & tools
lore

Pete Popov

author
#0 lore raw

I'm having the following problems with gdb/kgdb:

64bit CPU, running a 32 bit kernel. When I break at a certain point, I can see that the kernel kgdb stub appears to be sending the correct register information, where each reg value written in the kgdb packet is 32bit. However, the cross gdb client seems to be interpreting, or expecting, 64bit register values so it 'skips' over every other value. For example:

reg values sent by kgdb:      reg values shown by gdb client:
reg 0:  0x00000000            reg0:  0x00000001
reg 1:  0x00000001            reg1:  0x00000002
reg 2:  0x00000002            reg2:  0x00000004
reg 3:  0x00000003
reg 4:  0x00000004

Should the kgdb stub be sending 64bit values for the registers, even though it's a 32bit kernel? If the stub is supposed to be sending 32bit register values, any suggestion why cross gdb is not interpreting them correctly?

Thanks,

Pete

#1 lore raw
Quoted 17 lines · Pete Popov

I'm having the following problems with gdb/kgdb:

64bit CPU, running a 32 bit kernel. When I break at a certain point, I can see that the kernel kgdb stub appears to be sending the correct register information, where each reg value written in the kgdb packet is 32bit. However, the cross gdb client seems to be interpreting, or expecting, 64bit register values so it 'skips' over every other value. For example:

reg values sent by kgdb:      reg values shown by gdb client:
reg 0:  0x00000000            reg0:  0x00000001
reg 1:  0x00000001            reg1:  0x00000002
reg 2:  0x00000002            reg2:  0x00000004
reg 3:  0x00000003
reg 4:  0x00000004
Quoted 4 lines

Should the kgdb stub be sending 64bit values for the registers, even though it's a 32bit kernel? If the stub is supposed to be sending 32bit register values, any suggestion why cross gdb is not interpreting them correctly?

This is a FAQ; it's a bug in GDB that will be fixed someday, but for now use "set architecture mips:isa32".

Signature · 2 lines
Daniel Jacobowitz
CodeSourcery
author
#2 lore raw
Quoted 18 lines · Daniel Jacobowitz
Quoted 17 lines · Pete Popov

I'm having the following problems with gdb/kgdb:

64bit CPU, running a 32 bit kernel. When I break at a certain point, I can see that the kernel kgdb stub appears to be sending the correct register information, where each reg value written in the kgdb packet is 32bit. However, the cross gdb client seems to be interpreting, or expecting, 64bit register values so it 'skips' over every other value. For example:

reg values sent by kgdb:      reg values shown by gdb client:
reg 0:  0x00000000            reg0:  0x00000001
reg 1:  0x00000001            reg1:  0x00000002
reg 2:  0x00000002            reg2:  0x00000004
reg 3:  0x00000003
reg 4:  0x00000004
Quoted 7 lines
Quoted 4 lines

Should the kgdb stub be sending 64bit values for the registers, even though it's a 32bit kernel? If the stub is supposed to be sending 32bit register values, any suggestion why cross gdb is not interpreting them correctly?

This is a FAQ; it's a bug in GDB that will be fixed someday, but for now use "set architecture mips:isa32".

It works, thanks! I'm not sure how well documented this is but perhaps it's just because I don't use kgdb often.

Pete