Home | History | Annotate | Download | only in src

Lines Matching refs:ei

40     struct elf_image* ei, unw_word_t addr, uint8_t* buffer, size_t bytes, bool string_read) {
41 struct map_info* map = ei->u.memory.map;
42 unw_accessors_t* a = unw_get_accessors (ei->u.memory.as);
50 if ((*a->access_mem) (ei->u.memory.as, addr & ~(sizeof(unw_word_t) - 1), &data_word,
51 0, ei->u.memory.as_arg) != 0) {
73 if ((*a->access_mem) (ei->u.memory.as, addr, &data_word, 0, ei->u.memory.as_arg) != 0) {
93 if ((*a->access_mem) (ei->u.memory.as, addr, &data_word, 0, ei->u.memory.as_arg) != 0) {
111 static bool elf_w (section_table_offset) (struct elf_image* ei, Elf_W(Ehdr)* ehdr, Elf_W(Off)* offset) {
112 GET_EHDR_FIELD(ei, ehdr, e_shoff, true);
113 GET_EHDR_FIELD(ei, ehdr, e_shentsize, true);
114 GET_EHDR_FIELD(ei, ehdr, e_shnum, true);
116 uintptr_t size = ei->u.memory.map->end - ei->u.memory.map->start;
129 struct elf_image* ei, int section, Elf_W(Ehdr)* ehdr, Elf_W(Off)* offset) {
130 GET_EHDR_FIELD(ei, ehdr, e_shoff, true);
131 GET_EHDR_FIELD(ei, ehdr, e_shentsize, true);
133 uintptr_t size = ei->u.memory.map->end - ei->u.memory.map->start;
142 GET_SHDR_FIELD(ei, str_soff, &shdr, sh_offset);
143 GET_SHDR_FIELD(ei, str_soff, &shdr, sh_size);
157 unw_addr_space_t as, unw_word_t ip, struct elf_image* ei, Elf_W(Addr) load_offset,
160 if (!elf_w (section_table_offset) (ei, ehdr, &shdr_offset)) {
164 GET_EHDR_FIELD(ei, ehdr, e_shnum, true);
165 GET_EHDR_FIELD(ei, ehdr, e_shentsize, true);
169 GET_SHDR_FIELD(ei, shdr_offset, &shdr, sh_type);
174 GET_SHDR_FIELD(ei, shdr_offset, &shdr, sh_link);
177 if (!elf_w (string_table_offset) (ei, shdr.sh_link, ehdr, &strtab_offset)) {
181 GET_SHDR_FIELD(ei, shdr_offset, &shdr, sh_offset);
182 GET_SHDR_FIELD(ei, shdr_offset, &shdr, sh_size);
183 GET_SHDR_FIELD(ei, shdr_offset, &shdr, sh_entsize);
193 GET_SYM_FIELD(ei, sym_offset, &sym, st_info);
194 GET_SYM_FIELD(ei, sym_offset, &sym, st_shndx);
197 GET_SYM_FIELD(ei, sym_offset, &sym, st_value);
207 GET_SYM_FIELD(ei, sym_offset, &sym, st_size);
209 GET_SYM_FIELD(ei, sym_offset, &sym, st_name);
210 uintptr_t size = ei->u.memory.map->end - ei->u.memory.map->start;
218 ei, ei->u.memory.map->start + strname_offset,
248 struct elf_image* ei, unsigned long segbase, unsigned long mapoff,
250 GET_EHDR_FIELD(ei, ehdr, e_phoff, true);
251 GET_EHDR_FIELD(ei, ehdr, e_phnum, true);
257 GET_PHDR_FIELD(ei, offset, &phdr, p_type);
259 GET_PHDR_FIELD(ei, offset, &phdr, p_offset);
261 GET_PHDR_FIELD(ei, offset, &phdr, p_vaddr);
274 static Elf_W(Shdr)* elf_w (section_table) (struct elf_image* ei) {
275 Elf_W(Ehdr)* ehdr = ei->u.mapped.image;
277 if (soff + ehdr->e_shnum * ehdr->e_shentsize > ei->u.mapped.size) {
280 (unsigned long) ei->u.mapped.size);
284 return (Elf_W(Shdr) *) ((char *) ei->u.mapped.image + soff);
287 static char* elf_w (string_table) (struct elf_image* ei, int section) {
288 Elf_W(Ehdr)* ehdr = ei->u.mapped.image;
290 if (str_soff + ehdr->e_shentsize > ei->u.mapped.size) {
293 (unsigned long) ei->u.mapped.size);
296 Elf_W(Shdr)* str_shdr = (Elf_W(Shdr) *) ((char *) ei->u.mapped.image + str_soff);
298 if (str_shdr->sh_offset + str_shdr->sh_size > ei->u.mapped.size) {
301 (unsigned long) ei->u.mapped.size);
306 return (char*) ((uintptr_t) ei->u.mapped.image + str_shdr->sh_offset);
310 unw_addr_space_t as, unw_word_t ip, struct elf_image* ei, Elf_W(Addr) load_offset,
313 Elf_W(Shdr)* shdr = elf_w (section_table) (ei);
318 Elf_W(Ehdr)* ehdr = ei->u.mapped.image;
325 Elf_W(Sym)* symtab = (Elf_W(Sym) *) ((char *) ei->u.mapped.image + shdr->sh_offset);
328 char* strtab = elf_w (string_table) (ei, shdr->sh_link);
350 if (str_name > (char*) ei->u.mapped.image + ei->u.mapped.size ||
357 uintptr_t max_size = (uintptr_t) str_name - (uintptr_t) ei->u.mapped.image;
390 struct elf_image *ei, unsigned long segbase, unsigned long mapoff, Elf_W(Addr)* load_offset) {
391 Elf_W(Ehdr) *ehdr = ei->u.mapped.image;
392 Elf_W(Phdr) *phdr = (Elf_W(Phdr) *) ((char *) ei->u.mapped.image + ehdr->e_phoff);
407 unw_addr_space_t as, unw_word_t ip, struct elf_image *ei, Elf_W(Addr) load_offset,
409 if (!ei->valid)
420 if (ei->mapped) {
421 return elf_w (lookup_symbol_mapped) (as, ip, ei, load_offset, buf, buf_len, offp);
423 return elf_w (lookup_symbol_memory) (as, ip, ei, load_offset, buf, buf_len, offp, ehdr);
428 struct elf_image* ei, unsigned long segbase, unsigned long mapoff,
430 if (ei->mapped) {
431 return elf_w (get_load_offset_mapped) (ei, segbase, mapoff, load_offset);
433 return elf_w (get_load_offset_memory) (ei, segbase, mapoff, ehdr, load_offset);
471 static bool elf_w (extract_minidebuginfo) (struct elf_image* ei, struct elf_image* mdi, Elf_W(Ehdr)* ehdr) {
472 Elf_W(Ehdr)* ehdr = ei->image;
480 if (!ei->valid) {
484 shdr = elf_w (section_table) (ei);
489 strtab = elf_w (string_table) (ei, ehdr->e_shstrndx);
496 if (shdr->sh_offset + shdr->sh_size > ei->size) {
499 (unsigned long) ei->size);
505 compressed = ((uint8_t *) ei->image) + shdr->sh_offset;
546 static bool elf_w (extract_minidebuginfo) (struct elf_image* ei, struct elf_image* mdi, Elf_W(Ehdr)* ehdr) {
554 unw_addr_space_t as, struct elf_image* ei, unsigned long segbase, unsigned long mapoff,
559 if (!elf_w (get_load_offset) (ei, segbase, mapoff, &ehdr, &load_offset)) {
563 if (elf_w (lookup_symbol) (as, ip, ei, load_offset, buf, buf_len, offp, &ehdr) != 0) {
570 if (elf_w (extract_minidebuginfo) (ei, &mdi, &ehdr)) {
587 struct elf_image ei;
589 if (tdep_get_elf_image(as, &ei, pid, ip, &segbase, &mapoff, NULL, as_arg) < 0) {
593 return elf_w (get_proc_name_in_image) (as, &ei, segbase, mapoff, ip, buf, buf_len, offp);
596 HIDDEN bool elf_w (get_load_base) (struct elf_image* ei, unw_word_t mapoff, unw_word_t* load_base) {
597 if (!ei->valid) {
601 if (ei->mapped) {
602 Elf_W(Ehdr)* ehdr = ei->u.mapped.image;
603 Elf_W(Phdr)* phdr = (Elf_W(Phdr)*) ((char*) ei->u.mapped.image + ehdr->e_phoff);
614 GET_EHDR_FIELD(ei, &ehdr, e_phnum, false);
615 GET_EHDR_FIELD(ei, &ehdr, e_phoff, false);
620 GET_PHDR_FIELD(ei, offset, &phdr, p_type);
621 GET_PHDR_FIELD(ei, offset, &phdr, p_offset);
623 GET_PHDR_FIELD(ei, offset, &phdr, p_vaddr);