MCPcopy Create free account
hub / github.com/Bareflank/hypervisor / load_phdr_table

Function load_phdr_table

kernel/tests/src/ext_t/behavior.cpp:157–213  ·  view source on GitHub ↗

<!-- description --> @brief Loads the initial state of the program header table. <!-- inputs/outputs --> @param mut_phdr_table the program header table to initialize @param elf_file_buf the ELF file to use

Source from the content-addressed store, hash-verified

155 /// @param elf_file_buf the ELF file to use
156 ///
157 constexpr void
158 load_phdr_table(phdr_table_t &mut_phdr_table, elf_file_buf_t const &elf_file_buf) noexcept
159 {
160 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_type = bfelf::PT_LOAD.get();
161 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_flags = (bfelf::PF_X | bfelf::PF_R).get();
162 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_offset = elf_file_buf.data();
163 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_vaddr = PT_LOAD_RE_VADDR.get();
164 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_paddr = PT_LOAD_RE_PADDR.get();
165 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_filesz = PT_LOAD_RE_FILSZ.get();
166 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_memsz = PT_LOAD_RE_MEMSZ.get();
167 mut_phdr_table.at_if(PHDR_PT_LOAD_RE_IDX)->p_align = HYPERVISOR_PAGE_SIZE.get();
168
169 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_type = bfelf::PT_LOAD.get();
170 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_flags = bfelf::PF_R.get();
171 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_offset = elf_file_buf.data();
172 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_vaddr = PT_LOAD_RO_VADDR.get();
173 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_paddr = PT_LOAD_RO_PADDR.get();
174 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_filesz = PT_LOAD_RO_FILSZ.get();
175 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_memsz = PT_LOAD_RO_MEMSZ.get();
176 mut_phdr_table.at_if(PHDR_PT_LOAD_RO_IDX)->p_align = HYPERVISOR_PAGE_SIZE.get();
177
178 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_type = bfelf::PT_LOAD.get();
179 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_flags = (bfelf::PF_W | bfelf::PF_R).get();
180 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_offset = elf_file_buf.data();
181 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_vaddr = PT_LOAD_RW_VADDR.get();
182 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_paddr = PT_LOAD_RW_PADDR.get();
183 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_filesz = PT_LOAD_RW_FILSZ.get();
184 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_memsz = PT_LOAD_RW_MEMSZ.get();
185 mut_phdr_table.at_if(PHDR_PT_LOAD_RW_IDX)->p_align = HYPERVISOR_PAGE_SIZE.get();
186
187 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_type = bfelf::PT_LOAD.get();
188 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_flags = (bfelf::PF_W | bfelf::PF_R).get();
189 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_offset = elf_file_buf.data();
190 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_vaddr = PT_LOAD_TLS_VADDR.get();
191 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_paddr = PT_LOAD_TLS_PADDR.get();
192 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_filesz = PT_LOAD_TLS_FILSZ.get();
193 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_memsz = PT_LOAD_TLS_MEMSZ.get();
194 mut_phdr_table.at_if(PHDR_PT_LOAD_TLS_IDX)->p_align = HYPERVISOR_PAGE_SIZE.get();
195
196 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_type = bfelf::PT_TLS.get();
197 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_flags = (bfelf::PF_W | bfelf::PF_R).get();
198 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_offset = elf_file_buf.data();
199 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_vaddr = PT_TLS_VADDR.get();
200 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_paddr = PT_TLS_PADDR.get();
201 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_filesz = PT_TLS_FILSZ.get();
202 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_memsz = PT_TLS_MEMSZ.get();
203 mut_phdr_table.at_if(PHDR_PT_TLS_IDX)->p_align = {};
204
205 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_type = bfelf::PT_GNU_STACK.get();
206 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_flags = (bfelf::PF_W | bfelf::PF_R).get();
207 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_offset = elf_file_buf.data();
208 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_vaddr = PT_GNU_STACK_VADDR.get();
209 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_paddr = PT_GNU_STACK_PADDR.get();
210 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_filesz = PT_GNU_STACK_FILSZ.get();
211 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_memsz = PT_GNU_STACK_MEMSZ.get();
212 mut_phdr_table.at_if(PHDR_PT_GNU_STACK_IDX)->p_align = {};
213 }
214

Callers 1

behavior.cppFile · 0.85

Calls 1

dataMethod · 0.45

Tested by

no test coverage detected