diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-12-13 06:27:38 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-12-13 06:27:38 +0000 |
commit | 753c6e4eb29edfce870d1af751b0809b20a955c4 (patch) | |
tree | 16a1c97a33c543a163b758ebad91bd3ed3237f95 /llvm/lib/MC/MCObjectFileInfo.cpp | |
parent | 33e430fc58b2ae588cb9865e61efa317f78753bf (diff) | |
download | bcm5719-llvm-753c6e4eb29edfce870d1af751b0809b20a955c4.tar.gz bcm5719-llvm-753c6e4eb29edfce870d1af751b0809b20a955c4.zip |
DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers
This commit does not complete the type units feature - there are issues
around fission support (skeletal type units, pubtypes/pubnames) and
hashing of some types including those containing references to types in
other type units.
Originally committed as r197073 and reverted in r197079.
Recommitted as r197197 to reproduce the failure and reverted as r197199
Turns out there was unstable ordering in the type unit dumping code.
Fixed by using MapVector in DWARFContext to store the debug_types
comdat sections.
llvm-svn: 197210
Diffstat (limited to 'llvm/lib/MC/MCObjectFileInfo.cpp')
-rw-r--r-- | llvm/lib/MC/MCObjectFileInfo.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp index 8ef4a0a6d7b..da707282479 100644 --- a/llvm/lib/MC/MCObjectFileInfo.cpp +++ b/llvm/lib/MC/MCObjectFileInfo.cpp @@ -9,6 +9,7 @@ #include "llvm/MC/MCObjectFileInfo.h" #include "llvm/ADT/Triple.h" +#include "llvm/ADT/StringExtras.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCSection.h" #include "llvm/MC/MCSectionCOFF.h" @@ -718,6 +719,17 @@ void MCObjectFileInfo::InitMCObjectFileInfo(StringRef TT, Reloc::Model relocm, } } +const MCSection *MCObjectFileInfo::getDwarfTypesSection(uint64_t Hash) const { + return Ctx->getELFSection(".debug_types", ELF::SHT_PROGBITS, ELF::SHF_GROUP, + SectionKind::getMetadata(), 0, utostr(Hash)); +} + +const MCSection * +MCObjectFileInfo::getDwarfTypesDWOSection(uint64_t Hash) const { + return Ctx->getELFSection(".debug_types.dwo", ELF::SHT_GROUP, 0, + SectionKind::getMetadata(), 0, utostr(Hash)); +} + void MCObjectFileInfo::InitEHFrameSection() { if (Env == IsMachO) EHFrameSection = |