Skip to content
  1. Dec 10, 2012
    • Greg Clayton's avatar
      Make sure that the lldb globals: · bc41bf70
      Greg Clayton authored
          lldb.target
          lldb.process
          lldb.thread
          lldb.frame
      
      are initialized to at least contain empty lldb classes in case some python gets imported that uses them.
      
      llvm-svn: 169750
      bc41bf70
  2. Nov 01, 2012
  3. Mar 16, 2012
  4. Nov 09, 2011
  5. Oct 14, 2011
    • Johnny Chen's avatar
      SBValue::Watch() and SBValue::WatchPointee() are now the official API for creating · 01a67860
      Johnny Chen authored
      a watchpoint for either the variable encapsulated by SBValue (Watch) or the pointee
      encapsulated by SBValue (WatchPointee).
      
      Removed SBFrame::WatchValue() and SBFrame::WatchLocation() API as a result of that.
      
      Modified the watchpoint related test suite to reflect the change.
      
      Plus replacing WatchpointLocation with Watchpoint throughout the code base.
      
      There are still cleanups to be dome.  This patch passes the whole test suite.
      Check it in so that we aggressively catch regressions.
      
      llvm-svn: 141925
      01a67860
  6. Oct 13, 2011
  7. Oct 03, 2011
  8. Sep 30, 2011
    • Johnny Chen's avatar
      Add docstring to in_range() function residing in the lldb module. · 97b5083c
      Johnny Chen authored
      llvm-svn: 140833
      97b5083c
    • Johnny Chen's avatar
      Migrate the in_range(symbol, section) and symbol_iter(module, section) utility functions · c44e20ce
      Johnny Chen authored
      from lldbutil.py to the lldb.py proper.  The in_range() function becomes a function in
      the lldb module.  And the symbol_iter() function becomes a method within the SBModule
      called symbol_in_section_iter().  Example:
      
              # Iterates the text section and prints each symbols within each sub-section.
              for subsec in text_sec:
                  print INDENT + repr(subsec)
                  for sym in exe_module.symbol_in_section_iter(subsec):
                      print INDENT2 + repr(sym)
                      print INDENT2 + 'symbol type: %s' % symbol_type_to_str(sym.GetType())
      
      might produce this following output:
      
          [0x0000000100001780-0x0000000100001d5c) a.out.__TEXT.__text
              id = {0x00000004}, name = 'mask_access(MaskAction, unsigned int)', range = [0x00000001000017c0-0x0000000100001870)
              symbol type: code
              id = {0x00000008}, name = 'thread_func(void*)', range = [0x0000000100001870-0x00000001000019b0)
              symbol type: code
              id = {0x0000000c}, name = 'main', range = [0x00000001000019b0-0x0000000100001d5c)
              symbol type: code
              id = {0x00000023}, name = 'start', address = 0x0000000100001780
              symbol type: code
          [0x0000000100001d5c-0x0000000100001da4) a.out.__TEXT.__stubs
              id = {0x00000024}, name = '__stack_chk_fail', range = [0x0000000100001d5c-0x0000000100001d62)
              symbol type: trampoline
              id = {0x00000028}, name = 'exit', range = [0x0000000100001d62-0x0000000100001d68)
              symbol type: trampoline
              id = {0x00000029}, name = 'fflush', range = [0x0000000100001d68-0x0000000100001d6e)
              symbol type: trampoline
              id = {0x0000002a}, name = 'fgets', range = [0x0000000100001d6e-0x0000000100001d74)
              symbol type: trampoline
              id = {0x0000002b}, name = 'printf', range = [0x0000000100001d74-0x0000000100001d7a)
              symbol type: trampoline
              id = {0x0000002c}, name = 'pthread_create', range = [0x0000000100001d7a-0x0000000100001d80)
              symbol type: trampoline
              id = {0x0000002d}, name = 'pthread_join', range = [0x0000000100001d80-0x0000000100001d86)
              symbol type: trampoline
              id = {0x0000002e}, name = 'pthread_mutex_lock', range = [0x0000000100001d86-0x0000000100001d8c)
              symbol type: trampoline
              id = {0x0000002f}, name = 'pthread_mutex_unlock', range = [0x0000000100001d8c-0x0000000100001d92)
              symbol type: trampoline
              id = {0x00000030}, name = 'rand', range = [0x0000000100001d92-0x0000000100001d98)
              symbol type: trampoline
              id = {0x00000031}, name = 'strtoul', range = [0x0000000100001d98-0x0000000100001d9e)
              symbol type: trampoline
              id = {0x00000032}, name = 'usleep', range = [0x0000000100001d9e-0x0000000100001da4)
              symbol type: trampoline
          [0x0000000100001da4-0x0000000100001e2c) a.out.__TEXT.__stub_helper
          [0x0000000100001e2c-0x0000000100001f10) a.out.__TEXT.__cstring
          [0x0000000100001f10-0x0000000100001f68) a.out.__TEXT.__unwind_info
          [0x0000000100001f68-0x0000000100001ff8) a.out.__TEXT.__eh_frame
      
      llvm-svn: 140830
      c44e20ce
  9. Sep 27, 2011
  10. Sep 24, 2011
  11. Aug 11, 2011
  12. Aug 05, 2011
    • Johnny Chen's avatar
      o modify-python-lldb.py: · 36c5eb13
      Johnny Chen authored
        Add the rich comparison methods (__eq__, __ne__) to SBType, too.
      
      o lldbtest.py:
      
        Add debug utility method TestBase.DebugSBType().
      
      o test/python_api/type:
      
        Add tests for exercising SBType/SBTypeList API, including the SBTarget.FindTypes(type_name)
        API which returns a SBTypeList matching the type_name.
      
      llvm-svn: 136975
      36c5eb13
    • Johnny Chen's avatar
      The recently introduced SBTypeList is also iterable. · 05c998ce
      Johnny Chen authored
      This patch takes some time because the old Python constructor pattern was not a valid one,
      and breaks with SBTypeList's __init__ signature.  Oops.
      
      llvm-svn: 136958
      05c998ce
  13. Jul 27, 2011
  14. Jul 26, 2011
  15. 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
  16. 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
  17. Jul 15, 2011
  18. Jul 14, 2011
  19. Jul 09, 2011
  20. Jul 06, 2011
  21. Jul 03, 2011
  22. Jul 02, 2011
  23. 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
  24. Jun 10, 2011
  25. Jun 01, 2011
  26. May 25, 2011
  27. May 24, 2011
  28. May 18, 2011
Loading