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

David Blaikie dblaikie at gmail.com
Thu May 22 23:06:43 PDT 2014


On Thu, May 22, 2014 at 5:12 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> ----- 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.

The one I particularly tripped over was http://gcc.gnu.org/wiki/DebugFissionDWP

> Adding a FIXME also seems reasonable.

Added in 209499.

>
>  -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