summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/DWARFContext.h
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2013-12-13 21:33:40 +0000
committerDavid Blaikie <dblaikie@gmail.com>2013-12-13 21:33:40 +0000
commitbc563276e091029d6a3516323a725f2eaa279ff5 (patch)
tree15904868ed1d90470874adc0d87d0611d0a2a3d2 /llvm/lib/DebugInfo/DWARFContext.h
parent88f64e6aebd9ce824f6dfddc2979321e57a80dda (diff)
downloadbcm5719-llvm-bc563276e091029d6a3516323a725f2eaa279ff5.tar.gz
bcm5719-llvm-bc563276e091029d6a3516323a725f2eaa279ff5.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. Recommitted as r197210 with a fix to dumping and reverted as r197211 because I was a bit gun shy and thought I saw a failure that turned out to be unrelated. So here we go - once more with feeling! \o/ llvm-svn: 197275
Diffstat (limited to 'llvm/lib/DebugInfo/DWARFContext.h')
-rw-r--r--llvm/lib/DebugInfo/DWARFContext.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/DebugInfo/DWARFContext.h b/llvm/lib/DebugInfo/DWARFContext.h
index 03863ab8b1e..08006d0d5e5 100644
--- a/llvm/lib/DebugInfo/DWARFContext.h
+++ b/llvm/lib/DebugInfo/DWARFContext.h
@@ -19,6 +19,7 @@
#include "DWARFTypeUnit.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/MapVector.h"
#include "llvm/DebugInfo/DIContext.h"
namespace llvm {
@@ -138,7 +139,9 @@ public:
virtual bool isLittleEndian() const = 0;
virtual uint8_t getAddressSize() const = 0;
virtual const Section &getInfoSection() = 0;
- virtual const std::map<object::SectionRef, Section> &getTypesSections() = 0;
+ typedef MapVector<object::SectionRef, Section,
+ std::map<object::SectionRef, unsigned> > TypeSectionMap;
+ virtual const TypeSectionMap &getTypesSections() = 0;
virtual StringRef getAbbrevSection() = 0;
virtual const Section &getLocSection() = 0;
virtual StringRef getARangeSection() = 0;
@@ -179,7 +182,7 @@ class DWARFContextInMemory : public DWARFContext {
bool IsLittleEndian;
uint8_t AddressSize;
Section InfoSection;
- std::map<object::SectionRef, Section> TypesSections;
+ TypeSectionMap TypesSections;
StringRef AbbrevSection;
Section LocSection;
StringRef ARangeSection;
@@ -208,9 +211,7 @@ public:
virtual bool isLittleEndian() const { return IsLittleEndian; }
virtual uint8_t getAddressSize() const { return AddressSize; }
virtual const Section &getInfoSection() { return InfoSection; }
- virtual const std::map<object::SectionRef, Section> &getTypesSections() {
- return TypesSections;
- }
+ virtual const TypeSectionMap &getTypesSections() { return TypesSections; }
virtual StringRef getAbbrevSection() { return AbbrevSection; }
virtual const Section &getLocSection() { return LocSection; }
virtual StringRef getARangeSection() { return ARangeSection; }
OpenPOWER on IntegriCloud