[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