Statetrace: Make sure the current state is loaded to print the initial stack frame.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 29 Jul 2009 07:35:49 +0000 (00:35 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 29 Jul 2009 07:35:49 +0000 (00:35 -0700)
The early call to child->step() was removed earlier because it confused the
new differences-only protocol ARM sendState() was using. It's necessary that
that gets called at least once before attempting to print the initial stack
frame, though, because otherwise statetrace doesn't know what the stack
pointer is. By putting the first call to child->step() in a common spot, both
needs are met.

util/statetrace/statetrace.cc

index 2861bb29ceb0b490783a3e7bc662eae454036a5c..e2762ac2c7a9e5920327c404bd644d5ca027ac7c 100644 (file)
@@ -123,6 +123,7 @@ int main(int argc, char * argv[], char * envp[])
         cerr << "Couldn't start target program" << endl;
         return 1;
     }
+    child->step();
     if(printInitial)
     {
         child->outputStartState(cout);
@@ -157,7 +158,6 @@ int main(int argc, char * argv[], char * envp[])
             cerr << "Couldn't connect to server! " << strerror(errno) << endl;
             return 1;
         }
-        child->step();
         while(child->isTracing())
         {
                 if(!child->sendState(sock))