Skip to content
  1. 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
    • Greg Clayton's avatar
      Fixed an issue where we were trying to resolve lldb_private::Type encoding · 32d2a483
      Greg Clayton authored
      types to their full definitions more than we needed to. This caused an assertion
      in the DWARF parser to fire -- which is an indication that we are parsing too much.
      
      llvm-svn: 119020
      32d2a483
    • Greg Clayton's avatar
      Fixed a crasher (an assert was firing in the DWARF parser) when setting · d7e05469
      Greg Clayton authored
      breakpoints on inlined functions by name. This involved fixing the DWARF parser
      to correctly back up and parse the concrete function when we find inlined
      functions by name, then grabbing any appropriate inlined blocks and returning
      symbol contexts with the block filled in. After this was fixed, the breakpoint
      by name resolver needed to correctly deal with symbol contexts that had the
      inlined block filled in in the symbol contexts.
      
      llvm-svn: 119017
      d7e05469
  2. Nov 13, 2010
    • Greg Clayton's avatar
      Fixed an issue where we might not find global variables by name when we have · ba2d22d8
      Greg Clayton authored
      a debug map with DWARF in the .o files due to the attemted shortcut that was
      being taken where the global variables were being searched for by looking in
      the symbol table. The problem with the symbols in the symbol table is we don't
      break apart the symbol names for symbols when they are mangled into basename
      and the fully mangled name since this would take a lot of CPU time to chop up
      the mangled names and try and find the basenames. The DWARF info typically has
      this broken up for us where the basename of the variable is in a the DW_AT_name
      attribute, and the mangled name is in the DW_AT_MIPS_linkage_name attribute.
      Now we correctly find globals by searching all OSO's for the information so we
      can take advantage of this split information. 
      
      llvm-svn: 119012
      ba2d22d8
    • 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
    • Greg Clayton's avatar
      Modified the lldb_private::Type clang type resolving code to handle three · 526e5afb
      Greg Clayton authored
      cases when getting the clang type:
      - need only a forward declaration
      - need a clang type that can be used for layout (members and args/return types)
      - need a full clang type
      
      This allows us to partially parse the clang types and be as lazy as possible.
      The first case is when we just need to declare a type and we will complete it
      later. The forward declaration happens only for class/union/structs and enums.
      The layout type allows us to resolve the full clang type _except_ if we have
      any modifiers on a pointer or reference (both R and L value). In this case
      when we are adding members or function args or return types, we only need to
      know how the type will be laid out and we can defer completing the pointee
      type until we later need it. The last type means we need a full definition for
      the clang type.
      
      Did some renaming of some enumerations to get rid of the old "DC" prefix (which
      stands for DebugCore which is no longer around).
      
      Modified the clang namespace support to be almost ready to be fed to the
      expression parser. I made a new ClangNamespaceDecl class that can carry around
      the AST and the namespace decl so we can copy it into the expression AST. I
      modified the symbol vendor and symbol file plug-ins to use this new class.
      
      llvm-svn: 118976
      526e5afb
  3. Nov 12, 2010
    • Jason Molenda's avatar
      I'm not thrilled with how I structured this but RegisterContextLLDB · cabd1b71
      Jason Molenda authored
      needs to use the current pc and current offset in two ways:  To 
      determine which function we are currently executing, and the decide
      how much of that function has executed so far.  For the former use,
      we need to back up the saved pc value by one byte if we're going to
      use the correct function's unwind information -- we may be executing
      a CALL instruction at the end of a function and the following instruction
      belongs to a new function, or we may be looking at unwind information
      which only covers the call instruction and not the subsequent instruction.
      
      But when we're talking about deciding which row of an UnwindPlan to
      execute, we want to use the actual byte offset in the function, not the
      byte offset - 1.
      
      Right now RegisterContextLLDB is tracking both the "real" offset and
      an "offset minus one" and different parts of the class have to know 
      which one to use and they need to be updated/set in tandem.  I want
      to revisit this at some point.
      
      The second change made in looking up eh_frame information; it was
      formerly done by looking for the start address of the function we
      are currently executing.  But it is possible to have unwind information
      for a function which only covers a small section of the function's
      address range.  In which case looking up by the start pc value may not
      find the eh_frame FDE.
      
      The hand-written _sigtramp() unwind info on Mac OS X, which covers
      exactly one instruction in the middle of the function, happens to
      trigger both of these issues.
      
      I still need to get the UnwindPlan runner to handle arbitrary dwarf
      expressions in the FDE but there's a good chance it will be easy to
      reuse the DWARFExpression class to do this.
      
      llvm-svn: 118882
      cabd1b71
    • Sean Callanan's avatar
      Added a thread plan tracer that prints lines of · 8c9e5383
      Sean Callanan authored
      assembly as well as registers that changed.
      
      llvm-svn: 118879
      8c9e5383
    • Sean Callanan's avatar
      Temporary extension of the timeout for Objective-C · c126acc1
      Sean Callanan authored
      object diagnostic expressions while we work on the
      logic for handling the timeout.
      
      llvm-svn: 118873
      c126acc1
    • Sean Callanan's avatar
      Removed redundant code for object introspection. · 6f86aa63
      Sean Callanan authored
      llvm-svn: 118872
      6f86aa63
    • Sean Callanan's avatar
      Excised a version of the low-level function calling · 36695cde
      Sean Callanan authored
      logic that supported calling functions with arbitrary
      arguments.  We use ClangFunction for this, and the
      low-level logic is only required to support one or two
      pointer arguments.
      
      llvm-svn: 118871
      36695cde
  4. Nov 11, 2010
  5. Nov 10, 2010
  6. Nov 09, 2010
    • Sean Callanan's avatar
      Added a named container for the source QualType · 0617fcb1
      Sean Callanan authored
      in the type copy routine to make type problems
      easier to debug.
      
      llvm-svn: 118638
      0617fcb1
    • Greg Clayton's avatar
      Fixed an issue in the DWARF parser that was causing forward declarations · c615ce49
      Greg Clayton authored
      to not get resolved.
      
      Fixed the "void **isa_ptr" variable inside the objective C verifier to start
      with a '$' character so we don't go looking for it in our program.
      
      Moved the lookup for "$__lldb_class" into the part that knows we are looking
      for internal types that start with a '$'.
      
      llvm-svn: 118488
      c615ce49
    • Jason Molenda's avatar
      Implement RegisterContext::WriteRegisterBytes in RegisterContextLLDB. · b4f65501
      Jason Molenda authored
      I only did a tiny bit of testing; in the one case I tried changing the
      contents of a radar in the middle of a stack and it was still current in
      the live register context so it filtered down to frame 0 and was handed
      over to the live register set RegisterContext.  I need to test a case
      where a register is saved on the stack in memory before I check this
      one off.
      
      llvm-svn: 118486
      b4f65501
    • Jason Molenda's avatar
      Refactor UnwindLLDB so it doesn't populate the entire stack unless · 8fed295c
      Jason Molenda authored
      the frame count is requested or each frame is individually requested.
      
      In practice this doesn't seem to help anything because we have
      functions like StackFrameList::GetNumFrames() which is going to
      request each frame anyway.  And classes like ThreadPlanStepRange
      and ThreadPlanStepOverRange get the stack depth in their ctor forcing
      a full stack walk.  But at least UnwindLLDB will delay doing a full
      walk if it can.
      
      llvm-svn: 118477
      8fed295c
    • Jason Molenda's avatar
      Fix thinko in UnwindTable.cpp where it wouldn't provde a · 45b49245
      Jason Molenda authored
      FuncUnwinders object if the eh_frame section was missing
      from an objfile.  Worked fine on x86_64 but on i386 where
      eh_frame is unusual, that resulted in the arch default 
      UnwindPlan being used all the time instead of picking up
      an assembly profile based unwindplan.
      
      llvm-svn: 118467
      45b49245
  7. Nov 08, 2010
  8. Nov 07, 2010
    • Greg Clayton's avatar
      Modified the DWARF parser for both the single DWARF file and for the case · 2ccf8cfc
      Greg Clayton authored
      where the DWARF is in the .o files so they can track down the actual type for
      a forward declaration. This was working before for just DWARF files, but not
      for DWARF in .o files where the actual definition was in another .o file.
      
      Modified the main thread name in the driver to be more consistent with the
      other LLDB thread names.
      
      llvm-svn: 118383
      2ccf8cfc
  9. Nov 06, 2010
Loading