41 element_t(HEADER_KEYS key,
const std::string& value) :
42 key(key), value(
const_cast<std::string*
>(&value)) {}
45 std::string* value =
nullptr;
47 using magic_t = std::array<uint8_t, 4>;
48 using key_values_t = std::map<HEADER_KEYS, std::string>;
53 using keys_t = std::vector<HEADER_KEYS>;
54 using values_t = std::vector<std::string>;
66 LIEF_LOCAL
Header(
const T* header);
74 uint32_t checksum()
const;
76 INSTRUCTION_SETS instruction_set()
const;
80 uint32_t nb_dex_files()
const;
83 uint32_t oat_dex_files_offset()
const;
85 uint32_t executable_offset()
const;
86 uint32_t i2i_bridge_offset()
const;
87 uint32_t i2c_code_bridge_offset()
const;
88 uint32_t jni_dlsym_lookup_offset()
const;
90 uint32_t quick_generic_jni_trampoline_offset()
const;
91 uint32_t quick_imt_conflict_trampoline_offset()
const;
92 uint32_t quick_resolution_trampoline_offset()
const;
93 uint32_t quick_to_interpreter_bridge_offset()
const;
95 int32_t image_patch_delta()
const;
97 uint32_t image_file_location_oat_checksum()
const;
98 uint32_t image_file_location_oat_data_begin()
const;
100 uint32_t key_value_size()
const;
106 values_t values()
const;
108 const std::string* get(HEADER_KEYS key)
const;
109 std::string* get(HEADER_KEYS key);
111 Header& set(HEADER_KEYS key,
const std::string& value);
113 const std::string* operator[](HEADER_KEYS key)
const;
114 std::string* operator[](HEADER_KEYS key);
116 void magic(
const magic_t& magic);
118 void accept(
Visitor& visitor)
const override;
121 LIEF_API
friend std::ostream& operator<<(std::ostream& os,
const Header& hdr);
125 oat_version_t version_ = 0;
126 uint32_t checksum_ = 0;
127 INSTRUCTION_SETS instruction_set_ = INSTRUCTION_SETS::INST_SET_NONE;
128 uint32_t instruction_set_features_bitmap_ = 0;
129 uint32_t dex_file_count_ = 0;
130 uint32_t oat_dex_files_offset_ = 0;
131 uint32_t executable_offset_ = 0;
132 uint32_t i2i_bridge_offset_ = 0;
133 uint32_t i2c_code_bridge_offset_ = 0;
134 uint32_t jni_dlsym_lookup_offset_ = 0;
136 uint32_t quick_generic_jni_trampoline_offset_ = 0;
137 uint32_t quick_imt_conflict_trampoline_offset_ = 0;
138 uint32_t quick_resolution_trampoline_offset_ = 0;
139 uint32_t quick_to_interpreter_bridge_offset_ = 0;
141 int32_t image_patch_delta_ = 0;
143 uint32_t image_file_location_oat_checksum_ = 0;
144 uint32_t image_file_location_oat_data_begin_ = 0;
146 uint32_t key_value_store_size_ = 0;
148 key_values_t dex2oat_context_;