Skip to content
  1. Apr 17, 2013
    • Sean Callanan's avatar
      Made the IRInterpreter's methods static, since · 182bd6c0
      Sean Callanan authored
      it doesn't actually hold any important state.
      
      llvm-svn: 179702
      182bd6c0
    • Sean Callanan's avatar
      Made the IRInterpreter be able to operate without · 175187b3
      Sean Callanan authored
      a ClangExpressionDeclMap.  Any functions that
      require value resolution etc. fail if the
      ClangExpressionDeclMap isn't present - which is
      exactly what is desired.
      
      llvm-svn: 179695
      175187b3
    • Daniel Malea's avatar
      Fix Linux build of LLDB · 82363863
      Daniel Malea authored
      - conditionally build mac-specific plugins only on mac (PluginObjectFileMachO, PluginDynamicLoaderDrawinKernel and PluginDynamicLoaderMacOSXDYLD)
      - clean up warnings by ignoring deprecated declarations (auto_ptr for example)
      
      llvm-svn: 179694
      82363863
    • Sean Callanan's avatar
      Removed the "expr" alias for "expression," which · 90e579f2
      Sean Callanan authored
      is entirely unnecessary and confuses the command
      interpreter when the user types "exp".
      
      llvm-svn: 179691
      90e579f2
    • Sean Callanan's avatar
      Updated the IRInterpreter to work with an · 08052afa
      Sean Callanan authored
      IRMemoryMap rather than through its own memory
      abstraction.  This considerably simplifies the
      code, and makes it possible to run the
      IRInterpreter multiple times on an already-parsed
      expression in the absence of a ClangExpressionDeclMap.
      
      Changes include:
      
        - ClangExpressionDeclMap's interface methods
          for the IRInterpreter now take IRMemoryMap
          arguments.  They are not long for this world,
          however, since the IRInterpreter will soon be
          working with materialized variables.
      
        - As mentioned above, removed the Memory class
          from the IR interpreter altogether.  It had a
          few functions that remain useful, such as
          keeping track of Values that have been placed
          in memory, so I moved those into methods on
          InterpreterStackFrame.
      
        - Changed IRInterpreter to work with lldb::addr_t
          rather than Memory::Region as its primary
          currency.
      
        - Fixed a bug in the IRMemoryMap where it did not
          report correct address byte size and byte order
          if no process was present, because it was using
          Target::GetDefaultArchitecture() rather than
          Target::GetArchitecture().
      
        - Made IRMemoryMap methods clear the Errors they
          receive before running.  Having to do this by
          hand is just annoying.
      
      The testsuite seems happy with these changes, but
      please let me know if you see problems (especially
      in use cases without a process).
      
      llvm-svn: 179675
      08052afa
    • Sean Callanan's avatar
      Modified the IRInterpreter to take an IRMemoryMap. · 179b5485
      Sean Callanan authored
      It doesn't use it yet; the next step is to make it
      use the IRMemoryMap instead of its own conjured-up
      Memory class.
      
      llvm-svn: 179650
      179b5485
    • Sean Callanan's avatar
      Flipped the big switch: LLDB now uses the new · 14b1bae5
      Sean Callanan authored
      Materializer for all expressions that need to
      run in the target.  This includes the following
      changes:
      
      - Removed a bunch of (de-)materialization code
        from ClangExpressionDeclMap and assumed the
        presence of a Materializer where we previously
        had a fallback.
      
      - Ensured that an IRMemoryMap is passed into
        ClangExpressionDeclMap::Materialize().
      
      - Fixed object ownership on LLVMContext; it is
        now owned by the IRExecutionUnit, since the
        Module and the ExecutionEngine both depend on
        its existence.
      
      - Fixed a few bugs in IRMemoryMap and the
        Materializer that showed up during testing.
      
      llvm-svn: 179649
      14b1bae5
    • Jason Molenda's avatar
      42b69fa8
    • Jim Ingham's avatar
      Make sure all the threads get a chance to compute their StopInfo's before we start running · 7bc3465f
      Jim Ingham authored
      ShouldStop on the threads, which might destroy information needed to correctly compute another 
      thread's StopInfo.
      
      <rdar://problem/13664026>
      
      llvm-svn: 179641
      7bc3465f
  2. Apr 16, 2013
  3. Apr 15, 2013
    • Sean Callanan's avatar
      Fixed a few bugs in IRMemoryMap: · c8c5b8dc
      Sean Callanan authored
      - If an allocation is mirrored between the host
        and the process, update the host's version
        before returning a DataExtractor pointing to
        it.
      
      - If anyone attempts to access memory in a
        process/target that does not have a corresponding
        allocation, try accessing the memory directly
        before erroring out.
      
      llvm-svn: 179561
      c8c5b8dc
    • Sean Callanan's avatar
      Added support for registers to the Materializer. · b5717e00
      Sean Callanan authored
      Also improved logging and error handling in a few
      spots in the Materializer.
      
      llvm-svn: 179557
      b5717e00
    • Sean Callanan's avatar
      Audited the existing Materializer code to ensure · b024d878
      Sean Callanan authored
      that it works in the absence of a process.  Codepaths
      in the Materializer now use the best execution context
      scope available to them.
      
      llvm-svn: 179539
      b024d878
  4. Apr 14, 2013
    • Greg Clayton's avatar
      Fixed issues with the way ELF symbols are parsed: · 9594f4c8
      Greg Clayton authored
      - Do not add symbols with no names
      - Make sure that symbols from ELF symbol tables know that the byte size is correct. Previously the symbols would calculate their sizes by looking for the next symbol and take symbols that had zero size and make them have invalid sizes.
      - Added the ability to dump raw ELF symbols by adding a Dump method to ELFSymbol
      
      Also removed some unused code from lldb_private::Symtab.
      
      llvm-svn: 179466
      9594f4c8
  5. Apr 13, 2013
  6. Apr 12, 2013
    • Sean Callanan's avatar
      Implemented materialization and dematerialization · f8043fa5
      Sean Callanan authored
      for variables in the new Materializer.  This is
      much easier now that the ValueObject API is solid.
      
      I still have to implement reading bytes into a
      ValueObject, but committing what I have so far.
      
      This code is not yet used, so there will be fixes
      when I switch the expression parser over to use the
      new Materializer.
      
      llvm-svn: 179416
      f8043fa5
    • Greg Clayton's avatar
      <rdar://problem/13491977> · b3ae8761
      Greg Clayton authored
      Made some fixes to the OperatingSystemPython class:
      - If any thread dictionary contains any "core=N" key/value pairs then the threads obtained from the lldb_private::Process itself will be placed inside the ThreadMemory threads and will be used to get the information for a thread. 
      - Cleaned up all the places where a thread inside a thread was causing problems
      
      llvm-svn: 179405
      b3ae8761
    • Sean Callanan's avatar
      Replicated the materialization logic for persistent · 35005f76
      Sean Callanan authored
      variables in the Materializer.  We don't use this
      code yet, but will soon once the other materializers
      are online.
      
      llvm-svn: 179390
      35005f76
    • Jason Molenda's avatar
      Change the default for PlatformDarwinKernel to be enabled a la · af97e3fe
      Jason Molenda authored
      settings set platform.plugin.darwin-kernel.search-locally-for-kexts true
      
      llvm-svn: 179348
      af97e3fe
    • Jim Ingham's avatar
      Save away the locations at the site we hit and iterate over that collection. ... · dbd3c4da
      Jim Ingham authored
      Save away the locations at the site we hit and iterate over that collection.  Otherwise the action of one location
      could delete the other locations, and that would leave us iterating over a reduced size collection and crash.
      
      <rdar://problem/13592544>
      
      llvm-svn: 179332
      dbd3c4da
    • Enrico Granata's avatar
      <rdar://problem/13623698> · 4873e527
      Enrico Granata authored
      This patch fixes the issue that we were using the C stack as a measure of depth of ValueObject hierarchies, in the sense that we were assuming that recursive ValueObject operations would never be deeper than the stack allows.
      This assumption is easy to prove wrong, however.
      For instance, after ~10k runs through this loop:
      struct node
      {
      	int value;
      	node* child;
      	node (int x)
      	{
      		value = x;
      		child = nullptr;
      	}
      };
      
      int main ()
      {
      	node root(1);
      	node* ptr = &root;
      	int j = 2;
      	while (1)
      	{
      		ptr->child = new node(j++);
      		ptr = ptr->child;
      	}
      	return 0;
      }
      
      the deepmost child object will be deeper than the stack on most architectures, and we would be unable to display it
      
      This checkin fixes the issue by introducing a notion of root of ValueObject hierarchies.
      In a couple cases, we have to use an iterative algorithm instead of going to the root because we want to allow deeper customizations (e.g. formats, dynamic values).
      While the patch passes our test suite without regressions, it is a good idea to keep eyes open for any unexpected behavior (recursion can be subtle..)
      Also, I am hesitant to introduce a test case since failing at this will not just be marked as an "F", but most definitely crash LLDB.
      
      llvm-svn: 179330
      4873e527
    • Greg Clayton's avatar
      <rdar://problem/13370286> · 3342b9b2
      Greg Clayton authored
      Fixed a case there the OperatingSystemPython would try to access and play with SBValue objects when the process' public run lock was taken. Prior to this fix, all attempts to run any SBValue functions would fail if run from the private state thread (like updating the thread list). Now we have two run locks, one for public (all threads except the private state thread) and one for private.
      
      llvm-svn: 179329
      3342b9b2
    • Greg Clayton's avatar
  7. Apr 11, 2013
Loading