[llvm] r209338 - Revert "DebugInfo: Don't put fission type units in comdat sections."

Hal Finkel hfinkel at anl.gov
Thu May 22 05:12:50 PDT 2014


----- Original Message -----
> From: "David Blaikie" <dblaikie at gmail.com>
> To: llvm-commits at cs.uiuc.edu
> Sent: Wednesday, May 21, 2014 6:27:41 PM
> Subject: [llvm] r209338 - Revert "DebugInfo: Don't put fission type units in	comdat sections."
> 
> Author: dblaikie
> Date: Wed May 21 18:27:41 2014
> New Revision: 209338
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=209338&view=rev
> Log:
> Revert "DebugInfo: Don't put fission type units in comdat sections."
> 
> This reverts commit r208930, r208933, and r208975.
> 
> It seems not all fission consumers are ready to handle this behavior.
> Reverting until tools are brought up to spec.

Can you please be more specific? It would be useful to have a record of the tools on which we're waiting. Adding a FIXME also seems reasonable.

 -Hal

> 
> Modified:
>     llvm/trunk/include/llvm/MC/MCObjectFileInfo.h
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
>     llvm/trunk/lib/MC/MCObjectFileInfo.cpp
>     llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll
> 
> Modified: llvm/trunk/include/llvm/MC/MCObjectFileInfo.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCObjectFileInfo.h?rev=209338&r1=209337&r2=209338&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCObjectFileInfo.h (original)
> +++ llvm/trunk/include/llvm/MC/MCObjectFileInfo.h Wed May 21 18:27:41
> 2014
> @@ -122,7 +122,6 @@ protected:
>  
>    /// These are used for the Fission separate debug information
>    files.
>    const MCSection *DwarfInfoDWOSection;
> -  const MCSection *DwarfTypesDWOSection;
>    const MCSection *DwarfAbbrevDWOSection;
>    const MCSection *DwarfStrDWOSection;
>    const MCSection *DwarfLineDWOSection;
> @@ -271,9 +270,7 @@ public:
>      return DwarfInfoDWOSection;
>    }
>    const MCSection *getDwarfTypesSection(uint64_t Hash) const;
> -  const MCSection *getDwarfTypesDWOSection() const {
> -    return DwarfTypesDWOSection;
> -  }
> +  const MCSection *getDwarfTypesDWOSection(uint64_t Hash) const;
>    const MCSection *getDwarfAbbrevDWOSection() const {
>      return DwarfAbbrevDWOSection;
>    }
> 
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=209338&r1=209337&r2=209338&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed May 21
> 18:27:41 2014
> @@ -1588,12 +1588,9 @@ void DwarfDebug::emitSectionLabels() {
>    // Dwarf sections base addresses.
>    DwarfInfoSectionSym =
>        emitSectionSym(Asm, TLOF.getDwarfInfoSection(),
>        "section_info");
> -  if (useSplitDwarf()) {
> +  if (useSplitDwarf())
>      DwarfInfoDWOSectionSym =
>          emitSectionSym(Asm, TLOF.getDwarfInfoDWOSection(),
>          "section_info_dwo");
> -    DwarfTypesDWOSectionSym =
> -        emitSectionSym(Asm, TLOF.getDwarfTypesDWOSection(),
> "section_types_dwo");
> -  }
>    DwarfAbbrevSectionSym =
>        emitSectionSym(Asm, TLOF.getDwarfAbbrevSection(),
>        "section_abbrev");
>    if (useSplitDwarf())
> @@ -2357,9 +2354,9 @@ void DwarfDebug::addDwarfTypeUnitType(Dw
>    bool TopLevelType = TypeUnitsUnderConstruction.empty();
>    AddrPool.resetUsedFlag();
>  
> -  auto OwnedUnit = make_unique<DwarfTypeUnit>(
> -      InfoHolder.getUnits().size() +
> TypeUnitsUnderConstruction.size(), CU, Asm,
> -      this, &InfoHolder, getDwoLineTable(CU));
> +  auto OwnedUnit =
> +      make_unique<DwarfTypeUnit>(InfoHolder.getUnits().size(), CU,
> Asm, this,
> +                                 &InfoHolder, getDwoLineTable(CU));
>    DwarfTypeUnit &NewTU = *OwnedUnit;
>    DIE &UnitDie = NewTU.getUnitDie();
>    TU = &NewTU;
> @@ -2372,14 +2369,13 @@ void DwarfDebug::addDwarfTypeUnitType(Dw
>    uint64_t Signature = makeTypeSignature(Identifier);
>    NewTU.setTypeSignature(Signature);
>  
> -  if (useSplitDwarf())
> -
>    NewTU.initSection(Asm->getObjFileLowering().getDwarfTypesDWOSection(),
> -                      DwarfTypesDWOSectionSym);
> -  else {
> +  if (!useSplitDwarf())
>      CU.applyStmtList(UnitDie);
> -    NewTU.initSection(
> -        Asm->getObjFileLowering().getDwarfTypesSection(Signature));
> -  }
> +
> +  NewTU.initSection(
> +      useSplitDwarf()
> +          ?
> Asm->getObjFileLowering().getDwarfTypesDWOSection(Signature)
> +          :
> Asm->getObjFileLowering().getDwarfTypesSection(Signature));
>  
>    NewTU.setType(NewTU.createTypeDIE(CTy));
>  
> 
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=209338&r1=209337&r2=209338&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Wed May 21
> 18:27:41 2014
> @@ -253,7 +253,6 @@ class DwarfDebug : public AsmPrinterHand
>    MCSymbol *DwarfDebugLocSectionSym, *DwarfLineSectionSym,
>    *DwarfAddrSectionSym;
>    MCSymbol *FunctionBeginSym, *FunctionEndSym;
>    MCSymbol *DwarfInfoDWOSectionSym, *DwarfAbbrevDWOSectionSym;
> -  MCSymbol *DwarfTypesDWOSectionSym;
>    MCSymbol *DwarfStrDWOSectionSym;
>    MCSymbol *DwarfGnuPubNamesSectionSym, *DwarfGnuPubTypesSectionSym;
>  
> 
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=209338&r1=209337&r2=209338&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Wed May 21 18:27:41
> 2014
> @@ -577,10 +577,6 @@ public:
>             sizeof(uint32_t);                               // Type
>             DIE Offset
>    }
>    void initSection(const MCSection *Section);
> -  // Bring in the base function (taking two args, including the
> section symbol)
> -  // for use when building DWO type units (they don't go in unique
> comdat
> -  // sections)
> -  using DwarfUnit::initSection;
>    DwarfCompileUnit &getCU() override { return CU; }
>  
>  protected:
> 
> Modified: llvm/trunk/lib/MC/MCObjectFileInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCObjectFileInfo.cpp?rev=209338&r1=209337&r2=209338&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCObjectFileInfo.cpp (original)
> +++ llvm/trunk/lib/MC/MCObjectFileInfo.cpp Wed May 21 18:27:41 2014
> @@ -537,9 +537,6 @@ void MCObjectFileInfo::InitELFMCObjectFi
>    DwarfInfoDWOSection =
>      Ctx->getELFSection(".debug_info.dwo", ELF::SHT_PROGBITS, 0,
>                         SectionKind::getMetadata());
> -  DwarfTypesDWOSection =
> -    Ctx->getELFSection(".debug_types.dwo", ELF::SHT_PROGBITS, 0,
> -                       SectionKind::getMetadata());
>    DwarfAbbrevDWOSection =
>      Ctx->getELFSection(".debug_abbrev.dwo", ELF::SHT_PROGBITS, 0,
>                         SectionKind::getMetadata());
> @@ -709,10 +706,6 @@ void MCObjectFileInfo::InitCOFFMCObjectF
>        Ctx->getCOFFSection(".debug_info.dwo",
>        COFF::IMAGE_SCN_MEM_DISCARDABLE |
>                                                  COFF::IMAGE_SCN_MEM_READ,
>                            SectionKind::getMetadata());
> -  DwarfTypesDWOSection =
> -      Ctx->getCOFFSection(".debug_types.dwo",
> COFF::IMAGE_SCN_MEM_DISCARDABLE |
> -
>                                                  COFF::IMAGE_SCN_MEM_READ,
> -                          SectionKind::getMetadata());
>    DwarfAbbrevDWOSection =
>        Ctx->getCOFFSection(".debug_abbrev.dwo",
>        COFF::IMAGE_SCN_MEM_DISCARDABLE |
>                                                    COFF::IMAGE_SCN_MEM_READ,
> @@ -814,6 +807,13 @@ const MCSection *MCObjectFileInfo::getDw
>                              SectionKind::getMetadata(), 0,
>                              utostr(Hash));
>  }
>  
> +const MCSection *
> +MCObjectFileInfo::getDwarfTypesDWOSection(uint64_t Hash) const {
> +  return Ctx->getELFSection(".debug_types.dwo", ELF::SHT_PROGBITS,
> +                            ELF::SHF_GROUP,
> SectionKind::getMetadata(), 0,
> +                            utostr(Hash));
> +}
> +
>  void MCObjectFileInfo::InitEHFrameSection() {
>    if (Env == IsMachO)
>      EHFrameSection =
> 
> Modified: llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll?rev=209338&r1=209337&r2=209338&view=diff
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll (original)
> +++ llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll Wed May 21
> 18:27:41 2014
> @@ -1,12 +1,10 @@
>  ; REQUIRES: object-emission
>  
> -; RUN: llc < %s -o %t -filetype=obj -O0 -generate-type-units
> -mtriple=x86_64-unknown-linux-gnu
> +; RUN: llc %s -o %t -filetype=obj -O0 -generate-type-units
> -mtriple=x86_64-unknown-linux-gnu
>  ; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK
>  --check-prefix=SINGLE %s
> -; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_COMMON
> %s
>  
> -; RUN: llc < %s -split-dwarf=Enable -o %t -filetype=obj -O0
> -generate-type-units -mtriple=x86_64-unknown-linux-gnu
> +; RUN: llc %s -split-dwarf=Enable -o %t -filetype=obj -O0
> -generate-type-units -mtriple=x86_64-unknown-linux-gnu
>  ; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK
>  --check-prefix=FISSION %s
> -; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_COMMON
> --check-prefix=OBJ_FISSION %s
>  
>  ; Generated from bar.cpp:
>  
> @@ -163,20 +161,6 @@
>  ; CHECK-NEXT: [[FLUFFY]] "echidna::capybara::mongoose::fluffy"
>  ; CHECK-NEXT: [[WALRUS]] "walrus"
>  
> -; Make sure debug_types are in comdat groups. This could be more
> rigid to check
> -; that they're the right comdat groups (each type in a separate
> comdat group,
> -; etc)
> -; OBJ_COMMON: Name: .debug_types (
> -; OBJ_COMMON-NOT: }
> -; OBJ_COMMON: SHF_GROUP
> -
> -; Fission type units don't go in comdat groups, since their linker
> is debug
> -; aware it's handled using the debug info semantics rather than raw
> ELF object
> -; semantics.
> -; OBJ_FISSION: Name: .debug_types.dwo (
> -; OBJ_FISSION-NOT: SHF_GROUP
> -; OBJ_FISSION: }
> -
>  %struct.bar = type { i8 }
>  %"class.echidna::capybara::mongoose::fluffy" = type { i32, i32 }
>  %"struct.<anonymous namespace>::walrus" = type { i8 }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list