Skip to content
  1. Nov 16, 2011
  2. Nov 15, 2011
    • Johnny Chen's avatar
      Fix objc runtime warnings from the inferior program. · f031bb19
      Johnny Chen authored
      llvm-svn: 144717
      f031bb19
    • Johnny Chen's avatar
    • Johnny Chen's avatar
      File renaming. · b0571965
      Johnny Chen authored
      llvm-svn: 144693
      b0571965
    • Sean Callanan's avatar
      Pulled in a new version of LLVM/Clang to solve a variety · d5c17edb
      Sean Callanan authored
      of problems with Objective-C object completion.  To go
      along with the LLVM/Clang-side fixes, we have a variety
      of Objective-C improvements.
      
      Fixes include:
      
      - It is now possible to run expressions when stopped in
        an Objective-C class method and have "self" act just
        like "self" would act in the class method itself (i.e.,
        [self classMethod] works without casting the return
        type if debug info is present).  To accomplish this,
        the expression masquerades as a class method added by
        a category.
      
      - Objective-C objects can now provide methods and
        properties and methods to Clang on demand (i.e., the
        ASTImporter sets hasExternalVisibleDecls on Objective-C
        interface objects).
      
      - Objective-C built-in types, which had long been a bone
        of contention (should we be using "id"?  "id*"?), are
        now fetched correctly using accessor functions on
        ClangASTContext.  We inhibit searches for them in the
        debug information.
      
      There are also a variety of logging fixes, and I made two
      changes to the test suite:
      
      - Enabled a test case for Objective-C properties in the
        current translation unit.
      
      - Added a test case for calling Objective-C class methods
        when stopped in a class method.
      
      llvm-svn: 144607
      d5c17edb
    • Johnny Chen's avatar
      Add bench entries. · 8bb27b23
      Johnny Chen authored
      llvm-svn: 144584
      8bb27b23
  3. Nov 14, 2011
  4. Nov 13, 2011
    • Greg Clayton's avatar
      <rdar://problem/10338439> · 2fc93eab
      Greg Clayton authored
      This is the actual fix for the above radar where global variables that weren't
      initialized were not being shown correctly when leaving the DWARF in the .o 
      files. Global variables that aren't intialized have symbols in the .o files
      that specify they are undefined and external to the .o file, yet document the
      size of the variable. This allows the compiler to emit a single copy, but makes
      it harder for our DWARF in .o files with the executable having a debug map
      because the symbol for the global in the .o file doesn't exist in a section
      that we can assign a fixed up linked address to, and also the DWARF contains
      an invalid address in the "DW_OP_addr" location (always zero). This means that
      the DWARF is incorrect and actually maps all such global varaibles to the
      first file address in the .o file which is usually the first function. So we
      can fix this in either of two ways: make a new fake section in the .o file
      so that we have a file address in the .o file that we can relink, or fix the 
      the variable as it is created in the .o file DWARF parser and actually give it
      the file address from the executable. Each variable contains a 
      SymbolContextScope, or a single pointer that helps us to recreate where the
      variables came from (which module, file, function, etc). This context helps
      us to resolve any file addresses that might be in the location description of
      the variable by pointing us to which file the file address comes from, so we
      can just replace the SymbolContextScope and also fix up the location, which we
      would have had to do for the other case as well, and update the file address.
      Now globals display correctly.
      
      The above changes made it possible to determine if a variable is a global
      or static variable when parsing DWARF. The DWARF emits a DW_TAG_variable tag
      for each variable (local, global, or static), yet DWARF provides no way for
      us to classify these variables into these categories. We can now detect when
      a variable has a simple address expressions as its location and this will help
      us classify these correctly.
      
      While making the above changes I also noticed that we had two symbol types:
      eSymbolTypeExtern and eSymbolTypeUndefined which mean essentially the same
      thing: the symbol is not defined in the current object file. Symbol objects
      also have a bit that specifies if a symbol is externally visible, so I got
      rid of the eSymbolTypeExtern symbol type and moved all code locations that
      used it to use the eSymbolTypeUndefined type.
       
      
      llvm-svn: 144489
      2fc93eab
  5. Nov 12, 2011
  6. Nov 08, 2011
  7. Nov 07, 2011
    • Enrico Granata's avatar
      this patch addresses several issues with "command script" subcommands: · 0a305db7
      Enrico Granata authored
       a) adds a new --synchronicity (-s) setting for "command script add" that allows the user to decide if scripted commands should run synchronously or asynchronously (which can make a difference in how events are handled)
       b) clears up several error messages
       c) adds a new --allow-reload (-r) setting for "command script import" that allows the user to reload a module even if it has already been imported before
       d) allows filename completion for "command script import" (much like what happens for "target create")
       e) prevents "command script add" from replacing built-in commands with scripted commands
       f) changes AddUserCommand() to take an std::string instead of a const char* (for performance reasons)
      plus, it fixes an issue in "type summary add" command handling which caused several test suite errors
      
      llvm-svn: 144035
      0a305db7
  8. Nov 02, 2011
    • Sean Callanan's avatar
      Added functionality to call Objective-C class methods · fc89c142
      Sean Callanan authored
      correctly, and added a testcase to check that it works.
      
      The main problem here is that Objective-C class method
      selectors are external references stored in a special
      data structure in the LLVM IR module for an expression.
      I just had to extract them and ensure that the real
      class object locations were properly resolved.
      
      llvm-svn: 143520
      fc89c142
  9. Nov 01, 2011
  10. Oct 31, 2011
  11. Oct 29, 2011
  12. Oct 28, 2011
  13. Oct 27, 2011
    • Johnny Chen's avatar
      Add bench history entries. · 0071778a
      Johnny Chen authored
      llvm-svn: 143121
      0071778a
    • Johnny Chen's avatar
      Undo r142549 and r142543 which temporarily relax the expected substrings for · ea3a9af8
      Johnny Chen authored
      watchpoint creation output due to wrong debug info from clang.  It has been
      fixed.
      
      llvm-svn: 143118
      ea3a9af8
    • Greg Clayton's avatar
      Added support for the new ".apple_objc" accelerator tables. These tables are · 5009f9d5
      Greg Clayton authored
      in the same hashed format as the ".apple_names", but they map objective C
      class names to all of the methods and class functions. We need to do this 
      because in the DWARF the methods for Objective C are never contained in the
      class definition, they are scattered about at the translation unit level and
      they don't even have attributes that say the are contained within the class
      itself. 
      
      Added 3 new formats which can be used to display data:
      
          eFormatAddressInfo
          eFormatHexFloat
          eFormatInstruction
          
      eFormatAddressInfo describes an address such as function+offset and file+line,
      or symbol + offset, or constant data (c string, 2, 4, 8, or 16 byte constants).
      The format character for this is "A", the long format is "address".
      
      eFormatHexFloat will print out the hex float format that compilers tend to use.
      The format character for this is "X", the long format is "hex float".
      
      eFormatInstruction will print out disassembly with bytes and it will use the
      current target's architecture. The format character for this is "i" (which
      used to be being used for the integer format, but the integer format also has
      "d", so we gave the "i" format to disassembly), the long format is 
      "instruction".
      
      Mate the lldb::FormatterChoiceCriterion enumeration private as it should have
      been from the start. It is very specialized and doesn't belong in the public 
      API.
      
      llvm-svn: 143114
      5009f9d5
    • Johnny Chen's avatar
      09e87a66
    • Johnny Chen's avatar
      Establish a baseline for bench.py score by using a fixed lldb executable as the · 66d362e9
      Johnny Chen authored
      inferior program for the lldb debugger to operate on.  The fixed lldb executable
      corresponds to r142902.
      
      Plus some minor modifications to the test benchmark to conform to way bench.py
      is meant to be invoked.
      
      llvm-svn: 143075
      66d362e9
Loading