LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
DynamicEntry.hpp
Go to the documentation of this file.
1/* Copyright 2017 - 2025 R. Thomas
2 * Copyright 2017 - 2025 Quarkslab
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#ifndef LIEF_ELF_DYNAMIC_ENTRY_H
17#define LIEF_ELF_DYNAMIC_ENTRY_H
18
19#include <ostream>
20#include <memory>
21#include <cstdint>
22
23#include "LIEF/visibility.h"
24#include "LIEF/Object.hpp"
25#include "LIEF/ELF/enums.hpp"
26
27namespace LIEF {
28namespace ELF {
29namespace details {
30struct Elf64_Dyn;
31struct Elf32_Dyn;
32}
33
37 public:
38 static constexpr uint64_t MIPS_DISC = 0x100000000;
39 static constexpr uint64_t AARCH64_DISC = 0x200000000;
40 static constexpr uint64_t HEXAGON_DISC = 0x300000000;
41 static constexpr uint64_t PPC_DISC = 0x400000000;
42 static constexpr uint64_t PPC64_DISC = 0x500000000;
43 static constexpr uint64_t RISCV_DISC = 0x600000000;
44 static constexpr uint64_t X86_64_DISC = 0x700000000;
45 static constexpr uint64_t IA_64_DISC = 0x800000000;
46
47 enum class TAG : uint64_t {
48 UNKNOWN = uint64_t(-1),
50 NEEDED = 1,
52 PLTGOT = 3,
53 HASH = 4,
54 STRTAB = 5,
55 SYMTAB = 6,
56 RELA = 7,
57 RELASZ = 8,
58 RELAENT = 9,
59 STRSZ = 10,
60 SYMENT = 11,
61 INIT = 12,
62 FINI = 13,
63 SONAME = 14,
64 RPATH = 15,
66 REL = 17,
67 RELSZ = 18,
68 RELENT = 19,
69 PLTREL = 20,
71 TEXTREL = 22,
72 JMPREL = 23,
78 RUNPATH = 29,
79 FLAGS = 30,
83 RELRSZ = 35,
84 RELR = 36,
85 RELRENT = 37,
86
87 // GNU Extensions
88 GNU_HASH = 0x6FFFFEF5,
89 RELACOUNT = 0x6FFFFFF9,
90 RELCOUNT = 0x6FFFFFFA,
91 FLAGS_1 = 0x6FFFFFFB,
92 VERSYM = 0x6FFFFFF0,
93 VERDEF = 0x6FFFFFFC,
94 VERDEFNUM = 0x6FFFFFFD,
95 VERNEED = 0x6FFFFFFE,
96 VERNEEDNUM = 0x6FFFFFFF,
97
98 // Android Extensions
99 ANDROID_REL_OFFSET = 0x6000000D,
100 ANDROID_REL_SIZE = 0x6000000E,
101 ANDROID_REL = 0x6000000F,
102 ANDROID_RELSZ = 0x60000010,
103 ANDROID_RELA = 0x60000011,
104 ANDROID_RELASZ = 0x60000012,
105 ANDROID_RELR = 0x6FFFE000,
106 ANDROID_RELRSZ = 0x6FFFE001,
107 ANDROID_RELRENT = 0x6FFFE003,
108 ANDROID_RELRCOUNT = 0x6FFFE005,
109
110 /* Mips specific dynamic table entry tags. */
112 MIPS_TIME_STAMP = MIPS_DISC + 0x70000002,
113 MIPS_ICHECKSUM = MIPS_DISC + 0x70000003,
114 MIPS_IVERSION = MIPS_DISC + 0x70000004,
115 MIPS_FLAGS = MIPS_DISC + 0x70000005,
117 MIPS_MSYM = MIPS_DISC + 0x70000007,
118 MIPS_CONFLICT = MIPS_DISC + 0x70000008,
119 MIPS_LIBLIST = MIPS_DISC + 0x70000009,
121 MIPS_CONFLICTNO = MIPS_DISC + 0x7000000b,
122 MIPS_LIBLISTNO = MIPS_DISC + 0x70000010,
123 MIPS_SYMTABNO = MIPS_DISC + 0x70000011,
124 MIPS_UNREFEXTNO = MIPS_DISC + 0x70000012,
125 MIPS_GOTSYM = MIPS_DISC + 0x70000013,
126 MIPS_HIPAGENO = MIPS_DISC + 0x70000014,
127 MIPS_RLD_MAP = MIPS_DISC + 0x70000016,
134 MIPS_DELTA_SYM = MIPS_DISC + 0x7000001D,
138 MIPS_CXX_FLAGS = MIPS_DISC + 0x70000022,
139 MIPS_PIXIE_INIT = MIPS_DISC + 0x70000023,
140 MIPS_SYMBOL_LIB = MIPS_DISC + 0x70000024,
145 MIPS_OPTIONS = MIPS_DISC + 0x70000029,
146 MIPS_INTERFACE = MIPS_DISC + 0x7000002A,
152 MIPS_GP_VALUE = MIPS_DISC + 0x70000030,
154 MIPS_PLTGOT = MIPS_DISC + 0x70000032,
155 MIPS_RWPLT = MIPS_DISC + 0x70000034,
157 MIPS_XHASH = MIPS_DISC + 0x70000036,
158
167
169 HEXAGON_VER = HEXAGON_DISC + 0x70000001,
170 HEXAGON_PLT = HEXAGON_DISC + 0x70000002,
171
172 PPC_GOT = PPC_DISC + 0x70000000,
173 PPC_OPT = PPC_DISC + 0x70000001,
174
175 PPC64_GLINK = PPC64_DISC + 0x70000000,
176 PPC64_OPT = PPC64_DISC + 0x70000003,
177
179
180 X86_64_PLT = X86_64_DISC + 0x70000000,
181 X86_64_PLTSZ = X86_64_DISC + 0x70000001,
183
184 IA_64_PLT_RESERVE = IA_64_DISC + (0x70000000 + 0),
185 IA_64_VMS_SUBTYPE = IA_64_DISC + (0x60000000 + 0),
186 IA_64_VMS_IMGIOCNT = IA_64_DISC + (0x60000000 + 2),
187 IA_64_VMS_LNKFLAGS = IA_64_DISC + (0x60000000 + 8),
189 IA_64_VMS_IDENT = IA_64_DISC + (0x60000000 + 12),
190 IA_64_VMS_NEEDED_IDENT = IA_64_DISC + (0x60000000 + 16),
191 IA_64_VMS_IMG_RELA_CNT = IA_64_DISC + (0x60000000 + 18),
192 IA_64_VMS_SEG_RELA_CNT = IA_64_DISC + (0x60000000 + 20),
194 IA_64_VMS_FIXUP_NEEDED = IA_64_DISC + (0x60000000 + 24),
195 IA_64_VMS_SYMVEC_CNT = IA_64_DISC + (0x60000000 + 26),
196 IA_64_VMS_XLATED = IA_64_DISC + (0x60000000 + 30),
197 IA_64_VMS_STACKSIZE = IA_64_DISC + (0x60000000 + 32),
198 IA_64_VMS_UNWINDSZ = IA_64_DISC + (0x60000000 + 34),
199 IA_64_VMS_UNWIND_CODSEG = IA_64_DISC + (0x60000000 + 36),
201 IA_64_VMS_LINKTIME = IA_64_DISC + (0x60000000 + 40),
202 IA_64_VMS_SEG_NO = IA_64_DISC + (0x60000000 + 42),
203 IA_64_VMS_SYMVEC_OFFSET = IA_64_DISC + (0x60000000 + 44),
204 IA_64_VMS_SYMVEC_SEG = IA_64_DISC + (0x60000000 + 46),
205 IA_64_VMS_UNWIND_OFFSET = IA_64_DISC + (0x60000000 + 48),
206 IA_64_VMS_UNWIND_SEG = IA_64_DISC + (0x60000000 + 50),
207 IA_64_VMS_STRTAB_OFFSET = IA_64_DISC + (0x60000000 + 52),
208 IA_64_VMS_SYSVER_OFFSET = IA_64_DISC + (0x60000000 + 54),
209 IA_64_VMS_IMG_RELA_OFF = IA_64_DISC + (0x60000000 + 56),
210 IA_64_VMS_SEG_RELA_OFF = IA_64_DISC + (0x60000000 + 58),
212 IA_64_VMS_PLTGOT_OFFSET = IA_64_DISC + (0x60000000 + 62),
213 IA_64_VMS_PLTGOT_SEG = IA_64_DISC + (0x60000000 + 64),
214 IA_64_VMS_FPMODE = IA_64_DISC + (0x60000000 + 66),
215 };
216
217 static TAG from_value(uint64_t value, ARCH arch);
218 static uint64_t to_value(TAG tag);
219
220 DynamicEntry() = default;
221 DynamicEntry(const details::Elf64_Dyn& header, ARCH arch);
222 DynamicEntry(const details::Elf32_Dyn& header, ARCH arch);
223
225 tag_(tag), value_(value)
226 {}
227
229 DynamicEntry(const DynamicEntry&) = default;
230 ~DynamicEntry() override = default;
231
232 static std::unique_ptr<DynamicEntry> create(TAG tag, uint64_t value);
233
234 static std::unique_ptr<DynamicEntry> create(TAG tag) {
235 return create(tag, /*value=*/0);
236 }
237
238 virtual std::unique_ptr<DynamicEntry> clone() const {
239 return std::unique_ptr<DynamicEntry>(new DynamicEntry(*this));
240 }
241
244 TAG tag() const {
245 return tag_;
246 }
247
252 uint64_t value() const {
253 return value_;
254 }
255
256 void tag(TAG tag) {
257 tag_ = tag;
258 }
259
260 void value(uint64_t value) {
261 value_ = value;
262 }
263
264 void accept(Visitor& visitor) const override;
265
266 virtual std::ostream& print(std::ostream& os) const;
267
268 std::string to_string() const;
269
270 LIEF_API friend
271 std::ostream& operator<<(std::ostream& os, const DynamicEntry& entry) {
272 return entry.print(os);
273 }
274
275 template<class T>
276 const T* cast() const {
277 static_assert(std::is_base_of<DynamicEntry, T>::value,
278 "Require DynamicEntry inheritance");
279 if (T::classof(this)) {
280 return static_cast<const T*>(this);
281 }
282 return nullptr;
283 }
284
285 template<class T>
286 T* cast() {
287 return const_cast<T*>(static_cast<const DynamicEntry*>(this)->cast<T>());
288 }
289
290 protected:
291 TAG tag_ = TAG::DT_NULL_;
292 uint64_t value_ = 0;
293};
294
296
297}
298}
299#endif
static constexpr uint64_t IA_64_DISC
Definition DynamicEntry.hpp:45
static constexpr uint64_t MIPS_DISC
Definition DynamicEntry.hpp:38
static constexpr uint64_t PPC_DISC
Definition DynamicEntry.hpp:41
DynamicEntry(const details::Elf32_Dyn &header, ARCH arch)
DynamicEntry(const details::Elf64_Dyn &header, ARCH arch)
static constexpr uint64_t AARCH64_DISC
Definition DynamicEntry.hpp:39
TAG
Definition DynamicEntry.hpp:47
@ SYMTAB_SHNDX
Definition DynamicEntry.hpp:82
@ MIPS_IVERSION
Definition DynamicEntry.hpp:114
@ IA_64_VMS_LNKFLAGS
Definition DynamicEntry.hpp:187
@ MIPS_XHASH
Definition DynamicEntry.hpp:157
@ MIPS_ICHECKSUM
Definition DynamicEntry.hpp:113
@ MIPS_RLD_TEXT_RESOLVE_ADDR
Definition DynamicEntry.hpp:149
@ SYMTAB
Definition DynamicEntry.hpp:55
@ HEXAGON_SYMSZ
Definition DynamicEntry.hpp:168
@ FINI_ARRAYSZ
Definition DynamicEntry.hpp:77
@ RELACOUNT
Definition DynamicEntry.hpp:89
@ MIPS_LIBLIST
Definition DynamicEntry.hpp:119
@ MIPS_FLAGS
Definition DynamicEntry.hpp:115
@ ANDROID_REL_SIZE
Definition DynamicEntry.hpp:100
@ ANDROID_RELR
Definition DynamicEntry.hpp:105
@ NEEDED
Definition DynamicEntry.hpp:50
@ HEXAGON_VER
Definition DynamicEntry.hpp:169
@ BIND_NOW
Definition DynamicEntry.hpp:73
@ MIPS_PROTECTED_GOTIDX
Definition DynamicEntry.hpp:144
@ VERNEEDNUM
Definition DynamicEntry.hpp:96
@ RISCV_VARIANT_CC
Definition DynamicEntry.hpp:178
@ RELRSZ
Definition DynamicEntry.hpp:83
@ IA_64_VMS_SYMVEC_OFFSET
Definition DynamicEntry.hpp:203
@ VERDEF
Definition DynamicEntry.hpp:93
@ MIPS_HIPAGENO
Definition DynamicEntry.hpp:126
@ MIPS_TIME_STAMP
Definition DynamicEntry.hpp:112
@ MIPS_PIXIE_INIT
Definition DynamicEntry.hpp:139
@ MIPS_RLD_MAP
Definition DynamicEntry.hpp:127
@ PPC64_OPT
Definition DynamicEntry.hpp:176
@ SONAME
Definition DynamicEntry.hpp:63
@ AARCH64_MEMTAG_HEAP
Definition DynamicEntry.hpp:163
@ MIPS_CXX_FLAGS
Definition DynamicEntry.hpp:138
@ MIPS_DELTA_CLASS_NO
Definition DynamicEntry.hpp:129
@ PPC_OPT
Definition DynamicEntry.hpp:173
@ RELASZ
Definition DynamicEntry.hpp:57
@ MIPS_AUX_DYNAMIC
Definition DynamicEntry.hpp:153
@ IA_64_VMS_SYMVEC_SEG
Definition DynamicEntry.hpp:204
@ PREINIT_ARRAY
Definition DynamicEntry.hpp:80
@ IA_64_VMS_VIR_MEM_BLK_SIZ
Definition DynamicEntry.hpp:188
@ ANDROID_RELRSZ
Definition DynamicEntry.hpp:106
@ MIPS_DYNSTR_ALIGN
Definition DynamicEntry.hpp:147
@ HASH
Definition DynamicEntry.hpp:53
@ HEXAGON_PLT
Definition DynamicEntry.hpp:170
@ IA_64_VMS_UNWIND_CODSEG
Definition DynamicEntry.hpp:199
@ IA_64_VMS_FIXUP_NEEDED
Definition DynamicEntry.hpp:194
@ MIPS_DELTA_INSTANCE
Definition DynamicEntry.hpp:130
@ RELR
Definition DynamicEntry.hpp:84
@ VERNEED
Definition DynamicEntry.hpp:95
@ RELAENT
Definition DynamicEntry.hpp:58
@ MIPS_DELTA_SYM_NO
Definition DynamicEntry.hpp:135
@ MIPS_CONFLICTNO
Definition DynamicEntry.hpp:121
@ FLAGS
Definition DynamicEntry.hpp:79
@ UNKNOWN
Definition DynamicEntry.hpp:48
@ MIPS_INTERFACE_SIZE
Definition DynamicEntry.hpp:148
@ VERSYM
Definition DynamicEntry.hpp:92
@ MIPS_BASE_ADDRESS
Definition DynamicEntry.hpp:116
@ IA_64_VMS_SUBTYPE
Definition DynamicEntry.hpp:185
@ AARCH64_MEMTAG_MODE
Definition DynamicEntry.hpp:162
@ MIPS_COMPACT_SIZE
Definition DynamicEntry.hpp:151
@ STRSZ
Definition DynamicEntry.hpp:59
@ STRTAB
Definition DynamicEntry.hpp:54
@ IA_64_VMS_UNWIND_INFOSEG
Definition DynamicEntry.hpp:200
@ MIPS_SYMTABNO
Definition DynamicEntry.hpp:123
@ MIPS_DELTA_INSTANCE_NO
Definition DynamicEntry.hpp:131
@ IA_64_VMS_PLTGOT_OFFSET
Definition DynamicEntry.hpp:212
@ MIPS_OPTIONS
Definition DynamicEntry.hpp:145
@ MIPS_RLD_VERSION
Definition DynamicEntry.hpp:111
@ MIPS_DELTA_CLASS
Definition DynamicEntry.hpp:128
@ MIPS_GP_VALUE
Definition DynamicEntry.hpp:152
@ MIPS_DELTA_CLASSSYM_NO
Definition DynamicEntry.hpp:137
@ IA_64_VMS_IDENT
Definition DynamicEntry.hpp:189
@ DEBUG_TAG
Definition DynamicEntry.hpp:70
@ AARCH64_MEMTAG_GLOBALS
Definition DynamicEntry.hpp:165
@ MIPS_LOCAL_GOTNO
Definition DynamicEntry.hpp:120
@ IA_64_VMS_LINKTIME
Definition DynamicEntry.hpp:201
@ ANDROID_REL
Definition DynamicEntry.hpp:101
@ ANDROID_RELSZ
Definition DynamicEntry.hpp:102
@ INIT_ARRAY
Definition DynamicEntry.hpp:74
@ IA_64_VMS_XLATED
Definition DynamicEntry.hpp:196
@ IA_64_VMS_UNWINDSZ
Definition DynamicEntry.hpp:198
@ AARCH64_MEMTAG_STACK
Definition DynamicEntry.hpp:164
@ IA_64_VMS_STACKSIZE
Definition DynamicEntry.hpp:197
@ ANDROID_RELRCOUNT
Definition DynamicEntry.hpp:108
@ AARCH64_BTI_PLT
Definition DynamicEntry.hpp:159
@ FLAGS_1
Definition DynamicEntry.hpp:91
@ TEXTREL
Definition DynamicEntry.hpp:71
@ MIPS_LOCALPAGE_GOTIDX
Definition DynamicEntry.hpp:141
@ MIPS_RLD_MAP_REL
Definition DynamicEntry.hpp:156
@ RELENT
Definition DynamicEntry.hpp:68
@ ANDROID_RELASZ
Definition DynamicEntry.hpp:104
@ PLTGOT
Definition DynamicEntry.hpp:52
@ MIPS_DELTA_RELOC
Definition DynamicEntry.hpp:132
@ SYMBOLIC
Definition DynamicEntry.hpp:65
@ IA_64_VMS_UNWIND_SEG
Definition DynamicEntry.hpp:206
@ IA_64_VMS_IMG_RELA_CNT
Definition DynamicEntry.hpp:191
@ ANDROID_REL_OFFSET
Definition DynamicEntry.hpp:99
@ IA_64_VMS_SYMVEC_CNT
Definition DynamicEntry.hpp:195
@ IA_64_VMS_IMGIOCNT
Definition DynamicEntry.hpp:186
@ MIPS_CONFLICT
Definition DynamicEntry.hpp:118
@ RELRENT
Definition DynamicEntry.hpp:85
@ JMPREL
Definition DynamicEntry.hpp:72
@ IA_64_VMS_FIXUP_RELA_CNT
Definition DynamicEntry.hpp:193
@ IA_64_VMS_IMG_RELA_OFF
Definition DynamicEntry.hpp:209
@ AARCH64_VARIANT_PCS
Definition DynamicEntry.hpp:161
@ IA_64_VMS_NEEDED_IDENT
Definition DynamicEntry.hpp:190
@ MIPS_HIDDEN_GOTIDX
Definition DynamicEntry.hpp:143
@ MIPS_PERF_SUFFIX
Definition DynamicEntry.hpp:150
@ RELCOUNT
Definition DynamicEntry.hpp:90
@ PLTRELSZ
Definition DynamicEntry.hpp:51
@ MIPS_DELTA_SYM
Definition DynamicEntry.hpp:134
@ MIPS_GOTSYM
Definition DynamicEntry.hpp:125
@ VERDEFNUM
Definition DynamicEntry.hpp:94
@ AARCH64_PAC_PLT
Definition DynamicEntry.hpp:160
@ MIPS_RWPLT
Definition DynamicEntry.hpp:155
@ IA_64_VMS_SEG_NO
Definition DynamicEntry.hpp:202
@ RELSZ
Definition DynamicEntry.hpp:67
@ ANDROID_RELA
Definition DynamicEntry.hpp:103
@ PPC64_GLINK
Definition DynamicEntry.hpp:175
@ MIPS_MSYM
Definition DynamicEntry.hpp:117
@ RELA
Definition DynamicEntry.hpp:56
@ FINI_ARRAY
Definition DynamicEntry.hpp:75
@ IA_64_VMS_SYSVER_OFFSET
Definition DynamicEntry.hpp:208
@ SYMENT
Definition DynamicEntry.hpp:60
@ MIPS_DELTA_RELOC_NO
Definition DynamicEntry.hpp:133
@ MIPS_INTERFACE
Definition DynamicEntry.hpp:146
@ RUNPATH
Definition DynamicEntry.hpp:78
@ IA_64_VMS_SEG_RELA_OFF
Definition DynamicEntry.hpp:210
@ IA_64_VMS_SEG_RELA_CNT
Definition DynamicEntry.hpp:192
@ IA_64_VMS_FIXUP_RELA_OFF
Definition DynamicEntry.hpp:211
@ IA_64_PLT_RESERVE
Definition DynamicEntry.hpp:184
@ ANDROID_RELRENT
Definition DynamicEntry.hpp:107
@ PLTREL
Definition DynamicEntry.hpp:69
@ X86_64_PLT
Definition DynamicEntry.hpp:180
@ DT_NULL_
Definition DynamicEntry.hpp:49
@ RPATH
Definition DynamicEntry.hpp:64
@ IA_64_VMS_FPMODE
Definition DynamicEntry.hpp:214
@ MIPS_LOCAL_GOTIDX
Definition DynamicEntry.hpp:142
@ REL
Definition DynamicEntry.hpp:66
@ X86_64_PLTSZ
Definition DynamicEntry.hpp:181
@ MIPS_UNREFEXTNO
Definition DynamicEntry.hpp:124
@ IA_64_VMS_UNWIND_OFFSET
Definition DynamicEntry.hpp:205
@ INIT_ARRAYSZ
Definition DynamicEntry.hpp:76
@ PREINIT_ARRAYSZ
Definition DynamicEntry.hpp:81
@ IA_64_VMS_PLTGOT_SEG
Definition DynamicEntry.hpp:213
@ MIPS_DELTA_CLASSSYM
Definition DynamicEntry.hpp:136
@ PPC_GOT
Definition DynamicEntry.hpp:172
@ MIPS_LIBLISTNO
Definition DynamicEntry.hpp:122
@ GNU_HASH
Definition DynamicEntry.hpp:88
@ IA_64_VMS_STRTAB_OFFSET
Definition DynamicEntry.hpp:207
@ INIT
Definition DynamicEntry.hpp:61
@ X86_64_PLTENT
Definition DynamicEntry.hpp:182
@ AARCH64_MEMTAG_GLOBALSSZ
Definition DynamicEntry.hpp:166
@ FINI
Definition DynamicEntry.hpp:62
@ MIPS_SYMBOL_LIB
Definition DynamicEntry.hpp:140
@ MIPS_PLTGOT
Definition DynamicEntry.hpp:154
const T * cast() const
Definition DynamicEntry.hpp:276
virtual std::ostream & print(std::ostream &os) const
void tag(TAG tag)
Definition DynamicEntry.hpp:256
static constexpr uint64_t HEXAGON_DISC
Definition DynamicEntry.hpp:40
virtual std::unique_ptr< DynamicEntry > clone() const
Definition DynamicEntry.hpp:238
~DynamicEntry() override=default
DynamicEntry & operator=(const DynamicEntry &)=default
void accept(Visitor &visitor) const override
static std::unique_ptr< DynamicEntry > create(TAG tag, uint64_t value)
static uint64_t to_value(TAG tag)
static constexpr uint64_t RISCV_DISC
Definition DynamicEntry.hpp:43
std::string to_string() const
TAG tag() const
Tag of the current entry. The most common tags are: DT_NEEDED, DT_INIT, ...
Definition DynamicEntry.hpp:244
void value(uint64_t value)
Definition DynamicEntry.hpp:260
T * cast()
Definition DynamicEntry.hpp:286
uint64_t value() const
Return the entry's value.
Definition DynamicEntry.hpp:252
static constexpr uint64_t PPC64_DISC
Definition DynamicEntry.hpp:42
friend std::ostream & operator<<(std::ostream &os, const DynamicEntry &entry)
Definition DynamicEntry.hpp:271
static std::unique_ptr< DynamicEntry > create(TAG tag)
Definition DynamicEntry.hpp:234
static TAG from_value(uint64_t value, ARCH arch)
DynamicEntry(const DynamicEntry &)=default
static constexpr uint64_t X86_64_DISC
Definition DynamicEntry.hpp:44
DynamicEntry(TAG tag, uint64_t value)
Definition DynamicEntry.hpp:224
Definition Visitor.hpp:210
Definition DynamicEntry.hpp:29
Namespace related to the LIEF's ELF module.
Definition Abstract/Header.hpp:28
const char * to_string(DynamicEntry::TAG e)
ARCH
Definition ELF/enums.hpp:30
LIEF namespace.
Definition Abstract/Binary.hpp:40
#define LIEF_API
Definition visibility.h:41