Skip to content
  1. Jan 10, 2017
  2. Dec 14, 2016
  3. Dec 13, 2016
  4. Nov 15, 2016
    • NAKAMURA Takumi's avatar
      5d45e11a
    • Greg Clayton's avatar
      Improve DWARF parsing speed by improving DWARFAbbreviationDeclaration · b07cdeae
      Greg Clayton authored
      This patch gets a DWARF parsing speed improvement by having DWARFAbbreviationDeclaration instances know if they have a fixed byte size. If an abbreviation has a fixed byte size that can be calculated given a DWARFUnit, then parsing a DIE becomes two steps: parse ULEB128 abbrev code, and then add constant size to the offset.
      
      This patch also adds a fixed byte size to each DWARFAbbreviationDeclaration::AttributeSpec so that attributes can quickly skip their values if needed without the need to lookup the fixed for size.
      
      Notable improvements:
      
      - DWARFAbbreviationDeclaration::findAttributeIndex() now returns an Optional<uint32_t> instead of a uint32_t and we no longer have to look for the magic -1U return value
      - Optional<uint32_t> DWARFAbbreviationDeclaration::findAttributeIndex(dwarf::Attribute attr) const;
      - DWARFAbbreviationDeclaration now has a getAttributeValue() function that extracts an attribute value given a DIE offset that takes advantage of the DWARFAbbreviationDeclaration::AttributeSpec::ByteSize
      - bool DWARFAbbreviationDeclaration::getAttributeValue(const uint32_t DIEOffset, const dwarf::Attribute Attr, const DWARFUnit &U, DWARFFormValue &FormValue) const;
      - A DWARFAbbreviationDeclaration instance can return a fixed byte size for itself so DWARF parsing is faster:
      - Optional<size_t> DWARFAbbreviationDeclaration::getFixedAttributesByteSize(const DWARFUnit &U) const;
      - Any functions that used to take a "const DWARFUnit *U" that would crash if U was NULL now take a "const DWARFUnit &U" and are only called with a valid DWARFUnit
      
      Differential Revision: https://reviews.llvm.org/D26567
      
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286924 91177308-0d34-0410-b5e6-96231b3b80d8
      b07cdeae
  5. Oct 27, 2016
  6. Jun 23, 2015
  7. Jun 19, 2015
  8. Mar 04, 2015
  9. Jan 30, 2015
  10. Dec 19, 2014
  11. Aug 13, 2014
  12. Mar 14, 2014
  13. Mar 13, 2014
  14. Oct 31, 2013
  15. Dec 19, 2012
  16. Sep 13, 2011
    • Benjamin Kramer's avatar
      Sketch out a DWARF parser. · 72c0d7fd
      Benjamin Kramer authored
      This introduces a new library to LLVM: libDebugInfo. It will provide debug information
      parsing to LLVM. Much of the design and some of the code is taken from the LLDB project.
      
      It also contains an llvm-dwarfdump tool that can dump the abbrevs and DIEs from an
      object file. It can be used to write tests for DWARF input and output easily.
      
      git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139627 91177308-0d34-0410-b5e6-96231b3b80d8
      72c0d7fd