File indexing completed on 2024-05-19 05:44:09
0001 /* 0002 Copyright (C) 2013-2014 Volker Krause <vkrause@kde.org> 0003 0004 This program is free software; you can redistribute it and/or modify it 0005 under the terms of the GNU Library General Public License as published by 0006 the Free Software Foundation; either version 2 of the License, or (at your 0007 option) any later version. 0008 0009 This program is distributed in the hope that it will be useful, but WITHOUT 0010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0011 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 0012 License for more details. 0013 0014 You should have received a copy of the GNU General Public License 0015 along with this program. If not, see <https://www.gnu.org/licenses/>. 0016 */ 0017 0018 #ifndef ELFFILESET_H 0019 #define ELFFILESET_H 0020 0021 #include "elffile.h" 0022 0023 #include <QObject> 0024 0025 /** A set of ELF files. */ 0026 class ElfFileSet : public QObject 0027 { 0028 Q_OBJECT 0029 public: 0030 explicit ElfFileSet(QObject* parent = nullptr); 0031 ~ElfFileSet(); 0032 0033 int size() const; 0034 void addFile(const QString &fileName); 0035 0036 ElfFile* file(int index) const; 0037 0038 void topologicalSort(); 0039 private: 0040 void addFile(ElfFile* file); 0041 void parseLdConf(); 0042 void parseLdConf(const QString &fileName); 0043 void findSeparateDebugFile(ElfFile *file) const; 0044 static bool isValidDebugLinkFile(const QString& fileName, uint32_t expectedCrc); 0045 0046 QVector<ElfFile*> m_files; 0047 QVector<QByteArray> m_baseSearchPaths; 0048 QVector<QByteArray> m_ldLibraryPaths; 0049 0050 QVector<QString> m_globalDebugSearchPath; 0051 }; 0052 0053 #endif // ELFFILESET_H