MCPcopy Create free account
hub / github.com/F-Stack/f-stack / elf_set_add

Function elf_set_add

freebsd/kern/link_elf.c:205–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203#endif
204
205static void
206elf_set_add(struct elf_set_head *list, Elf_Addr start, Elf_Addr stop, Elf_Addr base)
207{
208 struct elf_set *set, *iter;
209
210 set = malloc(sizeof(*set), M_LINKER, M_WAITOK);
211 set->es_start = start;
212 set->es_stop = stop;
213 set->es_base = base;
214
215 TAILQ_FOREACH(iter, list, es_link) {
216 KASSERT((set->es_start < iter->es_start && set->es_stop < iter->es_stop) ||
217 (set->es_start > iter->es_start && set->es_stop > iter->es_stop),
218 ("linker sets intersection: to insert: 0x%jx-0x%jx; inserted: 0x%jx-0x%jx",
219 (uintmax_t)set->es_start, (uintmax_t)set->es_stop,
220 (uintmax_t)iter->es_start, (uintmax_t)iter->es_stop));
221
222 if (iter->es_start > set->es_start) {
223 TAILQ_INSERT_BEFORE(iter, set, es_link);
224 break;
225 }
226 }
227
228 if (iter == NULL)
229 TAILQ_INSERT_TAIL(list, set, es_link);
230}
231
232static int
233elf_set_find(struct elf_set_head *list, Elf_Addr addr, Elf_Addr *start, Elf_Addr *base)

Callers 2

parse_dpcpuFunction · 0.85
parse_vnetFunction · 0.85

Calls 1

mallocFunction · 0.85

Tested by

no test coverage detected