Lines Matching defs:hdr
67 struct hdr {
114 static void gethdr(int, struct hdr *);
115 static void puthdr(int, struct hdr *);
204 struct hdr ihdr, ohdr;
325 gethdr(int fd, struct hdr *hdr)
334 memset(hdr, 0, sizeof(*hdr));
339 hdr->size = sb.st_size;
340 if (!hdr->size)
342 if ((p = mmap(NULL, hdr->size, PROT_READ, MAP_SHARED, fd,
345 for (fmt = F_CNT - 1; !hdr->fmt && fmt; fmt--)
349 if (hdr->size >= sizeof(struct exec) && !N_BADMAG(*ex)) {
350 hdr->fmt = fmt;
356 hdr->flags |= IMPURE;
358 hdr->text = le32toh(ex->a_text);
359 hdr->data = le32toh(ex->a_data);
360 hdr->bss = le32toh(ex->a_bss);
361 hdr->entry = le32toh(ex->a_entry);
363 hdr->org = BTX_PGSIZE;
368 if (hdr->size >= sizeof(Elf32_Ehdr) && IS_ELF(*ee)) {
369 hdr->fmt = fmt;
376 hdr->text = le32toh(ep->p_filesz);
377 hdr->org = le32toh(ep->p_paddr);
379 hdr->flags |= IMPURE;
382 hdr->data = le32toh(ep->p_filesz);
383 hdr->bss = le32toh(ep->p_memsz) -
392 hdr->entry = le32toh(ee->e_entry);
395 if (munmap(p, hdr->size))
403 puthdr(int fd, struct hdr *hdr)
408 switch (hdr->fmt) {
412 hdr->text = N_ALIGN(ex, hdr->text);
413 ex.a_text = htole32(hdr->text);
414 hdr->data = N_ALIGN(ex, hdr->data);
415 ex.a_data = htole32(hdr->data);
416 ex.a_entry = htole32(hdr->entry);
418 hdr->size = N_ALIGN(ex, sizeof(ex));
419 seekx(fd, hdr->size);
423 eh.e.e_entry = htole32(hdr->entry);
424 eh.p[0].p_vaddr = eh.p[0].p_paddr = htole32(hdr->org);
425 eh.p[0].p_filesz = eh.p[0].p_memsz = htole32(hdr->text);
431 eh.p[1].p_filesz = eh.p[1].p_memsz = htole32(hdr->data);
439 hdr->size = sizeof(eh);