Q: Bug in comment/code in record_full_resume?

Andreas From andreas.from@ericsson.com
Wed Dec 10 19:13:00 GMT 2014


Hi,

I am thinking this is a bug - in the comment or in the code. Either way, 
I am confused about this code.

At the first assignment - 'step = 1' - as indicated by the comment on 
the line above, a normal continue should mean having step == 0. At the 
second step assignment the comment and the assignment match in content.

BR,
Andreas


static void
record_full_resume (struct target_ops *ops, ptid_t ptid, int step,
                     enum gdb_signal signal)
{
   record_full_resume_step = step;
   record_full_resumed = 1;
   record_full_execution_dir = execution_direction;

   if (!RECORD_FULL_IS_REPLAY)
     {
       struct gdbarch *gdbarch = target_thread_architecture (ptid);

       record_full_message (get_current_regcache (), signal);

       if (!step)
         {
           /* This is not hard single step.  */
           if (!gdbarch_software_single_step_p (gdbarch))
             {
               /* This is a normal continue.  */
               step = 1;
             }
           else
             {
               /* This arch support soft sigle step.  */
               if (thread_has_single_step_breakpoints_set 
(inferior_thread ()))
                 {
                   /* This is a soft single step.  */
                   record_full_resume_step = 1;
                 }
               else
                 {
                   /* This is a continue.
                      Try to insert a soft single step breakpoint.  */
                   if (!gdbarch_software_single_step (gdbarch,
                                                      get_current_frame ()))
                     {
                       /* This system don't want use soft single step.
                          Use hard sigle step.  */
                       step = 1;
                     }
                 }
             }
         }

...



More information about the Gdb mailing list