Skip to content
  1. Mar 30, 2012
  2. Mar 29, 2012
    • Greg Clayton's avatar
      843d62d1
    • Greg Clayton's avatar
      <rdar://problem/10103468> · 12b834d6
      Greg Clayton authored
      Symbol files (dSYM files on darwin) can now be specified during program execution:
      
      (lldb) target symbols add /path/to/symfile/a.out.dSYM/Contents/Resources/DWARF/a.out
      
      This command can be used when you have a debug session in progress and want to add symbols to get better debug info fidelity.
      
      llvm-svn: 153693
      12b834d6
    • Greg Clayton's avatar
      <rdar://problem/11149427> · 322654a7
      Greg Clayton authored
      Line tables when using DWARF in .o files can be wrong when two entries get moved around by the compiler. This was due to incorrect logic in the line entry comparison operator.
      
      llvm-svn: 153685
      322654a7
    • Johnny Chen's avatar
      55d85f3b
    • Enrico Granata's avatar
      Part 1 of a series of fixes meant to improve reliability and increase ease of... · d50f18b1
      Enrico Granata authored
      Part 1 of a series of fixes meant to improve reliability and increase ease of bug fixing for data formatter issues.
      We are introducing a new Logger class on the Python side. This has the same purpose, but is unrelated, to the C++ logging facility
      The Pythonic logging can be enabled by using the following scripting commands:
      (lldb) script Logger._lldb_formatters_debug_level = {0,1,2,...}
      0 = no logging
      1 = do log
      2 = flush after logging each line - slower but safer
      3 or more = each time a Logger is constructed, log the function that has created it
      more log levels may be added, each one being more log-active than the previous
      by default, the log output will come out on your screen, to direct it to a file:
      (lldb) script Logger._lldb_formatters_debug_filename = 'filename'
      that will make the output go to the file - set to None to disable the file output and get screen logging back
      Logging has been enabled for the C++ STL formatters and for Cocoa class NSData - more logging will follow
      
      
      synthetic children providers for classes list and map (both libstdcpp and libcxx) now have internal capping for safety reasons
      this will fix crashers where a malformed list or map would not ever meet our termination conditions
      
      to set the cap to a different value:
      
      (lldb) script {gnu_libstdcpp|libcxx}.{map|list}_capping_size = new_cap (by default, it is 255)
      
      you can optionally disable the loop detection algorithm for lists
      
      (lldb) script {gnu_libstdcpp|libcxx}.list_uses_loop_detector = False
      
      llvm-svn: 153676
      d50f18b1
    • Sean Callanan's avatar
      Added support for the DW_AT_APPLE_Property tag · 751aac61
      Sean Callanan authored
      for unbacked properties.  We support two variants:
      one in which the getter/setter are provided by
      selector ("mySetter:") and one in which the
      getter/setter are provided by signature 
      ("-[MyClass mySetter:]").
      
      llvm-svn: 153675
      751aac61
    • Greg Clayton's avatar
      Missed a file in the last FreeBSD patch. · 45cffd49
      Greg Clayton authored
      llvm-svn: 153662
      45cffd49
    • Greg Clayton's avatar
      59b4fa18
    • Sean Callanan's avatar
      e41438ca
    • Greg Clayton's avatar
      <rdar://problem/11052174> · 2687cd11
      Greg Clayton authored
      <rdar://problem/11051056>
      
      Found a race condition when sending async packets in the ProcessGDBRemote.
      
      A little background: GDB remote clients can only send one packet at a time. You must send a packet and wait for a response. So when we continue, we obviously can't hold up the calling thread waiting for the process to stop again, so we have an async thread in the ProcessGDBRemote whose only job is to run packets that control the inferior process. When you send a continue packet, the only packet you can send is an interrupt packet (which consists of sending a CTRL+C (or a '\x03' byte)). This then stops the inferior and we can send the async packet, and then resume the target. There was a race condition that often happened during stepping where we are doing a source level single step which consists of many instruction steps and a few runs here and there when we step into a function. So the flow looks like:
      
      inst single step
      inst single step
      inst single step
      inst single step
      inst single step
      step BP and run
      inst single step
      inst single step
      inst single step
      
      Now if we got an async packet while the program is running we get something like:
      
      send --> continue
      send --> interrupt
      recv <-- interrupt stop reply packet
      send --> async packet
      recv <-- async response
      send --> continue again and wait for actual stop
      
      Problems arise when this was happening when single stepping a thread where we would get:
      
      send --> step thread 123
      send --> interrupt
      send --> stop reply for thread 123 (from the step)
      
      Now we _might_ have an extra stop reply packet from the "interrupt" which we weren't checking for and we could end up with:
      
      send --> async packet (like memory read!)
      recv <-- async response (which is the interrupt stop reply packet)
      
      Now we have the read memroy reply sitting in our buffer and waiting to be used as the reply for the next packet... 
      
      To further complicate things, the single step should have exited the async thread since the run control is finished, but now it will continue if it was interrupted.
      
      The fixes I checked in to two major things:
      - watch for the extra stop reply if we need to
      - make sure we exit from the async thread run loop when the previous run control (like the instruction level single step) is finished.
      
      Needless to say this makes very fast stepping in Xcode much more reliable.
      
      llvm-svn: 153629
      2687cd11
    • Greg Clayton's avatar
      <rdar://problem/11035349> · 39d0ab32
      Greg Clayton authored
      Fixed an issue with stepping where the stack frame list could get changed out from underneath you when multiple threads start accessing frame info.
      
      llvm-svn: 153627
      39d0ab32
    • Greg Clayton's avatar
      When running this from the command line, don't pass the python script file... · 6ca75a00
      Greg Clayton authored
      When running this from the command line, don't pass the python script file itself to be disassembled.
      
      llvm-svn: 153626
      6ca75a00
    • Greg Clayton's avatar
      Removed unused variable. · d761d427
      Greg Clayton authored
      llvm-svn: 153625
      d761d427
    • Enrico Granata's avatar
      Fixing an issue where Unicode characters in an NSString were printed as escape... · 86ea8d82
      Enrico Granata authored
      Fixing an issue where Unicode characters in an NSString were printed as escape sequences by the summary provider shipping with LLDB - Added relevant test case code. Bonus points for identifying the source of the quotes :-)
      
      llvm-svn: 153624
      86ea8d82
    • Enrico Granata's avatar
      Fixing an issue where saying 'po foo' made both the summary and the... · 770eb05a
      Enrico Granata authored
      Fixing an issue where saying 'po foo' made both the summary and the description for foo come out. If one is po'ing something they most probably only care about the description - We will not omit the summary
      
      llvm-svn: 153608
      770eb05a
  3. Mar 28, 2012
  4. Mar 27, 2012
    • Enrico Granata's avatar
      adding a summary for Objective-C type 'Class' · bf70ee97
      Enrico Granata authored
      llvm-svn: 153541
      bf70ee97
    • Johnny Chen's avatar
      Commented out printf's for the time being. · f216c7df
      Johnny Chen authored
      llvm-svn: 153540
      f216c7df
    • Greg Clayton's avatar
      lldb_private::Section objects have a boolean flag that can be set that · 741f3f9a
      Greg Clayton authored
      indicates that the section is thread specific. Any functions the load a module
      given a slide, will currently ignore any sections that are thread specific.
      
      lldb_private::Section now has:
      
      bool
      Section::IsThreadSpecific () const
      {
          return m_thread_specific;
      }
      
      void
      Section::SetIsThreadSpecific (bool b)
      {
          m_thread_specific = b;
      }
      
      The ELF plug-in has been modified to set this for the ".tdata" and the ".tbss"
      sections.
      
      Eventually we need to have each lldb_private::Thread subclass be able to 
      resolve a thread specific section, but for now they will just not resolve. The
      code for that should be trivual to add, but the address resolving functions
      will need to be changed to take a "ExecutionContext" object instead of just
      a target so that thread specific sections can be resolved.
      
      llvm-svn: 153537
      741f3f9a
    • Greg Clayton's avatar
      Fixed a few things in the ELF object file: · 47037bc4
      Greg Clayton authored
      1 - sections only get a valid VM size if they have SHF_ALLOC in the section flags
      2 - symbol names are marked as mangled if they start with "_Z"
      
      Also fixed the DWARF parser to correctly use the section file size when extracting the DWARF.
      
      llvm-svn: 153496
      47037bc4
    • Enrico Granata's avatar
      Synthetic values are now automatically enabled and active by default. SBValue... · c5bc412c
      Enrico Granata authored
      Synthetic values are now automatically enabled and active by default. SBValue is set up to always wrap a synthetic value when one is available.
      A new setting enable-synthetic-value is provided on the target to disable this behavior.
      There also is a new GetNonSyntheticValue() API call on SBValue to go back from synthetic to non-synthetic. There is no call to go from non-synthetic to synthetic.
      The test suite has been changed accordingly.
      Fallout from changes to type searching: an hack has to be played to make it possible to use maps that contain std::string due to the special name replacement operated by clang
      Fixing a test case that was using libstdcpp instead of libc++ - caught as a consequence of said changes to type searching
      
      llvm-svn: 153495
      c5bc412c
    • Greg Clayton's avatar
      <rdar://problem/11113279> · 84db9105
      Greg Clayton authored
      Fixed type lookups to "do the right thing". Prior to this fix, looking up a type using "foo::bar" would result in a type list that contains all types that had "bar" as a basename unless the symbol file was able to match fully qualified names (which our DWARF parser does not). 
      
      This fix will allow type matches to be made based on the basename and then have the types that don't match filtered out. Types by name can be fully qualified, or partially qualified with the new "bool exact_match" parameter to the Module::FindTypes() method.
      
      This fixes some issue that we discovered with dynamic type resolution as well as improves the overall type lookups in LLDB.
      
      llvm-svn: 153482
      84db9105
    • Johnny Chen's avatar
      If creation of watchpoint failed on the device, make sure the list maintained... · 41b77265
      Johnny Chen authored
      If creation of watchpoint failed on the device, make sure the list maintained by the target reflects that by cleaning it up.
      
      llvm-svn: 153477
      41b77265
  5. Mar 26, 2012
    • Sean Callanan's avatar
      <rdar://problem/11022964> · 91e1080b
      Sean Callanan authored
      Patched LLVM to handle generic i386 relocations.
      This avoids some sudden termination problems on
      i386 where the JIT would exit() out reporting
      "Invalid CPU type!"
      
      llvm-svn: 153467
      91e1080b
  6. Mar 25, 2012
  7. Mar 24, 2012
  8. Mar 23, 2012
Loading