Lines Matching refs:hdr
73 struct hdr {
120 static void gethdr(int, struct hdr *);
121 static void puthdr(int, struct hdr *);
203 struct hdr ihdr, ohdr;
324 gethdr(int fd, struct hdr *hdr)
333 memset(hdr, 0, sizeof(*hdr));
338 hdr->size = sb.st_size;
339 if (!hdr->size)
341 if ((p = mmap(NULL, hdr->size, PROT_READ, MAP_SHARED, fd,
344 for (fmt = F_CNT - 1; !hdr->fmt && fmt; fmt--)
348 if (hdr->size >= sizeof(struct exec) && !N_BADMAG(*ex)) {
349 hdr->fmt = fmt;
355 hdr->flags |= IMPURE;
357 hdr->text = le32toh(ex->a_text);
358 hdr->data = le32toh(ex->a_data);
359 hdr->bss = le32toh(ex->a_bss);
360 hdr->entry = le32toh(ex->a_entry);
362 hdr->org = BTX_PGSIZE;
367 if (hdr->size >= sizeof(Elf32_Ehdr) && IS_ELF(*ee)) {
368 hdr->fmt = fmt;
375 hdr->text = le32toh(ep->p_filesz);
376 hdr->org = le32toh(ep->p_paddr);
378 hdr->flags |= IMPURE;
381 hdr->data = le32toh(ep->p_filesz);
382 hdr->bss = le32toh(ep->p_memsz) -
391 hdr->entry = le32toh(ee->e_entry);
394 if (munmap(p, hdr->size))
402 puthdr(int fd, struct hdr *hdr)
407 switch (hdr->fmt) {
411 hdr->text = N_ALIGN(ex, hdr->text);
412 ex.a_text = htole32(hdr->text);
413 hdr->data = N_ALIGN(ex, hdr->data);
414 ex.a_data = htole32(hdr->data);
415 ex.a_entry = htole32(hdr->entry);
417 hdr->size = N_ALIGN(ex, sizeof(ex));
418 seekx(fd, hdr->size);
422 eh.e.e_entry = htole32(hdr->entry);
423 eh.p[0].p_vaddr = eh.p[0].p_paddr = htole32(hdr->org);
424 eh.p[0].p_filesz = eh.p[0].p_memsz = htole32(hdr->text);
430 eh.p[1].p_filesz = eh.p[1].p_memsz = htole32(hdr->data);
438 hdr->size = sizeof(eh);