[DebugInfo] Pass DWARFSection down to DWARFUnit constructor (NFC).
authorAlexey Samsonov <vonosmas@gmail.com>
Wed, 8 Oct 2014 00:24:41 +0000 (00:24 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Wed, 8 Oct 2014 00:24:41 +0000 (00:24 +0000)
Keep the actual section contents and the relocation map together.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219261 91177308-0d34-0410-b5e6-96231b3b80d8

lib/DebugInfo/DWARFCompileUnit.h
lib/DebugInfo/DWARFTypeUnit.h
lib/DebugInfo/DWARFUnit.cpp
lib/DebugInfo/DWARFUnit.h

index 47c7191d96e28c576c6c29a5a6b8544daf2f979c..b3190b18763055d8d0524be45dc67c25689b8660 100644 (file)
@@ -16,11 +16,11 @@ namespace llvm {
 
 class DWARFCompileUnit : public DWARFUnit {
 public:
-  DWARFCompileUnit(DWARFContext& Context, const DWARFDebugAbbrev *DA,
-                   StringRef IS, StringRef RS, StringRef SS, StringRef SOS,
-                   StringRef AOS, const RelocAddrMap *M, bool LE,
+  DWARFCompileUnit(DWARFContext &Context, const DWARFSection &Section,
+                   const DWARFDebugAbbrev *DA, StringRef RS, StringRef SS,
+                   StringRef SOS, StringRef AOS, bool LE,
                    const DWARFUnitSectionBase &UnitSection)
-    : DWARFUnit(Context, DA, IS, RS, SS, SOS, AOS, M, LE, UnitSection) {}
+      : DWARFUnit(Context, Section, DA, RS, SS, SOS, AOS, LE, UnitSection) {}
   void dump(raw_ostream &OS);
   // VTable anchor.
   ~DWARFCompileUnit() override;
index f861ad6d37602e484c7127a5d1a910598fd5b434..7471b5a821aff365941f444b2fe2b9a37514d96c 100644 (file)
@@ -19,11 +19,11 @@ private:
   uint64_t TypeHash;
   uint32_t TypeOffset;
 public:
-  DWARFTypeUnit(DWARFContext &Context, const DWARFDebugAbbrev *DA,
-                StringRef IS, StringRef RS, StringRef SS, StringRef SOS,
-                StringRef AOS, const RelocAddrMap *M, bool LE,
+  DWARFTypeUnit(DWARFContext &Context, const DWARFSection &Section,
+                const DWARFDebugAbbrev *DA, StringRef RS, StringRef SS,
+                StringRef SOS, StringRef AOS, bool LE,
                 const DWARFUnitSectionBase &UnitSection)
-    : DWARFUnit(Context, DA, IS, RS, SS, SOS, AOS, M, LE, UnitSection) {}
+      : DWARFUnit(Context, Section, DA, RS, SS, SOS, AOS, LE, UnitSection) {}
   uint32_t getHeaderSize() const override {
     return DWARFUnit::getHeaderSize() + 12;
   }
index 092eb32d2a1a176cca3a4652c5a5f850ace5fa8d..82c45297662b66f27b3b45e451377ca884e24080 100644 (file)
@@ -30,13 +30,13 @@ void DWARFUnitSectionBase::parseDWO(DWARFContext &C,
             C.getAddrSection(), C.isLittleEndian());
 }
 
-DWARFUnit::DWARFUnit(DWARFContext &DC, const DWARFDebugAbbrev *DA,
-                     StringRef IS, StringRef RS, StringRef SS, StringRef SOS,
-                     StringRef AOS, const RelocAddrMap *M, bool LE,
-                     const DWARFUnitSectionBaseUnitSection)
-  : Context(DC), Abbrev(DA), InfoSection(IS), RangeSection(RS),
-    StringSection(SS), StringOffsetSection(SOS), AddrOffsetSection(AOS),
-    RelocMap(M), isLittleEndian(LE), UnitSection(UnitSection)  {
+DWARFUnit::DWARFUnit(DWARFContext &DC, const DWARFSection &Section,
+                     const DWARFDebugAbbrev *DA, StringRef RS, StringRef SS,
+                     StringRef SOS, StringRef AOS, bool LE,
+                     const DWARFUnitSectionBase &UnitSection)
+    : Context(DC), InfoSection(Section), Abbrev(DA), RangeSection(RS),
+      StringSection(SS), StringOffsetSection(SOS), AddrOffsetSection(AOS),
+      isLittleEndian(LE), UnitSection(UnitSection) {
   clear();
 }
 
index 91245c46ff7340c84938a0ca518c572a98bfd355..09eb55fc32320295b5fafd0a0a0108c606f4f93c 100644 (file)
@@ -88,9 +88,8 @@ private:
     DataExtractor Data(Section.Data, LE, 0);
     uint32_t Offset = 0;
     while (Data.isValidOffset(Offset)) {
-      auto U =
-          llvm::make_unique<UnitType>(Context, DA, Section.Data, RS, SS, SOS,
-                                      AOS, &Section.Relocs, LE, *this);
+      auto U = llvm::make_unique<UnitType>(Context, Section, DA, RS, SS, SOS,
+                                           AOS, LE, *this);
       if (!U->extract(Data, &Offset))
         break;
       this->push_back(std::move(U));
@@ -102,16 +101,16 @@ private:
 
 class DWARFUnit {
   DWARFContext &Context;
+  // Section containing this DWARFUnit.
+  const DWARFSection &InfoSection;
 
   const DWARFDebugAbbrev *Abbrev;
-  StringRef InfoSection;
   StringRef RangeSection;
   uint32_t RangeSectionBase;
   StringRef StringSection;
   StringRef StringOffsetSection;
   StringRef AddrOffsetSection;
   uint32_t AddrOffsetSectionBase;
-  const RelocAddrMap *RelocMap;
   bool isLittleEndian;
   const DWARFUnitSectionBase &UnitSection;
 
@@ -140,9 +139,10 @@ protected:
   virtual uint32_t getHeaderSize() const { return 11; }
 
 public:
-  DWARFUnit(DWARFContext& Context, const DWARFDebugAbbrev *DA, StringRef IS,
-            StringRef RS, StringRef SS, StringRef SOS, StringRef AOS,
-            const RelocAddrMap *M, bool LE, const DWARFUnitSectionBase &UnitSection);
+  DWARFUnit(DWARFContext &Context, const DWARFSection &Section,
+            const DWARFDebugAbbrev *DA, StringRef RS, StringRef SS,
+            StringRef SOS, StringRef AOS, bool LE,
+            const DWARFUnitSectionBase &UnitSection);
 
   virtual ~DWARFUnit();
 
@@ -164,13 +164,13 @@ public:
   bool getStringOffsetSectionItem(uint32_t Index, uint32_t &Result) const;
 
   DataExtractor getDebugInfoExtractor() const {
-    return DataExtractor(InfoSection, isLittleEndian, AddrSize);
+    return DataExtractor(InfoSection.Data, isLittleEndian, AddrSize);
   }
   DataExtractor getStringExtractor() const {
     return DataExtractor(StringSection, false, 0);
   }
 
-  const RelocAddrMap *getRelocMap() const { return RelocMap; }
+  const RelocAddrMap *getRelocMap() const { return &InfoSection.Relocs; }
 
   bool extract(DataExtractor debug_info, uint32_t* offset_ptr);