Lines Matching refs:pe

40 libpe_parse_coff_header(PE *pe, char *hdr)  in libpe_parse_coff_header()  argument
62 pe->pe_ch = ch; in libpe_parse_coff_header()
68 return (libpe_parse_section_headers(pe)); in libpe_parse_coff_header()
74 pe->pe_oh = oh; in libpe_parse_coff_header()
86 if (read(pe->pe_fd, tmp, r) != (ssize_t) r) { \ in libpe_parse_coff_header()
87 pe->pe_flags |= LIBPE_F_BAD_SEC_HEADER;\ in libpe_parse_coff_header()
90 return (libpe_parse_section_headers(pe)); \ in libpe_parse_coff_header()
92 if (read(pe->pe_fd, tmp, (n)) != (ssize_t) (n)) { \ in libpe_parse_coff_header()
93 pe->pe_flags |= LIBPE_F_BAD_OPT_HEADER; \ in libpe_parse_coff_header()
111 pe->pe_obj = PE_O_PE32P; in libpe_parse_coff_header()
161 pe->pe_dd = dd; in libpe_parse_coff_header()
177 if (read(pe->pe_fd, tmp, s) != (ssize_t) s) { in libpe_parse_coff_header()
178 pe->pe_flags |= LIBPE_F_BAD_SEC_HEADER; in libpe_parse_coff_header()
184 return (libpe_parse_section_headers(pe)); in libpe_parse_coff_header()
188 libpe_write_pe_header(PE *pe, off_t off) in libpe_write_pe_header() argument
192 if (pe->pe_cmd == PE_C_RDWR && in libpe_write_pe_header()
193 (pe->pe_flags & LIBPE_F_BAD_PE_HEADER) == 0) { in libpe_write_pe_header()
194 assert(pe->pe_dh != NULL); in libpe_write_pe_header()
195 off = lseek(pe->pe_fd, (off_t) pe->pe_dh->dh_lfanew + 4, in libpe_write_pe_header()
204 if ((off = libpe_align(pe, off, 8)) < 0) in libpe_write_pe_header()
208 if (write(pe->pe_fd, tmp, sizeof(tmp)) != (ssize_t) sizeof(tmp)) { in libpe_write_pe_header()
215 pe->pe_flags &= ~LIBPE_F_BAD_PE_HEADER; in libpe_write_pe_header()
218 pe->pe_flags |= LIBPE_F_DIRTY_COFF_HEADER; in libpe_write_pe_header()
219 pe->pe_flags |= LIBPE_F_DIRTY_OPT_HEADER; in libpe_write_pe_header()
225 libpe_write_coff_header(PE *pe, off_t off) in libpe_write_coff_header() argument
240 if (pe->pe_cmd == PE_C_RDWR) { in libpe_write_coff_header()
241 assert((pe->pe_flags & LIBPE_F_SPECIAL_FILE) == 0); in libpe_write_coff_header()
243 if ((pe->pe_flags & LIBPE_F_DIRTY_COFF_HEADER) == 0 && in libpe_write_coff_header()
244 (pe->pe_flags & LIBPE_F_BAD_COFF_HEADER) == 0) { in libpe_write_coff_header()
245 if (lseek(pe->pe_fd, (off_t) sizeof(PE_CoffHdr), in libpe_write_coff_header()
251 assert(pe->pe_ch != NULL); in libpe_write_coff_header()
252 ch = pe->pe_ch; in libpe_write_coff_header()
257 if (lseek(pe->pe_fd, off, SEEK_SET) < 0) { in libpe_write_coff_header()
263 if (pe->pe_ch == NULL) { in libpe_write_coff_header()
268 pe->pe_ch = ch; in libpe_write_coff_header()
274 if (pe->pe_obj == PE_O_PE32P) in libpe_write_coff_header()
280 ch = pe->pe_ch; in libpe_write_coff_header()
285 if (pe->pe_obj == PE_O_PE32) { in libpe_write_coff_header()
290 } else if (pe->pe_obj == PE_O_PE32P) { in libpe_write_coff_header()
304 if (pe->pe_obj == PE_O_PE32 || pe->pe_obj == PE_O_PE32P) in libpe_write_coff_header()
307 ch->ch_nsec = pe->pe_nscn; in libpe_write_coff_header()
309 STAILQ_FOREACH(ps, &pe->pe_scn, ps_next) { in libpe_write_coff_header()
314 ch->ch_nsym = pe->pe_nsym; in libpe_write_coff_header()
317 if (pe->pe_obj == PE_O_PE32 || pe->pe_obj == PE_O_PE32P) { in libpe_write_coff_header()
331 if (pe->pe_flags & LIBPE_F_BAD_OPT_HEADER) { in libpe_write_coff_header()
332 if (pe->pe_obj == PE_O_PE32) in libpe_write_coff_header()
334 else if (pe->pe_obj == PE_O_PE32P) in libpe_write_coff_header()
351 if (write(pe->pe_fd, tmp, sizeof(PE_CoffHdr)) != in libpe_write_coff_header()
359 pe->pe_flags &= ~LIBPE_F_DIRTY_COFF_HEADER; in libpe_write_coff_header()
360 pe->pe_flags &= ~LIBPE_F_BAD_COFF_HEADER; in libpe_write_coff_header()
361 pe->pe_flags |= LIBPE_F_DIRTY_SEC_HEADER; in libpe_write_coff_header()
370 if (pe->pe_cmd == PE_C_RDWR) { in libpe_write_coff_header()
371 if ((pe->pe_flags & LIBPE_F_DIRTY_OPT_HEADER) == 0 && in libpe_write_coff_header()
372 (pe->pe_flags & LIBPE_F_BAD_OPT_HEADER) == 0) { in libpe_write_coff_header()
373 if (lseek(pe->pe_fd, (off_t) ch->ch_optsize, in libpe_write_coff_header()
384 if (pe->pe_oh == NULL) { in libpe_write_coff_header()
389 pe->pe_oh = oh; in libpe_write_coff_header()
391 oh = pe->pe_oh; in libpe_write_coff_header()
393 if (pe->pe_obj == PE_O_PE32) in libpe_write_coff_header()
418 oh->oh_hdrsize = roundup(off + ch->ch_optsize + pe->pe_nscn * in libpe_write_coff_header()
420 oh->oh_imgsize = roundup(pe->pe_rvamax, oh->oh_secalign); in libpe_write_coff_header()
431 if (libpe_pad(pe, ch->ch_optsize - p) < 0) { \ in libpe_write_coff_header()
437 if (write(pe->pe_fd, tmp, (n)) != (ssize_t) (n)) { \ in libpe_write_coff_header()
451 pe->pe_obj = PE_O_PE32P; in libpe_write_coff_header()
497 if (pe->pe_dd == NULL) { in libpe_write_coff_header()
502 pe->pe_dd = dd; in libpe_write_coff_header()
505 dd = pe->pe_dd; in libpe_write_coff_header()
522 if (libpe_pad(pe, ch->ch_optsize - p) < 0) { in libpe_write_coff_header()
530 pe->pe_flags &= ~LIBPE_F_DIRTY_OPT_HEADER; in libpe_write_coff_header()
531 pe->pe_flags &= ~LIBPE_F_BAD_OPT_HEADER; in libpe_write_coff_header()
532 pe->pe_flags |= LIBPE_F_DIRTY_SEC_HEADER; in libpe_write_coff_header()