Skip to content
  1. Apr 19, 2013
    • Sean Callanan's avatar
      Optimized the way breakpoint conditions are evaluated. · 3dbf346e
      Sean Callanan authored
      Previously, the options for a breakopint or its
      locations stored only the text of the breakpoint
      condition (ironically, they used ClangUserExpression
      as a glorified std::string) and, each time the condition
      had to be evaluated in the StopInfo code, the expression
      parser would be invoked via a static method to parse and
      then execute the expression.
      
      I made several changes here:
      
        - Each breakpoint location now has its own
          ClangUserExpressionSP containing a version of
          the breakpoint expression compiled for that exact
          location.
      
        - Whenever the breakpoint is hit, the breakpoint
          condition expression is simply re-run to determine
          whether to stop.
      
        - If the process changes (e.g., it's re-run) or
          the source code of the expression changes (we use
          a hash so as to avoid doing string comparisons)
          the ClangUserExpressionSP is re-generated.
      
      This should improve performance of breakpoint
      conditions significantly, and takes advantage of
      the recent expression re-use work.
      
      llvm-svn: 179838
      3dbf346e
    • Sean Callanan's avatar
      Reverted 179810, which breaks the expression · 7d71e567
      Sean Callanan authored
      parser.
      
      llvm-svn: 179832
      7d71e567
    • Jason Molenda's avatar
      Change TargetList::CreateTarget to realpath the c-string filename of the · 17f9e8b3
      Jason Molenda authored
      executable -- if I do "(lldb) file ~/bin/exe" that tilde expansion needs
      to take place here.
      
      llvm-svn: 179831
      17f9e8b3
    • Sean Callanan's avatar
      Made IRMemoryMap::FindSpace a little cleverer, · bb9945f4
      Sean Callanan authored
      and made attempts to allocate memory in the process
      fall back to FindSpace and just allocate memory on
      the host (but with real-looking pointers, hence
      FindSpace) if the process doesn't allow allocation.
      This allows expressions to run on processes that don't
      support allocation, like core files.
      
      This introduces an extremely rare potential problem:
      If all of the following are true:
      
      - The Process doesn't support allocation;
      
      - the user writes an expression that refers to an
        address that does not yet map to anything, or is
        dynamically generated (e.g., the result of calling
        a function); and
      
      - the randomly-selected address for the static data
        for that specific expression runs into the
        address the user was expecting to work with;
      
      then dereferencing the pointer later results
      in the user seeing something unexpected.  This is
      unlikely but possible; as a future piece of work,
      we should have processes be able to hint to the
      expression parser where it can allocate temporary data
      of this kind.
      
      llvm-svn: 179827
      bb9945f4
    • Jason Molenda's avatar
      Remove an unneeded local var, a missing return statement in kernel search... · 44edbf13
      Jason Molenda authored
      Remove an unneeded local var, a missing return statement in kernel search code, thanks to Greg Clayton for finding these.
      
      llvm-svn: 179822
      44edbf13
    • Filipe Cabecinhas's avatar
      Split Linux-specific and OS X specific stuff. Add include_directories · 24cf86f8
      Filipe Cabecinhas authored
      Only add the -std=c++11 flag when needed, don't touch current flags.
      
      llvm-svn: 179821
      24cf86f8
    • Greg Clayton's avatar
      More fallout unique_ptr changes for from... · febe8e33
      Greg Clayton authored
      More fallout unique_ptr changes for from http://lab.llvm.org:8011/builders/lldb-x86_64-linux/builds/3565.
      
      llvm-svn: 179815
      febe8e33
    • Greg Clayton's avatar
    • Greg Clayton's avatar
      After discussing with Chris Lattner, we require C++11, so lets get rid of the... · 7b0992d9
      Greg Clayton authored
      After discussing with Chris Lattner, we require C++11, so lets get rid of the macros and just use C++11.
      
      llvm-svn: 179805
      7b0992d9
    • Sean Callanan's avatar
      This commit changes the way LLDB executes user · 1582ee68
      Sean Callanan authored
      expressions.  
      
      Previously, ClangUserExpression assumed that if
      there was a constant result for an expression 
      then it could be determined during parsing.  In
      particular, the IRInterpreter ran while parser
      state (in particular, ClangExpressionDeclMap) 
      was present.  This approach is flawed, because
      the IRInterpreter actually is capable of using
      external variables, and hence the result might
      be different each run.  Until now, we papered
      over this flaw by re-parsing the expression each
      time we ran it.
      
      I have rewritten the IRInterpreter to be 
      completely independent of the ClangExpressionDeclMap.
      Instead of special-casing external variable lookup,
      which ties the IRInterpreter closely to LLDB,
      we now interpret the exact same IR that the JIT
      would see.  This IR assumes that materialization
      has occurred; hence the recent implementation of the
      Materializer, which does not require parser state
      (in the form of ClangExpressionDeclMap) to be 
      present.
      
      Materialization, interpretation, and dematerialization
      are now all independent of parsing.  This means that
      in theory we can parse expressions once and run them
      many times.  I have three outstanding tasks before
      shutting this down:
      
          - First, I will ensure that all of this works with
            core files.  Core files have a Process but do not
            allow allocating memory, which currently confuses
            materialization.
      
          - Second, I will make expression breakpoint 
            conditions remember their ClangUserExpression and
            re-use it.
      
          - Third, I will tear out all the redundant code
            (for example, materialization logic in
            ClangExpressionDeclMap) that is no longer used.
      
      While implementing this fix, I also found a bug in
      IRForTarget's handling of floating-point constants.  
      This should be fixed.
      
      llvm-svn: 179801
      1582ee68
    • Greg Clayton's avatar
  2. Apr 18, 2013
  3. Apr 17, 2013
    • Ashok Thirumurthi's avatar
      Fix for regression in TestCPPStaticMethods.py due to refactoring in clang. · b32f6bff
      Ashok Thirumurthi authored
      - Specify SC_Static given DIE attributes for static methods and operators.
      
      Thanks to Wei Pan for his review and the help with root-causing.
      
      llvm-svn: 179727
      b32f6bff
    • Daniel Malea's avatar
      Fix build on Linux · ffeb4b60
      Daniel Malea authored
      - add a workaround header to define uuid_t on platforms that need it
      - unbreak remote debugging of mac os x apps
      
      llvm-svn: 179710
      ffeb4b60
    • Daniel Malea's avatar
      Revert 179694 -- it breaks remote debugging of mac os x targets for some folk · f41cfba5
      Daniel Malea authored
      - will commit a different workaround momentarily
      
      llvm-svn: 179705
      f41cfba5
    • Sean Callanan's avatar
      Added a new API to the IRInterpreter (the old API · 14cb2aaa
      Sean Callanan authored
      will be gone soon!) that lets it interpret a function
      using just an llvm::Module, an llvm::Function, and a
      MemoryMap.
      
      Also added an API to IRExecutionUnit to get at its
      llvm::Function, so that the IRInterpreter can work
      with it.
      
      llvm-svn: 179704
      14cb2aaa
    • 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
  4. Apr 16, 2013
Loading