Lines Matching +full:no +full:- +full:map

9 #include "qemu/host-utils.h"
16 #define ROUND_UP(n, d) (((n) + (d) - 1) & -(0 ? (n) : (d)))
21 return s->gs.base >> 63; in is_system()
24 Elf64_Phdr *elf64_getphdr(void *map) in elf64_getphdr() argument
26 Elf64_Ehdr *ehdr = map; in elf64_getphdr()
27 Elf64_Phdr *phdr = (void *)((uint8_t *)map + ehdr->e_phoff); in elf64_getphdr()
32 Elf64_Half elf_getphdrnum(void *map) in elf_getphdrnum() argument
34 Elf64_Ehdr *ehdr = map; in elf_getphdrnum()
36 return ehdr->e_phnum; in elf_getphdrnum()
43 if (uadd64_overflow(offset, size, &offset) || offset > UINT64_MAX - 3) { in advance_note_offset()
60 Elf64_Phdr *phdr = elf64_getphdr(qe->map); in init_states()
74 qe->has_kernel_gs_base = 1; in init_states()
79 end_offset > qe->size) { in init_states()
80 end_offset = qe->size; in init_states()
84 nhdr = (void *)((uint8_t *)qe->map + offset); in init_states()
90 name = (char *)qe->map + offset; in init_states()
92 if (!advance_note_offset(&offset, nhdr->n_namesz, end_offset)) { in init_states()
96 state = (void *)((uint8_t *)qe->map + offset); in init_states()
98 if (!advance_note_offset(&offset, nhdr->n_descsz, end_offset)) { in init_states()
103 nhdr->n_descsz >= offsetof(QEMUCPUState, kernel_gs_base)) { in init_states()
104 state_size = MIN(state->size, nhdr->n_descsz); in init_states()
108 states->len, state_size); in init_states()
111 * no one has. in init_states()
113 qe->has_kernel_gs_base = 0; in init_states()
119 printf("%u CPU states has been found\n", states->len); in init_states()
121 qe->state_nr = states->len; in init_states()
122 qe->state = (void *)g_ptr_array_free(states, FALSE); in init_states()
129 g_free(qe->state); in exit_states()
134 Elf64_Ehdr *ehdr = qe->map; in check_ehdr()
137 if (sizeof(Elf64_Ehdr) > qe->size) { in check_ehdr()
142 if (memcmp(ehdr->e_ident, ELFMAG, SELFMAG)) { in check_ehdr()
147 if (ehdr->e_ident[EI_CLASS] != ELFCLASS64 || in check_ehdr()
148 ehdr->e_ident[EI_DATA] != ELFDATA2LSB) { in check_ehdr()
149 eprintf("Invalid ELF class or byte order, must be 64-bit LE\n"); in check_ehdr()
153 if (ehdr->e_ident[EI_VERSION] != EV_CURRENT) { in check_ehdr()
158 if (ehdr->e_machine != EM_X86_64) { in check_ehdr()
163 if (ehdr->e_type != ET_CORE) { in check_ehdr()
172 if (ehdr->e_phnum < 2) { in check_ehdr()
177 if (umul64_overflow(ehdr->e_phnum, sizeof(Elf64_Phdr), &phendoff) || in check_ehdr()
178 uadd64_overflow(phendoff, ehdr->e_phoff, &phendoff) || in check_ehdr()
179 phendoff > qe->size) { in check_ehdr()
196 if (fd == -1) { in QEMU_Elf_map()
206 qe->size = st.st_size; in QEMU_Elf_map()
208 qe->map = mmap(NULL, qe->size, PROT_READ | PROT_WRITE, in QEMU_Elf_map()
210 if (qe->map == MAP_FAILED) { in QEMU_Elf_map()
211 eprintf("Failed to map ELF file\n"); in QEMU_Elf_map()
222 qe->gmf = g_mapped_file_new(filename, TRUE, &gerr); in QEMU_Elf_map()
224 eprintf("Failed to map ELF dump file \'%s\'\n", filename); in QEMU_Elf_map()
229 qe->map = g_mapped_file_get_contents(qe->gmf); in QEMU_Elf_map()
230 qe->size = g_mapped_file_get_length(qe->gmf); in QEMU_Elf_map()
239 munmap(qe->map, qe->size); in QEMU_Elf_unmap()
241 g_mapped_file_unref(qe->gmf); in QEMU_Elf_unmap()