gdb/kgdb register mismatch
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
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
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