[all-commits] [llvm/llvm-project] 380e74: [DebugInfo] Fix methods of AsmPrinter to emit valu...

Igor Kudrin via All-commits all-commits at lists.llvm.org
Mon Sep 14 22:24:27 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 380e746bcca87baa5c746854b44d6a5cea6f7bde
      https://github.com/llvm/llvm-project/commit/380e746bcca87baa5c746854b44d6a5cea6f7bde
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/AsmPrinter.h
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
    A llvm/unittests/CodeGen/AsmPrinterDwarfTest.cpp
    M llvm/unittests/CodeGen/CMakeLists.txt
    A llvm/unittests/CodeGen/TestAsmPrinter.cpp
    A llvm/unittests/CodeGen/TestAsmPrinter.h

  Log Message:
  -----------
  [DebugInfo] Fix methods of AsmPrinter to emit values corresponding to the DWARF format (1/19).

These methods are used to emit values which are 32-bit in DWARF32 and
64-bit in DWARF64. The patch fixes them so that they choose the length
automatically, depending on the DWARF format set in the Context.

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


  Commit: a8058c6f8d1d3a360986f05b74f548995b384fcd
      https://github.com/llvm/llvm-project/commit/a8058c6f8d1d3a360986f05b74f548995b384fcd
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DIE.cpp
    M llvm/unittests/CodeGen/CMakeLists.txt
    A llvm/unittests/CodeGen/DIETest.cpp

  Log Message:
  -----------
  [DebugInfo] Fix DIE value emitters to be compatible with DWARF64 (2/19).

DW_FORM_sec_offset and DW_FORM_strp imply values of different sizes with
DWARF32 and DWARF64. The patch fixes DIE value classes to use correct
sizes when emitting their values. For DIELocList it ensures that the
requested DWARF form matches the current DWARF format because that class
uses a method that selects the size automatically.

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


  Commit: c3c501f5d79130fe9bbe4f6ca689f2d83f92373e
      https://github.com/llvm/llvm-project/commit/c3c501f5d79130fe9bbe4f6ca689f2d83f92373e
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/AsmPrinter.h
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
    M llvm/unittests/CodeGen/AsmPrinterDwarfTest.cpp

  Log Message:
  -----------
  [DebugInfo] Add new emitting methods for values which depend on the DWARF format (3/19).

These methods are going to be used in subsequent patches.

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


  Commit: 982b31fad2983eef08dbbddb2d58c635bdf6cf08
      https://github.com/llvm/llvm-project/commit/982b31fad2983eef08dbbddb2d58c635bdf6cf08
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    A llvm/test/DebugInfo/X86/debug-frame-dwarf64.ll
    A llvm/test/DebugInfo/X86/debug-line-dwarf64.ll
    A llvm/test/DebugInfo/X86/dwarf64-support.ll

  Log Message:
  -----------
  [DebugInfo] Add the -dwarf64 switch to llc and other internal tools (4/19).

The patch adds a switch to enable emitting debug info in the 64-bit
DWARF format. Most emitter for sections will be updated in the subsequent
patches, whereas for .debug_line and .debug_frame the emitters are in
the MC library, which is already updated.

For now, the switch is enabled only for 64-bit ELF targets.

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


  Commit: 5dd1c59188988a030dfc80bd20729534f3a41b46
      https://github.com/llvm/llvm-project/commit/5dd1c59188988a030dfc80bd20729534f3a41b46
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DIE.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfFile.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h
    A llvm/test/DebugInfo/X86/debug-info-dwarf64.ll
    M llvm/unittests/CodeGen/DIETest.cpp

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 compilation units (5/19).

The patch also adds a method to choose an appropriate DWARF form
to represent section offsets according to the version and the format
of producing debug info.

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


  Commit: cae7c1eb781d591aa3d16ec6bc3a8fe1ace6e4ef
      https://github.com/llvm/llvm-project/commit/cae7c1eb781d591aa3d16ec6bc3a8fe1ace6e4ef
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DIE.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    M llvm/unittests/CodeGen/DIETest.cpp

  Log Message:
  -----------
  [DebugInfo] Use a common method to determine a suitable form for section offsts (6/19).

This is mostly an NFC patch because the involved methods are used when
emitting DWO files, which is incompatible with DWARFv3, or for platforms
where DWARF64 is not supported yet.

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


  Commit: 26f1f18831342e9c5e137e68d067d7383d72f30d
      https://github.com/llvm/llvm-project/commit/26f1f18831342e9c5e137e68d067d7383d72f30d
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
    M llvm/test/DebugInfo/X86/DW_AT_location-reference.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting the DW_AT_location attribute for 64-bit DWARFv3 (7/19).

The patch uses a common method to determine the appropriate form for
the value of the attribute.

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


  Commit: 383d34c077ae7f845bf751936f59f12598e60b3e
      https://github.com/llvm/llvm-project/commit/383d34c077ae7f845bf751936f59f12598e60b3e
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
    A llvm/test/DebugInfo/X86/debug-str-offsets-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_str_offsets sections (8/19).

The patch fixes calculating the size of the table and emitting the unit
length field.

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


  Commit: 924dc5807690f9ee0a84e407e8cb943511845bf5
      https://github.com/llvm/llvm-project/commit/924dc5807690f9ee0a84e407e8cb943511845bf5
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    A llvm/test/DebugInfo/X86/debug-info-dwo-dwarf64.ll
    A llvm/test/DebugInfo/X86/debug-str-offsets-dwo-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 DWO compilation units and string offset tables (9/19).

