ELFNAME2(exec,fixup)(struct proc *p, struct exec_package *epp)
ELFNAME2(exec,makecmds)(struct proc *p, struct exec_package *epp)
ELFNAME2(exec,fixup)(struct proc *p, struct exec_package *epp){	char	*interp;	int	error;	struct	elf_args *ap;	AuxInfo ai[ELF_AUX_ENTRIES], *a;	Elf_Addr	pos = epp->ep_interp_pos;	if (epp->ep_interp == NULL) {		return (0);	}	interp = (char *)epp->ep_interp;	ap = (struct elf_args *)epp->ep_emul_arg;	if ((error = ELFNAME(load_file)(p, interp, epp, ap, &pos)) != 0) {		free((char *)ap, M_TEMP);		free((char *)interp, M_TEMP);		kill_vmcmds(&epp->ep_vmcmds);		return (error);	}	/*	 * We have to do this ourselves...	 */	error = exec_process_vmcmds(p, epp);	/*	 * Push extra arguments on the stack needed by dynamically	 * linked binaries	 */	if (error == 0) {		a = ai;		a->au_id = AUX_phdr;		a->au_v = ap->arg_phaddr;		a++;		a->au_id = AUX_phent;		a->au_v = ap->arg_phentsize;		a++;		a->au_id = AUX_phnum;		a->au_v = ap->arg_phnum;		a++;		a->au_id = AUX_pagesz;		a->au_v = PAGE_SIZE;		a++;		a->au_id = AUX_base;		a->au_v = ap->arg_interp;		a++;		a->au_id = AUX_flags;		a->au_v = 0;		a++;		a->au_id = AUX_entry;		a->au_v = ap->arg_entry;		a++;		a->au_id = AUX_null;		a->au_v = 0;		a++;		error = copyout(ai, epp->ep_emul_argp, sizeof ai);	}	free((char *)ap, M_TEMP);	free((char *)interp, M_TEMP);	return (error);}