[llvm] r217128 - Add a DWARFContext& member in DWARFUnit.

Justin Bogner mail at justinbogner.com
Wed Sep 3 23:57:10 PDT 2014


Frederic Riss <friss at apple.com> writes:
> Author: friss
> Date: Thu Sep  4 01:14:28 2014
> New Revision: 217128
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217128&view=revLog:
> Add a DWARFContext& member in DWARFUnit.
>
> The DWARFContext will be used to pass global 'context' down, like
> pointers to related debug info sections or command line options.
> The first use will be for the debug_info dumper to be able to access
> other debug info section to dump eg. Location Expression inline
> in the debug_info dump.
>
> Modified:
>     llvm/trunk/lib/DebugInfo/DWARFCompileUnit.h
>     llvm/trunk/lib/DebugInfo/DWARFContext.cpp
>     llvm/trunk/lib/DebugInfo/DWARFTypeUnit.h
>     llvm/trunk/lib/DebugInfo/DWARFUnit.cpp
>     llvm/trunk/lib/DebugInfo/DWARFUnit.h
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFCompileUnit.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFCompileUnit.h?rev=217128&r1=217127&r2=217128&view=diff==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFCompileUnit.h (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFCompileUnit.h Thu Sep  4 01:14:28 2014
> @@ -16,10 +16,10 @@ namespace llvm {
>  
>  class DWARFCompileUnit : public DWARFUnit {
>  public:
> -  DWARFCompileUnit(const DWARFDebugAbbrev *DA, StringRef IS, StringRef RS,
> -                   StringRef SS, StringRef SOS, StringRef AOS,
> -                   const RelocAddrMap *M, bool LE)
> -      : DWARFUnit(DA, IS, RS, SS, SOS, AOS, M, LE) {}
> +  DWARFCompileUnit(DWARFContext& Context, const DWARFDebugAbbrev *DA,
> +                   StringRef IS, StringRef RS, StringRef SS, StringRef SOS,
> +                   StringRef AOS, const RelocAddrMap *M, bool LE)
> +    : DWARFUnit(Context, DA, IS, RS, SS, SOS, AOS, M, LE) {}
>    void dump(raw_ostream &OS);
>    // VTable anchor.
>    ~DWARFCompileUnit() override;
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFContext.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFContext.cpp?rev=217128&r1=217127&r2=217128&view=diff==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFContext.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFContext.cpp Thu Sep  4 01:14:28 2014
> @@ -318,7 +318,7 @@ void DWARFContext::parseCompileUnits() {
>    const DataExtractor &DIData = DataExtractor(getInfoSection().Data,
>                                                isLittleEndian(), 0);
>    while (DIData.isValidOffset(offset)) {
> -    std::unique_ptr<DWARFCompileUnit> CU(new DWARFCompileUnit(
> +    std::unique_ptr<DWARFCompileUnit> CU(new DWARFCompileUnit(*this,

While you're in here, it might be worthwhile to clean these up to use
auto and llvm::make_unique.

>          getDebugAbbrev(), getInfoSection().Data, getRangeSection(),
>          getStringSection(), StringRef(), getAddrSection(),
>          &getInfoSection().Relocs, isLittleEndian()));
> @@ -338,10 +338,10 @@ void DWARFContext::parseTypeUnits() {
>      const DataExtractor &DIData =
>          DataExtractor(I.second.Data, isLittleEndian(), 0);
>      while (DIData.isValidOffset(offset)) {
> -      std::unique_ptr<DWARFTypeUnit> TU(
> -          new DWARFTypeUnit(getDebugAbbrev(), I.second.Data, getRangeSection(),
> -                            getStringSection(), StringRef(), getAddrSection(),
> -                            &I.second.Relocs, isLittleEndian()));
> +      std::unique_ptr<DWARFTypeUnit> TU(new DWARFTypeUnit(*this,
> +           getDebugAbbrev(), I.second.Data, getRangeSection(),
> +           getStringSection(), StringRef(), getAddrSection(),
> +           &I.second.Relocs, isLittleEndian()));
>        if (!TU->extract(DIData, &offset))
>          break;
>        TUs.push_back(std::move(TU));
> @@ -357,7 +357,7 @@ void DWARFContext::parseDWOCompileUnits(
>    const DataExtractor &DIData =
>        DataExtractor(getInfoDWOSection().Data, isLittleEndian(), 0);
>    while (DIData.isValidOffset(offset)) {
> -    std::unique_ptr<DWARFCompileUnit> DWOCU(new DWARFCompileUnit(
> +    std::unique_ptr<DWARFCompileUnit> DWOCU(new DWARFCompileUnit(*this,
>          getDebugAbbrevDWO(), getInfoDWOSection().Data, getRangeDWOSection(),
>          getStringDWOSection(), getStringOffsetDWOSection(), getAddrSection(),
>          &getInfoDWOSection().Relocs, isLittleEndian()));
> @@ -377,7 +377,7 @@ void DWARFContext::parseDWOTypeUnits() {
>      const DataExtractor &DIData =
>          DataExtractor(I.second.Data, isLittleEndian(), 0);
>      while (DIData.isValidOffset(offset)) {
> -      std::unique_ptr<DWARFTypeUnit> TU(new DWARFTypeUnit(
> +      std::unique_ptr<DWARFTypeUnit> TU(new DWARFTypeUnit(*this,
>            getDebugAbbrevDWO(), I.second.Data, getRangeDWOSection(),
>            getStringDWOSection(), getStringOffsetDWOSection(), getAddrSection(),
>            &I.second.Relocs, isLittleEndian()));
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFTypeUnit.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFTypeUnit.h?rev=217128&r1=217127&r2=217128&view=diff==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFTypeUnit.h (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFTypeUnit.h Thu Sep  4 01:14:28 2014
> @@ -19,10 +19,10 @@ private:
>    uint64_t TypeHash;
>    uint32_t TypeOffset;
>  public:
> -  DWARFTypeUnit(const DWARFDebugAbbrev *DA, StringRef IS, StringRef RS,
> -                StringRef SS, StringRef SOS, StringRef AOS,
> -                const RelocAddrMap *M, bool LE)
> -      : DWARFUnit(DA, IS, RS, SS, SOS, AOS, M, LE) {}
> +  DWARFTypeUnit(DWARFContext &Context, const DWARFDebugAbbrev *DA,
> +                StringRef IS, StringRef RS, StringRef SS, StringRef SOS,
> +                StringRef AOS, const RelocAddrMap *M, bool LE)
> +    : DWARFUnit(Context, DA, IS, RS, SS, SOS, AOS, M, LE) {}
>    uint32_t getHeaderSize() const override {
>      return DWARFUnit::getHeaderSize() + 12;
>    }
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFUnit.cpp?rev=217128&r1=217127&r2=217128&view=diff==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFUnit.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFUnit.cpp Thu Sep  4 01:14:28 2014
> @@ -17,12 +17,12 @@
>  using namespace llvm;
>  using namespace dwarf;
>  
> -DWARFUnit::DWARFUnit(const DWARFDebugAbbrev *DA, StringRef IS, StringRef RS,
> -                     StringRef SS, StringRef SOS, StringRef AOS,
> -                     const RelocAddrMap *M, bool LE)
> -    : Abbrev(DA), InfoSection(IS), RangeSection(RS), StringSection(SS),
> -      StringOffsetSection(SOS), AddrOffsetSection(AOS), RelocMap(M),
> -      isLittleEndian(LE) {
> +DWARFUnit::DWARFUnit(DWARFContext &DC, const DWARFDebugAbbrev *DA,
> +                     StringRef IS, StringRef RS, StringRef SS, StringRef SOS,
> +                     StringRef AOS, const RelocAddrMap *M, bool LE)
> +  : Context(DC), Abbrev(DA), InfoSection(IS), RangeSection(RS),
> +    StringSection(SS), StringOffsetSection(SOS), AddrOffsetSection(AOS),
> +    RelocMap(M), isLittleEndian(LE) {
>    clear();
>  }
>  
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFUnit.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFUnit.h?rev=217128&r1=217127&r2=217128&view=diff==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFUnit.h (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFUnit.h Thu Sep  4 01:14:28 2014
> @@ -22,11 +22,14 @@ namespace object {
>  class ObjectFile;
>  }
>  
> +class DWARFContext;
>  class DWARFDebugAbbrev;
>  class StringRef;
>  class raw_ostream;
>  
>  class DWARFUnit {
> +  DWARFContext &Context;
> +
>    const DWARFDebugAbbrev *Abbrev;
>    StringRef InfoSection;
>    StringRef RangeSection;
> @@ -63,12 +66,14 @@ protected:
>    virtual uint32_t getHeaderSize() const { return 11; }
>  
>  public:
> -  DWARFUnit(const DWARFDebugAbbrev *DA, StringRef IS, StringRef RS,
> -            StringRef SS, StringRef SOS, StringRef AOS, const RelocAddrMap *M,
> -            bool LE);
> +  DWARFUnit(DWARFContext& Context, const DWARFDebugAbbrev *DA, StringRef IS,
> +            StringRef RS, StringRef SS, StringRef SOS, StringRef AOS,
> +            const RelocAddrMap *M, bool LE);
>  
>    virtual ~DWARFUnit();
>  
> +  DWARFContext& getContext() const { return Context; }
> +
>    StringRef getStringSection() const { return StringSection; }
>    StringRef getStringOffsetSection() const { return StringOffsetSection; }
>    void setAddrOffsetSection(StringRef AOS, uint32_t Base) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list