Citando George Anzinger <geo...@wildturkeyranch.net>:
> On 10/31/14 11:06, joaoandrefe...@sapo.pt wrote:
>> Hello all,
>>
>> Lately, I've been experimenting with KGDB to do some kernel debugging.
>> While doing this, a doubt arised while using the "set" command, trying
>> to change the value of some registers. I've been able to successfully
>> change the value of all the registers provided by the "info registers"
>> command (i. e., in my case $eax, $ecx, $edx, $ebx, $esp, $ebp, $esi,
>> $edi, $eip, $eflags, $cs, $ss, $ds, $es, $fs and $gs) *except* for
>> $esp, $ss, $fs and $gs. Why is it so?
> If you were to be successful in changing these once you continued from
> KGDB you would likely be immeadiatly back in KGDB to handle a system
> fault. If you got them exactly right, you just might be in another
> thread and might even execute a few instructions before the system
> discovered (the hard way) that it was executing code from a thread that
> was not the one the system tables indicate is running.
>
> Some of the registers you can change need to be handled VERY carefully
> (eip or esp for example) or you could easily confuse the system as well.
Hello George,
Thanks for your answer (and sorry for the late reply). I know that
messing around with registers can lead to awkward results, but in a
certain that is precisely what I am trying to do: I'm using KGDB do to
some fault injection on the kernel, and for now that implies
bit-flipping registers. With that in mind I've made these simple
experiences (bit-flip every register I possibly could with (K)GDB),
just for testing purposes. And so, my initial doubt persists: why
these four registers doesn't allow me to change their value? It is
supposed to be like this? And if so, is there a workaround?
>
> --
> George
>> I've been making these tests
>> after hitting a hardware breakpoint, then I set the values with e. g.
>> "set $es = 0xf1c2007c", and verifiy the assignemt with "info reg $es".
>> As I've pointed out, it works with the majority of the registers,
>> except for that four (in this particular case, the first command
>> doesn't output any error, but the second command shows me that the
>> registers remain with the initial value). By the way, I've started GDB
>> with the -write option (checked it inside GDb with the "show write"
>> command). My GDB version is 7.2. I have a practical example below the
>> end of this message, with "set debug remote 1" option enabled. Still
>> regarding this exxample, from what I've been told in the GDB mailing
>> list, it seems KGDB is ignoring the value change on $ss.
>>
>> Anyone here knows why? If someone knows something about this situation
>> and can share it with me, it would be great.
>>
>> Best regards,
>> João
>>
>> Example:
>>
>> (gdb) info reg $es
>> es 0x7b 123
>> (gdb) set $es = 0x7c
>> Sending packet: $Pd=7c000000#ab...Ack
>> Packet received:
>> Packet P (set-register) is NOT supported
>> Sending packet:
>> $G14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000#61...Ack
>> Packet received: OK
>> Sending packet: $g#67...Ack
>> Packet received:
>> 14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000
>> (gdb) info reg $es
>> es 0x7c 124
>> (gdb) info reg $ssPedro
>> ss 0x68 104
>> (gdb) set $ss = 0x69
>> Sending packet:
>> $G14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000690000007b009dc07c000000ffff0000ffff0000#62...Ack
>> Packet received: OK
>> Sending packet: $g#67...Ack
>> Packet received:
>> 14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000
>> (gdb) info reg $ss
>> ss 0x68 104
>>
>> Best regards,
>> João
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Kgdb-bugreport mailing list
>> Kgdb-bugreport@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport
>>
>
> --
> George Anzinger geo...@wildturkeyranch.net
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Kgdb-bugreport mailing list
> Kgdb-bugreport@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport
------------------------------------------------------------------------------
_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport