This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Bug with i386 watchpoints


At 13:22 21/11/2001 , Pierre Muller a écrit:
>At 13:12 21/11/2001 , Pierre Muller a écrit:
>>At 13:01 21/11/2001 , vous avez écrit:
>>
>>>   There seems to be a big problem with
>>>hardware watchpoints under Linux.
>>>
>>>   If I compile a simple program :
>>>
>>>/* START of twatch.c */
>>>static int x,y;
>>>int
>>>main ()
>>>{
>>>   x = 5;
>>>   y = x * 2;
>>>   x = y / 2;
>>>   x = 7;
>>>   return 0;
>>>}
>>>/* END of twatch.c */
>>>and set a hardware watchpoint on variable 'x',
>>>the debugger correctly stops at each program location where this global 
>>>var is changed.
>>>
>>>   But at the second run, the program is never stopped because
>>>of the changes to this global variable.
>>>
>>>   It seems like there is a problem with the hardware watchpoint
>>>resetting.
>>>
>>>   I tested this on only one Linux machine,
>>>but both the main and the 5.1 branches show this problem.
>>>
>>>
>>>   The current main CVS tree with a patch (not yet submitted)
>>>to add hardware watchpoints on cygwin target does not
>>>have this problem (It works but there are still some problems).
>>
>>Whoops, I was too fast once again...
>>
>>I do see the same problem in my cygwin implementation ...
>
>   I now see :
>   only the go32-nat.c code does call
>   i386_clean_dregs function.
>I didn't have it in my cygwin patch,
>and it also does not appear in
>any other gdb dir source.
>
>    This is probably the cause of the problem,
>it does indeed solve the bug for cygwin if I add this call to
>child_mourn_inferior as go32-nat code does.
>
>   Probably the same will fix the bug for linux too, but I can't try this 
> out now...

   I tried to look into the i386 linux files but I don't really know into 
which file
we should add this call to i386_cleanup_dregs.

    Eli, does the i386_cleanup_dregs also get called if you kill your debugged
program ? I suspect not, maybe this should be tested.

    Are there other i386 targets that might suffer from the lack of
call to i386_cleanup_dregs ?



Pierre Muller
Institut Charles Sadron
6,rue Boussingault
F 67083 STRASBOURG CEDEX (France)
mailto:muller@ics.u-strasbg.fr
Phone : (33)-3-88-41-40-07  Fax : (33)-3-88-41-40-99


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]