These two fixes are better to go together because llvm-dwarfdump is
unable to dump a table when another one is malformed.

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


  Commit: 18f23b3ecc6d0cec31c655b7ae9054cf0edf630e
      https://github.com/llvm/llvm-project/commit/18f23b3ecc6d0cec31c655b7ae9054cf0edf630e
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h
    A llvm/test/DebugInfo/X86/debug-types-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 type units (10/19).

The patch fixes emitting the offset to the type DIE. All other fields
are already fixed in previous patches.

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


  Commit: b118030f3fa68b308d149d7d4303e0623ead0463
      https://github.com/llvm/llvm-project/commit/b118030f3fa68b308d149d7d4303e0623ead0463
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    A llvm/test/DebugInfo/X86/debug-aranges-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_aranges sections (11/19).

The patch fixes calculating the size of the table and emitting
the fields which depend on the DWARF format by using methods that
choose appropriate sizes automatically.

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


  Commit: 03b09c6b68bbce80bea47db40ad85809d363b260
      https://github.com/llvm/llvm-project/commit/03b09c6b68bbce80bea47db40ad85809d363b260
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    A llvm/test/DebugInfo/X86/debug-pubtables-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting pre-v5 name lookup tables in the DWARF64 format (12/19).

The transition is done by using methods of AsmPrinter which
automatically emit values in compliance with the selected DWARF format.

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


  Commit: f9b242fe24f764166f818b3260c0635fc0bef6e9
      https://github.com/llvm/llvm-project/commit/f9b242fe24f764166f818b3260c0635fc0bef6e9
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    M llvm/test/DebugInfo/X86/split-dwarf-v5-ranges.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_rnglists sections (13/19).

The size of the offsets in the table depends on the DWARF format.

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


  Commit: 3158d3dd4b7e5c6e2aff7c81355757d26579f1a3
      https://github.com/llvm/llvm-project/commit/3158d3dd4b7e5c6e2aff7c81355757d26579f1a3
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    M llvm/test/CodeGen/X86/debug-loclists-lto.ll
    M llvm/test/CodeGen/X86/debug-loclists.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_loclists sections (14/19).

The size of the offsets in the table depends on the DWARF format.

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


  Commit: 00ce54689d30fd65c49ebc87a21841e834f2d086
      https://github.com/llvm/llvm-project/commit/00ce54689d30fd65c49ebc87a21841e834f2d086
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/AddressPool.cpp
    A llvm/test/DebugInfo/X86/debug-addr-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_addr sections (15/19).

The patch fixes emitting the header of the table. The content is
independent of the DWARF format.

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


  Commit: a93dd26d8ced81d7d2e9a239a4cc33aaf0ba7c89
      https://github.com/llvm/llvm-project/commit/a93dd26d8ced81d7d2e9a239a4cc33aaf0ba7c89
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp
    A llvm/test/DebugInfo/X86/debug-names-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_names sections (16/19).

The patch fixes emitting the unit length field in the header of
the table and offsets to the entry pool. Note that while the patch
changes the common method to emit offsets, in fact, nothing is changed
for Apple accelerator tables, because we do not yet support DWARF64 for
those targets.

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


  Commit: 7e1e4e81cbcac6156005a31d90b604714c92298c
      https://github.com/llvm/llvm-project/commit/7e1e4e81cbcac6156005a31d90b604714c92298c
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    A llvm/test/DebugInfo/X86/debug-macro-dwarf64.ll

  Log Message:
  -----------
  [DebugInfo] Fix emitting DWARF64 .debug_macro[.dwo] sections (17/19).

The patch fixes emitting flags and the debug_line_offset field in
the header, as well as the reference to the macro string for
a pre-standard GNU .debug_macro extension.

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


  Commit: 8c19ac23bdefceaaf119add8d693e89a6f7d3d81
      https://github.com/llvm/llvm-project/commit/8c19ac23bdefceaaf119add8d693e89a6f7d3d81
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/DwarfStringPoolEntry.h
    M llvm/include/llvm/CodeGen/NonRelocatableStringpool.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h

  Log Message:
  -----------
  [DebugInfo] Make the offset of string pool entries 64-bit (18/19).

The string pool is shared among several units in the case of LTO,
and it potentially can exceed the limit of 4GiB for an extremely
large application. As it is now possible to emit 64-bit debugging
info, the limitation can be removed.

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


  Commit: a845ebd6333d95d58bd6ab18c6ff8bb79686c664
      https://github.com/llvm/llvm-project/commit/a845ebd6333d95d58bd6ab18c6ff8bb79686c664
  Author: Igor Kudrin <ikudrin at accesssoftek.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/DIE.h
    M llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp
    M llvm/lib/CodeGen/AsmPrinter/DIE.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfFile.cpp
    M llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp

  Log Message:
  -----------
  [DebugInfo] Make offsets of dwarf units 64-bit (19/19).

In the case of LTO, several DWARF units can be emitted in one section.
For an extremely large application, they may exceed the limit of 4GiB
for 32-bit offsets. As it is now possible to emit 64-bit debugging info,
the patch enables storing the larger offsets.

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


Compare: https://github.com/llvm/llvm-project/compare/2c12b056bece...a845ebd6333d


More information about the All-commits mailing list