Skip to content
  1. Dec 16, 2010
  2. Dec 14, 2010
    • Greg Clayton's avatar
      Modified LLDB expressions to not have to JIT and run code just to see variable · 8b2fe6dc
      Greg Clayton authored
      values or persistent expression variables. Now if an expression consists of
      a value that is a child of a variable, or of a persistent variable only, we
      will create a value object for it and make a ValueObjectConstResult from it to
      freeze the value (for program variables only, not persistent variables) and
      avoid running JITed code. For everything else we still parse up and JIT code
      and run it in the inferior. 
      
      There was also a lot of clean up in the expression code. I made the 
      ClangExpressionVariables be stored in collections of shared pointers instead
      of in collections of objects. This will help stop a lot of copy constructors on
      these large objects and also cleans up the code considerably. The persistent
      clang expression variables were moved over to the Target to ensure they persist
      across process executions.
      
      Added the ability for lldb_private::Target objects to evaluate expressions.
      We want to evaluate expressions at the target level in case we aren't running
      yet, or we have just completed running. We still want to be able to access the
      persistent expression variables between runs, and also evaluate constant 
      expressions. 
      
      Added extra logging to the dynamic loader plug-in for MacOSX. ModuleList objects
      can now dump their contents with the UUID, arch and full paths being logged with
      appropriate prefix values.
      
      Thread hardened the Communication class a bit by making the connection auto_ptr
      member into a shared pointer member and then making a local copy of the shared
      pointer in each method that uses it to make sure another thread can't nuke the
      connection object while it is being used by another thread.
      
      Added a new file to the lldb/test/load_unload test that causes the test a.out file
      to link to the libd.dylib file all the time. This will allow us to test using
      the DYLD_LIBRARY_PATH environment variable after moving libd.dylib somewhere else.
      
      llvm-svn: 121745
      8b2fe6dc
    • Sean Callanan's avatar
      Bugfixes for the new "self" pointer handling. Specifically, · 9d48e804
      Sean Callanan authored
      the code to pass the _cmd pointer has been improved, and _cmd
      is now set to the value of _cmd for the current context, as
      opposed to being simply NULL.
      
      llvm-svn: 121739
      9d48e804
  3. Dec 13, 2010
    • Sean Callanan's avatar
      Added support for generating expressions that have · 17827830
      Sean Callanan authored
      access to the members of the Objective-C self object.
      
      The approach we take is to generate the method as a
      @category on top of the self object, and to pass the
      "self" pointer to it.  (_cmd is currently NULL.)
      
      Most changes are in ClangExpressionDeclMap, but the
      change that adds support to the ABIs to pass _cmd
      touches a fair amount of code.
      
      llvm-svn: 121722
      17827830
  4. Dec 07, 2010
  5. Dec 06, 2010
  6. Dec 03, 2010
    • Sean Callanan's avatar
      Eliminated a redundant code path. · d6e04ae5
      Sean Callanan authored
      llvm-svn: 120834
      d6e04ae5
    • Sean Callanan's avatar
      Removed a compiler warning. · 4a5fcbb9
      Sean Callanan authored
      llvm-svn: 120788
      4a5fcbb9
    • Sean Callanan's avatar
      Fixed object lifetimes in ClangExpressionDeclMap · 979f74d1
      Sean Callanan authored
      so that it is not referring to potentially stale
      state during IR execution.
      
      This was done by introducing modular state (like
      ClangExpressionVariable) where groups of state
      variables have well-defined lifetimes:
      
      - m_parser_vars are specific to parsing, and only
        exist between calls to WillParse() and DidParse().
      
      - m_struct_vars survive for the entire execution
        of the ClangExpressionDeclMap because they
        provide the template for a materialized set of
        expression variables.
      
      - m_material_vars are specific to a single
        instance of materialization, and only exist
        between calls to Materialize() and
        Dematerialize().
      
      I also removed unnecessary references to long-
      lived state that really didn't need to be referred
      to at all, and also introduced several assert()s
      that helped me diagnose a few bugs (fixed too).
      
      llvm-svn: 120778
      979f74d1
    • Greg Clayton's avatar
      Updated to latest LLVM/Clang for external AST source changes that allow · 38a61403
      Greg Clayton authored
      TagDecl subclasses and Objective C interfaces to complete themselves through
      the ExternalASTSource class.
      
      llvm-svn: 120749
      38a61403
  7. Dec 02, 2010
  8. Dec 01, 2010
  9. Nov 30, 2010
    • Sean Callanan's avatar
      Fixed a problem where m_register_info was not being · f5a99864
      Sean Callanan authored
      copied by the copy constructor for ClangExpressionVariable.
      This meant that a NULL m_register_info wouldn't be
      copied, and instead the field was uninitialized, potentially
      confusing the materializer.
      
      llvm-svn: 120472
      f5a99864
    • Jim Ingham's avatar
      Moved the code in ClangUserExpression that set up & ran the thread plan with... · f48169bb
      Jim Ingham authored
      Moved the code in ClangUserExpression that set up & ran the thread plan with timeouts, and restarting with all threads into a utility function in Process.  This required a bunch of renaming. 
      
      Added a ThreadPlanCallUserExpression that differs from ThreadPlanCallFunction in that it holds onto a shared pointer to its ClangUserExpression so that can't go away before the thread plan is done using it.
      
      Fixed the stop message when you hit a breakpoint while running a user expression so it is more obvious what has happened.
      
      llvm-svn: 120386
      f48169bb
    • Sean Callanan's avatar
      Added a feature where registers can be referred to · 348b5897
      Sean Callanan authored
      using special $-variables from expressions.
      
      (lldb) expr $rip
      
      These variables are available for reading and
      writing.
      
      llvm-svn: 120367
      348b5897
  10. Nov 29, 2010
  11. Nov 20, 2010
  12. Nov 19, 2010
  13. Nov 18, 2010
  14. Nov 17, 2010
    • Jim Ingham's avatar
      Added an "Interrupted" bit to the ProcessEventData. Halt now generates an event · 0d8bcc79
      Jim Ingham authored
      with the Interrupted bit set.  Process::HandlePrivateEvent ignores Interrupted events.
      DoHalt is changed to ensure that the stop even is processed, and an event with
      the Interrupted event is posted.  Finally ClangFunction is rationalized to use this
      facility so the that Halt is handled more deterministically.
      
      llvm-svn: 119453
      0d8bcc79
  15. Nov 16, 2010
  16. Nov 15, 2010
  17. Nov 14, 2010
    • Greg Clayton's avatar
      Just like functions can have a basename and a mangled/demangled name, variable · 83c5cd9d
      Greg Clayton authored
      can too. So now the lldb_private::Variable class has support for this.
      
      Variables now have support for having a basename ("i"), and a mangled name 
      ("_ZN12_GLOBAL__N_11iE"), and a demangled name ("(anonymous namespace)::i").
      
      Nowwhen searching for a variable by name, users might enter the fully qualified
      name, or just the basename. So new test functions were added to the Variable 
      and Mangled classes as:
      
      	bool NameMatches (const ConstString &name);
      	bool NameMatches (const RegularExpression &regex);
      
      I also modified "ClangExpressionDeclMap::FindVariableInScope" to also search
      for global variables that are not in the current file scope by first starting
      with the current module, then moving on to all modules.
      
      Fixed an issue in the DWARF parser that could cause a varaible to get parsed
      more than once. Now, once we have parsed a VariableSP for a DIE, we cache
      the result even if a variable wasn't made so we don't do any re-parsing. Some
      DW_TAG_variable DIEs don't have locations, or are missing vital info that 
      stops a debugger from being able to display anything for it, we parse a NULL
      variable shared pointer for these DIEs so we don't keep trying to reparse it.
      
      llvm-svn: 119085
      83c5cd9d
  18. Nov 13, 2010
    • Greg Clayton's avatar
      Got namespace lookup working and was able to print a complex "this" as an · 580c5dac
      Greg Clayton authored
      expression. This currently takes waaaayyyyy too much time to evaluate. We will
      need to look at the expression parser and find ways to optimize the info we
      provide and get this to evaluate quicker. I believe the performance issue is
      currently related to us always providing a complete C++ class type when asked
      about a C++ class which can cause a lot of information to be pulled since all
      classes will be fully created (methods, base classes, members, all their 
      types). We will need to give the classes back the parser and mark them as 
      having external sources and get parser (Sema) to query us when it needs more
      info. This should bring things up to an acceptable level.
      
      llvm-svn: 118979
      580c5dac
Loading