[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