[all-commits] [llvm/llvm-project] f76a0c: [DebugInfo] Fix a misleading usage of DWARF forms ...

Igor Kudrin via All-commits all-commits at lists.llvm.org
Thu Jul 16 23:50:35 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f76a0cd97aa2ee52dd7e0fccb0a6a33d3af2af77
      https://github.com/llvm/llvm-project/commit/f76a0cd97aa2ee52dd7e0fccb0a6a33d3af2af77
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-07-17 (Fri, 17 Jul 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DIE.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp

  Log Message:
  -----------
  [DebugInfo] Fix a misleading usage of DWARF forms with DIEExpr. NFCI.

For now, DIEExpr is used only in two places:

 1) in the debug info library unit test suite to emit
    a DW_AT_str_offsets_base attribute with the DW_FORM_sec_offset
    form, see dwarfgen::DIE::addStrOffsetsBaseAttribute();

 2) in DwarfCompileUnit::addLocationAttribute() to generate the location
    attribute for a TLS variable.

The later case used an incorrect DWARF form of DW_FORM_udata, which
implies storing an uleb128 value, not a 4/8 byte constant. The generated
result was as expected because DIEExpr::SizeOf() did not handle the used
form, but returned the size of the code pointer by default.

The patch fixes the issue by using more appropriate DWARF forms for
the problematic case and making DIEExpr::SizeOf() more straightforward.

Differential Revision: https://reviews.llvm.org/D83958




More information about the All-commits mailing list