[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