File indexing completed on 2024-05-12 05:43:32
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 ELFNODEVARIANT_H 0019 #define ELFNODEVARIANT_H 0020 0021 struct ElfNodeVariant 0022 { 0023 enum Type { 0024 Invalid, 0025 FileSet, 0026 File, 0027 Section, 0028 SymbolTableSection, 0029 SymbolTableEntry, 0030 DebugLinkSection, 0031 DynamicSection, 0032 DynamicEntry, 0033 GotSection, 0034 GotEntry, 0035 HashSection, 0036 NoteSection, 0037 NoteEntry, 0038 PltSection, 0039 PltEntry, 0040 RelocationSection, 0041 RelocationEntry, 0042 VersionDefinitionSection, 0043 VersionDefinitionEntry, 0044 VersionDefinitionAuxiliaryEntry, 0045 VersionRequirementsSection, 0046 VersionRequirementEntry, 0047 VersionRequirementAuxiliaryEntry, 0048 DwarfInfo, 0049 DwarfDie 0050 }; 0051 0052 template <typename T> T* value() const 0053 { 0054 return static_cast<T*>(payload); 0055 } 0056 0057 void *payload = nullptr; 0058 Type type = Invalid; 0059 }; 0060 0061 #endif