[all-commits] [llvm/llvm-project] 5ebd28: [llvm][dwwarf] Change CU/TU index to 64-bit

Alexander Yermolovich via All-commits all-commits at lists.llvm.org
Wed Dec 7 13:09:16 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5ebd28f3e56c00a739fda46c72c9e0f6528add87
      https://github.com/llvm/llvm-project/commit/5ebd28f3e56c00a739fda46c72c9e0f6528add87
  Author: Alexander Yermolovich <ayermolo at fb.com>
  Date:   2022-12-07 (Wed, 07 Dec 2022)

  Changed paths:
    M bolt/lib/Core/DebugData.cpp
    M bolt/lib/Rewrite/DWARFRewriter.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp
    M llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
    M llvm/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
    M llvm/lib/DWP/DWP.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
    M llvm/test/DebugInfo/X86/debug-cu-index-unknown-section.s
    M llvm/test/DebugInfo/X86/dwp-v2-cu-index.s
    M llvm/test/DebugInfo/X86/dwp-v2-tu-index.s
    M llvm/test/DebugInfo/X86/dwp-v5-cu-index.s
    M llvm/test/DebugInfo/X86/dwp-v5-tu-index.s
    M llvm/test/DebugInfo/dwarfdump-dwp.test
    M llvm/test/tools/llvm-dwp/X86/debug_macro_v5.s
    M llvm/test/tools/llvm-dwp/X86/info-v5.s
    M llvm/test/tools/llvm-dwp/X86/loclists.s
    M llvm/test/tools/llvm-dwp/X86/merge.test
    M llvm/test/tools/llvm-dwp/X86/rnglists.s
    M llvm/test/tools/llvm-dwp/X86/simple.test
    M llvm/test/tools/llvm-dwp/X86/tu_units_v5.s
    M llvm/test/tools/llvm-dwp/X86/unknown-section-id.s

  Log Message:
  -----------
  [llvm][dwwarf] Change CU/TU index to 64-bit

Summary:

Changed contribution data structure to 64 bit. I added the 32bit and 64bit
accessors to make it explicit where we use 32bit and where we use 64bit. Also to
make sure sure we catch all the cases where this data structure is used.


  Commit: a5bd76a6e3119af9dd9c1d8af89e2b89f5267deb
      https://github.com/llvm/llvm-project/commit/a5bd76a6e3119af9dd9c1d8af89e2b89f5267deb
  Author: Alexander Yermolovich <ayermolo at fb.com>
  Date:   2022-12-07 (Wed, 07 Dec 2022)

  Changed paths:
    M llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
    M llvm/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
    M llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp
    A llvm/test/tools/llvm-dwp/X86/cu_tu_units_manual_v5.s
    M llvm/test/tools/llvm-dwp/X86/debug_macro_v5.s
    M llvm/test/tools/llvm-dwp/X86/type_dedup.test
    M llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp

  Log Message:
  -----------
  [DWARFLibrary] Add support to re-construct cu-index

Summary:

According to DWARF5 specification and gnu specification for DWARF4 the offset
entry in the CU/TU Index is 32 bits. This presents a problem when
.debug_info.dwo in DWP file grows beyond 4GB. The CU Index becomes partially
corrupted.

This diff adds manual parsing of .debug_info.dwo/.debug_abbrev.dwo to
reconstruct CU index in general, and TU index for DWARF5. This is a work around
until DWARF6 spec is finalized.

Next patch will change internal CU/TU struct to 64 bit, and change uses as
necessary. The plan is to land all the patches in one go after all are approved.

This patch originates from the discussion in: https://discourse.llvm.org/t/dwarf-dwp-4gb-limit/63902

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


  Commit: f7a21317665a623170425f00721bc5c026a968c1
      https://github.com/llvm/llvm-project/commit/f7a21317665a623170425f00721bc5c026a968c1
  Author: Alexander Yermolovich <ayermolo at fb.com>
  Date:   2022-12-07 (Wed, 07 Dec 2022)

  Changed paths:
    M bolt/include/bolt/Core/DebugData.h
    M bolt/lib/Core/DebugData.cpp
    M bolt/lib/Rewrite/DWARFRewriter.cpp
    A bolt/test/X86/dwarf5-shared-str-offset-base.s

  Log Message:
  -----------
  [BOLT][DWARF] Don't create extra .debug_str_offsets contributions

With ThinLTO mutliple CUs can share the same .debug_str_offsets contribution. We
were creating a new one for each CU. This lead to a binary size increase.

Reviewed By: maksfb

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


Compare: https://github.com/llvm/llvm-project/compare/2c52d516dabe...f7a21317665a


More information about the All-commits mailing list