Sorry forgot the logs.
--------------------test function.
#include <stdio.h>
#define __KERNEL__
#include <asm/atomic.h>
atomic_t i;
int main(void)
{
printf("atomic_step_test\n");
atomic_set(&i,5);
printf("i=%d\n",atomic_read(&i));
atomic_dec(&i);
printf("i=%d\n",atomic_read(&i));
}
----------- gdb logs-----------
Breakpoint 2, main () at test.c:8
8 printf("atomic_step_test\n");
(gdb) next
9 atomic_set(&i,5);
(gdb) next
10 printf("i=%d\n",atomic_read(&i));
(gdb) next
151 :"=m" (v->counter), "=qm" (c)
(gdb) next
Stepping over an atomic sequence of instructions beginning at 0x10000484
breakpoint.c:7730: internal-error: remove_single_step_breakpoints:
Assertion `single_step_breakpoints[0] != NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
--------------------------
Regards.
Emre
Hello Mr Gilliam;
Firstly thank you very much for your patch about single stepping problem
on atomic instructions. In my opinion, this bug is very critical for
powerpc arch (especially while kernel debugging). We have experienced this
problem with both with h/w probe (BDI2000) and KGDB while debugging
kernel. I have applied your patch to latest gdb (20060911 taken from cvs)
and after correctting some fail warnings and test it on a PPC8540. It can
successfullt detects 'lwarx' instruction but can't step over the loop and
a little moment later, it gives an error message like 'breakpoint.c:7730:
internal-error: remove_single_step_breakpoints: Assertion
`single_step_breakpoints[0] != NULL' failed.'
I have corrected some patch error, I dont know, maybe this is the reason
of the problem. Here is the output of gdb and my test program that include
atomic_dec function.
Where can be the problem? And thank alot again, because atomic functions
are everywhere on kernel waiting to cause infinite loops..
Regards.
Emre KARA