Lines Matching defs:interp
60 PHDR_CMD_T_INTERP = 9, /* phdr:interp */
266 * interp - NULL, or variable to be filled in with information
270 locate_interp(elfedit_obj_state_t *obj_state, INTERP_STATE *interp)
279 if (interp == NULL)
280 interp = &local_interp;
288 interp->phndx = phndx;
289 interp->phdr = phdr + phndx;
311 (interp->phdr->p_offset >= strsec->sec_shdr->sh_offset) &&
312 ((interp->phdr->p_offset + interp->phdr->p_filesz) <=
315 interp->sec = strsec;
317 interp->stroff = interp->phdr->p_offset -
319 interp->str = ((char *)strsec->sec_data->d_buf) +
320 interp->stroff;
321 return (interp->str);
417 INTERP_STATE interp;
419 (void) locate_interp(argstate->obj_state, &interp);
423 interp.sec->sec_name, interp.str);
426 elfedit_printf(MSG_ORIG(MSG_FMT_STRNL), interp.str);
430 EC_WORD(interp.stroff));
505 * is given to phdr:interp to change the interpreter.
512 INTERP_STATE interp;
517 Word str_offset; /* Offset in strsec to new interp str */
518 int str_found = 0; /* True when we have new interp str */
519 Word str_size; /* Size of new interp string + NULL */
525 (void) locate_interp(obj_state, &interp);
526 strsec = interp.sec;
527 str_offset = interp.stroff;
533 if (strcmp(interp.str, argstate->argv[0]) == 0) {
536 EC_WORD(str_offset), interp.str);
543 * section must be named ".interp". Hence, this is a rare case
545 * of its contents. .interp is typically sized to just fit
550 * PT_INTERP does not reference the .interp section. This will happen
552 * too big to fit in .interp, in which case we will use the
555 * Given the above facts, our next step is to locate the .interp
559 * - The name is ".interp".
584 /* .interp section found, and has room */
610 * If the above did not find a string within the .interp section,
639 interp.phdr->p_offset = strsec->sec_shdr->sh_offset + str_offset;
640 interp.phdr->p_filesz = str_size;
643 EC_WORD(interp.phndx), EC_XWORD(interp.phdr->p_offset),
644 EC_XWORD(interp.phdr->p_filesz));
1247 /* phdr:interp */
1367 /* phdr:interp */