They are actually alpha vs. i386/arm/m68k i.e. ecoff vs. aout.
In the only place where we actually tried to handle arm and i386/m68k in
different ways (START_DATA() in coredump handling), the arm variant
works for all of them (i386 and m68k have u.start_code set to 0).
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
int has_dumped = 0;
unsigned long dump_start, dump_size;
struct user dump;
int has_dumped = 0;
unsigned long dump_start, dump_size;
struct user dump;
# define START_DATA(u) (u.start_data)
# define START_DATA(u) (u.start_data)
# define START_DATA(u) ((u.u_tsize << PAGE_SHIFT) + u.start_code)
# define START_DATA(u) ((u.u_tsize << PAGE_SHIFT) + u.start_code)
-#elif defined(__i386__) || defined(__mc68000__) || defined(__arch_um__)
-# define START_DATA(u) (u.u_tsize << PAGE_SHIFT)
#endif
# define START_STACK(u) (u.start_stack)
#endif
# define START_STACK(u) (u.start_stack)
put_user(0, --sp);
if (bprm->loader) {
put_user(0, --sp);
put_user(0, --sp);
if (bprm->loader) {
put_user(0, --sp);
put_user(bprm->loader, --sp);
put_user(bprm->loader, --sp);
}
put_user(bprm->exec, --sp);
}
put_user(bprm->exec, --sp);
#endif
sp -= envc+1;
envp = (char __user * __user *) sp;
sp -= argc+1;
argv = (char __user * __user *) sp;
#endif
sp -= envc+1;
envp = (char __user * __user *) sp;
sp -= argc+1;
argv = (char __user * __user *) sp;
-#if defined(__i386__) || defined(__mc68000__) || defined(__arm__) || defined(__arch_um__)
put_user((unsigned long) envp,--sp);
put_user((unsigned long) argv,--sp);
#endif
put_user((unsigned long) envp,--sp);
put_user((unsigned long) argv,--sp);
#endif
return retval;
/* OK, This is the point of no return */
return retval;
/* OK, This is the point of no return */
SET_AOUT_PERSONALITY(bprm, ex);
#else
set_personality(PER_LINUX);
SET_AOUT_PERSONALITY(bprm, ex);
#else
set_personality(PER_LINUX);