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

David Blaikie dblaikie at gmail.com
Thu Sep 4 06:18:17 PDT 2014


On Sep 3, 2014 11:27 PM, "Frederic Riss" <friss at apple.com> wrote:
>
> Author: friss
> Date: Thu Sep  4 01:14:28 2014
> New Revision: 217128
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217128&view=rev
> Log:
> 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.

Hmm, how is this useful for location expression dumping? What extra info do
you need there? I guess I'll see when you get to those patches, but just
curious.

(I was expecting this to be used for stuff like low_pc rendering for
example)

Hmm - and how did we do rendering of DW_form_strp without access to other
sections via the unit? I guess we passed in the string table specifically?
Can we remove that explicit passing notes that we have the whole unit?

>
> 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,
>          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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140904/6fc798a3/attachment.html>


More information about the llvm-commits mailing list