LIEF: Library to Instrument Executable Formats Version 0.17.0
|
Loading...
Searching...
No Matches
Go to the documentation of this file.
16#ifndef LIEF_PE_LOAD_CONFIGURATION_CHPE_METADATA_ARM64_H
17#define LIEF_PE_LOAD_CONFIGURATION_CHPE_METADATA_ARM64_H
31 public:
struct range_entry_t {
34 static constexpr uint32_t TYPE_MASK = 3;
41 uint32_t start_offset = 0;
47 uint32_t
start()
const {
50 return start_offset & ~TYPE_MASK;
55 return TYPE(start_offset & TYPE_MASK);
57 uint32_t
end()
const {
60 return start() + length;
63 struct redirection_entry_t {
70 using range_entries_t = std::vector<range_entry_t>;
71 using it_range_entries = ref_iterator<range_entries_t&>;
72 using it_const_range_entries = const_ref_iterator<const range_entries_t&>;
74 using redirection_entries_t = std::vector<redirection_entry_t>;
75 using it_redirection_entries = ref_iterator<redirection_entries_t&>;
76 using it_const_redirection_entries = const_ref_iterator<const redirection_entries_t&>;
79 CHPEMetadata(KIND::ARM64, version)
83 CHPEMetadataARM64&
operator=(
const CHPEMetadataARM64&) =
default;
86 CHPEMetadataARM64&
operator=(CHPEMetadataARM64&&) =
default;
88 std::unique_ptr<CHPEMetadata>
clone()
const override {
89 return std::unique_ptr<CHPEMetadataARM64>(
new CHPEMetadataARM64(*
this));
92 static std::unique_ptr<CHPEMetadataARM64>
parse(
93 Parser& ctx, BinaryStream& stream, uint32_t version);
101 return code_map_rva_;
106 return code_map_cnt_;
110 return code_ranges_to_ep_;
114 return redirection_metadata_;
118 return os_arm64x_dispatch_call_no_redirect_;
122 return os_arm64x_dispatch_ret_;
126 return os_arm64x_dispatch_call_;
130 return os_arm64x_dispatch_icall_;
134 return os_arm64x_dispatch_icall_cfg_;
138 return alternate_ep_;
146 return code_ranges_to_ep_cnt_;
150 return redirection_metadata_cnt_;
154 return get_x64_information_function_pointer_;
158 return set_x64_information_function_pointer_;
163 return extra_rfe_table_;
168 return extra_rfe_table_size_;
172 return os_arm64x_dispatch_fptr_;
176 return aux_iat_copy_;
180 return aux_delay_import_;
184 return aux_delay_import_copy_;
188 return bitfield_info_;
192 return range_entries_;
196 return range_entries_;
200 return redirection_entries_;
204 return redirection_entries_;
208 code_map_rva_ = value;
213 code_map_cnt_ = value;
218 code_ranges_to_ep_ = value;
223 redirection_metadata_ = value;
228 os_arm64x_dispatch_call_no_redirect_ = value;
233 os_arm64x_dispatch_ret_ = value;
238 os_arm64x_dispatch_call_ = value;
243 os_arm64x_dispatch_icall_ = value;
248 os_arm64x_dispatch_icall_cfg_ = value;
253 alternate_ep_ = value;
263 code_ranges_to_ep_cnt_ = value;
268 redirection_metadata_cnt_ = value;
273 get_x64_information_function_pointer_ = value;
278 set_x64_information_function_pointer_ = value;
283 extra_rfe_table_ = value;
288 extra_rfe_table_size_ = value;
293 os_arm64x_dispatch_fptr_ = value;
298 aux_iat_copy_ = value;
303 aux_delay_import_ = value;
308 aux_delay_import_copy_ = value;
313 bitfield_info_ = value;
317 static bool classof(
const CHPEMetadata* meta) {
318 return meta->
kind() == KIND::ARM64;
326 uint32_t code_map_rva_ = 0;
327 uint32_t code_map_cnt_ = 0;
328 uint32_t code_ranges_to_ep_ = 0;
329 uint32_t redirection_metadata_ = 0;
330 uint32_t os_arm64x_dispatch_call_no_redirect_ = 0;
331 uint32_t os_arm64x_dispatch_ret_ = 0;
332 uint32_t os_arm64x_dispatch_call_ = 0;
333 uint32_t os_arm64x_dispatch_icall_ = 0;
334 uint32_t os_arm64x_dispatch_icall_cfg_ = 0;
335 uint32_t alternate_ep_ = 0;
336 uint32_t aux_iat_ = 0;
337 uint32_t code_ranges_to_ep_cnt_ = 0;
338 uint32_t redirection_metadata_cnt_ = 0;
339 uint32_t get_x64_information_function_pointer_ = 0;
340 uint32_t set_x64_information_function_pointer_ = 0;
341 uint32_t extra_rfe_table_ = 0;
342 uint32_t extra_rfe_table_size_ = 0;
343 uint32_t os_arm64x_dispatch_fptr_ = 0;
344 uint32_t aux_iat_copy_ = 0;
345 uint32_t aux_delay_import_ = 0;
346 uint32_t aux_delay_import_copy_ = 0;
347 uint32_t bitfield_info_ = 0;
349 range_entries_t range_entries_;
350 redirection_entries_t redirection_entries_;
Namespace related to the LIEF's PE module.
Definition Abstract/Header.hpp:32
const char * to_string(AuxiliaryWeakExternal::CHARACTERISTICS e)
LIEF namespace.
Definition Abstract/Binary.hpp:36
result< ok_t > ok_error_t
Opaque structure that is used by LIEF to avoid writing result<void> f(...). Instead,...
Definition errors.hpp:109
TYPE
Definition MetadataARM64.hpp:36
TYPE type() const
Architecture for this range.
Definition MetadataARM64.hpp:54
uint32_t end() const
End of the range (RVA)
Definition MetadataARM64.hpp:59
uint32_t start() const
Start of the range (RVA)
Definition MetadataARM64.hpp:49
#define LIEF_API
Definition visibility.h:41