Skip to content
  • Sean Callanan's avatar
    This patch modifies the expression parser to allow it · 3bfdaa2a
    Sean Callanan authored
    to execute expressions even in the absence of a process.
    This allows expressions to run in situations where the
    target cannot run -- e.g., to perform calculations based
    on type information, or to inspect a binary's static
    data.
    
    This modification touches the following files:
    
    lldb-private-enumerations.h
      Introduce a new enum specifying the policy for
      processing an expression.  Some expressions should
      always be JITted, for example if they are functions
      that will be used over and over again.  Some
      expressions should always be interpreted, for
      example if the target is unsafe to run.  For most,
      it is acceptable to JIT them, but interpretation
      is preferable when possible.
    
    Target.[h,cpp]
      Have EvaluateExpression now accept the new enum.
    
    ClangExpressionDeclMap.[cpp,h]
      Add support for the IR interpreter and also make
      the ClangExpressionDeclMap more robust in the 
      absence of a process.
    
    ClangFunction.[cpp,h]
      Add support for the new enum.
    
    IRInterpreter.[cpp,h]
      New implementation.
    
    ClangUserExpression.[cpp,h]
      Add support for the new enum, and for running 
      expressions in the absence of a process.
    
    ClangExpression.h
      Remove references to the old DWARF-based method
      of evaluating expressions, because it has been
      superseded for now.
    
    ClangUtilityFunction.[cpp,h]
      Add support for the new enum.
    
    ClangExpressionParser.[cpp,h]
      Add support for the new enum, remove references
      to DWARF, and add support for checking whether
      the expression could be evaluated statically.
    
    IRForTarget.[h,cpp]
      Add support for the new enum, and add utility
      functions to support the interpreter.
    
    IRToDWARF.cpp
      Removed
    
    CommandObjectExpression.cpp
      Remove references to the obsolete -i option.
    
    Process.cpp 
      Modify calls to ClangUserExpression::Evaluate
      to pass the correct enum (for dlopen/dlclose)
    
    SBValue.cpp
      Add support for the new enum.
    
    SBFrame.cpp
      Add support for he new enum.
    
    BreakpointOptions.cpp
      Add support for the new enum.
    
    llvm-svn: 139772
    3bfdaa2a
Loading