Skip to content
  1. Jul 26, 2011
  2. Jul 25, 2011
    • Johnny Chen's avatar
      Provide an add-on API to SBValue class by post-processing to provide a way · 48225053
      Johnny Chen authored
      to iterate through an SBValue instance by treating it as the head of a linked
      list.  API program must provide two args to the linked_list_iter() method:
      the first being the child member name which points to the next item on the list
      and the second being a Python function which an SBValue (for the next item) and
      returns True if end of list is reached, otherwise it returns False.
      
      For example, suppose we have the following sample program.
      
      #include <stdio.h>
      
      class Task {
      public:
          int id;
          Task *next;
          Task(int i, Task *n):
              id(i),
              next(n)
          {}
      };
      
      
      int main (int argc, char const *argv[])
      {
          Task *task_head = new Task(-1, NULL);
          Task *task1 = new Task(1, NULL);
          Task *task2 = new Task(2, NULL);
          Task *task3 = new Task(3, NULL); // Orphaned.
          Task *task4 = new Task(4, NULL);
          Task *task5 = new Task(5, NULL);
      
          task_head->next = task1;
          task1->next = task2;
          task2->next = task4;
          task4->next = task5;
      
          int total = 0; // Break at this line
          Task *t = task_head;
          while (t != NULL) {
              if (t->id >= 0)
                  ++total;
              t = t->next;
          }
          printf("We have a total number of %d tasks\n", total);
          return 0;
      }
      
      The test program produces the following output while exercising the linked_list_iter() SBVAlue API:
      
      task_head:
      	TypeName      -> Task *
      	ByteSize      -> 8
      	NumChildren   -> 2
      	Value         -> 0x0000000106400380
      	ValueType     -> local_variable
      	Summary       -> None
      	IsPointerType -> True
      	Location      -> 0x00007fff65f06e60
      (Task *) next = 0x0000000106400390
        (int) id = 1
        (Task *) next = 0x00000001064003a0
      
      (Task *) next = 0x00000001064003a0
        (int) id = 2
        (Task *) next = 0x00000001064003c0
      
      (Task *) next = 0x00000001064003c0
        (int) id = 4
        (Task *) next = 0x00000001064003d0
      
      (Task *) next = 0x00000001064003d0
        (int) id = 5
        (Task *) next = 0x0000000000000000
      
      llvm-svn: 135938
      48225053
  3. Jul 16, 2011
    • Johnny Chen's avatar
      Create an interface file for SBTarget named SBTarget.i which relieves SBTarget.h · dc7d3c12
      Johnny Chen authored
      of the duty of having SWIG docstring features and multiline string literals
      embedded within.
      
      lldb.swig now %include .../SBTarget.i, instead of .../SBTarget.h.  Will create
      other interface files and transition them over.
      
      Also update modify-python-lldb.py to better handle the trailing blank line right
      before the ending '"""' Python docstring delimiter.
      
      llvm-svn: 135355
      dc7d3c12
  4. Jul 15, 2011
  5. Jul 14, 2011
  6. Jul 09, 2011
  7. Jul 06, 2011
  8. Jul 03, 2011
  9. Jul 02, 2011
  10. Jun 14, 2011
    • Peter Collingbourne's avatar
      Generalise pattern for matching IsValid signature · 059640b5
      Peter Collingbourne authored
      Previously the IsValid pattern matched only function signatures of
      the form:
          def IsValid(*args): ...
      
      However under SWIG 1.3.40 on Linux the signature reads:
          def IsValid(self): ...
      
      The new pattern matches both signature types by matching only up to
      the left paren.
      
      llvm-svn: 132968
      059640b5
  11. Jun 10, 2011
  12. Jun 01, 2011
  13. May 25, 2011
  14. May 24, 2011
  15. May 18, 2011
  16. May 16, 2011
  17. May 02, 2011
  18. Apr 29, 2011
  19. Apr 28, 2011
    • Johnny Chen's avatar
      Move the iteration protocol of lldb objects to the auto-generated lldb Python module. · fbc0d271
      Johnny Chen authored
      This is so that the objects which support the iteration protocol are immediately obvious
      from looking at the lldb.py file.
      
      SBTarget supports two types of iterations: module and breakpoint.  For an SBTarget instance,
      you will need to issue either:
      
          for m in target.module_iter()
      
      or
      
          for b in target.breakpoint_iter()
      
      For other single iteration protocol objects, just use, for example:
      
          for thread in process:
              ID = thread.GetThreadID()
              for frame in thread:
                  frame.Disassemble()
                  ....
      
      llvm-svn: 130442
      fbc0d271
Loading