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

David Blaikie dblaikie at gmail.com
Fri May 23 10:01:08 PDT 2014


On Thu, May 22, 2014 at 11:06 PM, David Blaikie <dblaikie at gmail.com> wrote:
> 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.

Oops, wrong revision (& I hadn't actually committed it). Now actually
committed in r209529.

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