Lines Matching defs:entry
60 MapEntry* entry = new MapEntry(start, end, offset, name, name_len);
63 entry->load_base = 0;
64 entry->load_base_read = true;
66 return entry;
70 static inline bool get_val(MapEntry* entry, uintptr_t addr, T* store) {
71 if (addr < entry->start || addr + sizeof(T) > entry->end) {
82 static void read_loadbase(MapEntry* entry) {
83 entry->load_base = 0;
84 entry->load_base_read = true;
85 uintptr_t addr = entry->start;
87 if (!get_val<ElfW(Half)>(entry, addr + offsetof(ElfW(Ehdr), e_phnum), &ehdr.e_phnum)) {
90 if (!get_val<ElfW(Off)>(entry, addr + offsetof(ElfW(Ehdr), e_phoff), &ehdr.e_phoff)) {
96 if (!get_val<ElfW(Word)>(entry, addr + offsetof(ElfW(Phdr), p_type), &phdr.p_type)) {
99 if (!get_val<ElfW(Off)>(entry, addr + offsetof(ElfW(Phdr), p_offset), &phdr.p_offset)) {
102 if (phdr.p_type == PT_LOAD && phdr.p_offset == entry->offset) {
103 if (!get_val<ElfW(Addr)>(entry, addr + offsetof(ElfW(Phdr), p_vaddr), &phdr.p_vaddr)) {
106 entry->load_base = phdr.p_vaddr;
121 MapEntry* entry = parse_line(buffer.data());
122 if (entry == nullptr) {
127 auto it = entries_.find(entry);
129 entries_.insert(entry);
131 delete entry;
139 for (auto* entry : entries_) {
140 delete entry;
160 MapEntry* entry = *it;
161 if (!entry->load_base_read) {
162 read_loadbase(entry);
165 *rel_pc = pc - entry->start + entry->load_base;
167 return entry;