diff options
author | hjk <qtc-committer@nokia.com> | 2012-06-06 16:08:59 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-06-08 12:40:08 +0200 |
commit | 92c7dce14f4ba1ffd5f5c63f5268238a4cf57a5a (patch) | |
tree | 53761a7007e4f74d0bff40002e6979106e4cad59 /src/libs/utils/elfreader.h | |
parent | 79de09f2663f818bb07c24752e6520b19b28e6ec (diff) |
debugger: more elf shuffling
Also distinguish between debuglink and buildid.
Change-Id: I1b55d1df42576c004050d319f46fb8c2ced9c85f
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/libs/utils/elfreader.h')
-rw-r--r-- | src/libs/utils/elfreader.h | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/src/libs/utils/elfreader.h b/src/libs/utils/elfreader.h index af65c42445a..bdb222b13d7 100644 --- a/src/libs/utils/elfreader.h +++ b/src/libs/utils/elfreader.h @@ -39,30 +39,28 @@ ** ****************************************************************************/ -// This is essentially copied from Qt 5's -// qtbase/src/corelib/plugin/qelfparser_p.{h,cpp} - #ifndef UTILS_ELFREADER_H #define UTILS_ELFREADER_H #include "utils_global.h" #include <qendian.h> -#include <qlist.h> #include <qstring.h> +#include <qvector.h> namespace Utils { enum DebugSymbolsType { - UnknownSymbols, // Unknown. - NoSymbols, // No usable symbols. - SeparateSymbols, // Symbols mentioned, but not in binary. - PlainSymbols, // Ordinary symbols available. - FastSymbols // Dwarf index available. + UnknownSymbols = 0, // Unknown. + NoSymbols = 1, // No usable symbols. + LinkedSymbols = 2, // Link to symols available. + BuildIdSymbols = 4, // BuildId available. + PlainSymbols = 8, // Ordinary symbols available. + FastSymbols = 16 // Dwarf index available. }; -class QTCREATOR_UTILS_EXPORT ElfHeader +class ElfSectionHeader { public: QByteArray name; @@ -73,15 +71,27 @@ public: quint64 data; }; -class QTCREATOR_UTILS_EXPORT ElfHeaders +class ElfProgramHeader +{ +public: + quint32 type; + quint64 offset; + quint64 filesz; + quint64 memsz; +}; + +class QTCREATOR_UTILS_EXPORT ElfData { public: - ElfHeaders() : symbolsType(UnknownSymbols) {} + ElfData() : symbolsType(UnknownSymbols) {} int indexOf(const QByteArray &name) const; public: + QByteArray debugLink; + QByteArray buildId; DebugSymbolsType symbolsType; - QList<ElfHeader> headers; + QVector<ElfSectionHeader> sectionHeaders; + QVector<ElfProgramHeader> programHeaders; }; class QTCREATOR_UTILS_EXPORT ElfReader @@ -91,9 +101,10 @@ public: enum Result { Ok, NotElf, Corrupt }; enum ElfEndian { ElfLittleEndian = 0, ElfBigEndian = 1 }; - ElfHeaders readHeaders(); + ElfData readHeaders(); QByteArray readSection(const QByteArray §ionName); QString errorString() const { return m_errorString; } + QByteArray readCoreName(); private: friend class ElfMapper; @@ -102,7 +113,7 @@ private: QString m_binary; QString m_errorString; ElfEndian m_endian; - ElfHeaders m_headers; + ElfData m_elfData; }; } // namespace Utils |