On 14.06.2011, at 19:36, Michael S. Tsirkin wrote: > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > --- > linux-user/flatload.c | 10 ++++++---- > linux-user/linuxload.c | 25 +------------------------ > linux-user/main.c | 6 +++--- > linux-user/signal.c | 5 ----- > linux-user/syscall.c | 6 ------ > 5 files changed, 10 insertions(+), 42 deletions(-) > > diff --git a/linux-user/flatload.c b/linux-user/flatload.c > index cd7af7c..2933c5f 100644 > --- a/linux-user/flatload.c > +++ b/linux-user/flatload.c > @@ -379,12 +379,14 @@ static int load_flat_file(struct linux_binprm * bprm, > abi_long result; > abi_ulong realdatastart = 0; > abi_ulong text_len, data_len, bss_len, stack_len, flags; > - abi_ulong memp = 0; /* for finding the brk area */ > abi_ulong extra; > abi_ulong reloc = 0, rp; > int i, rev, relocs = 0; > abi_ulong fpos; > - abi_ulong start_code, end_code; > + abi_ulong start_code; > +#ifdef DEBUG > + abi_ulong end_code; > +#endif > abi_ulong indx_len; > > hdr = ((struct flat_hdr *) bprm->buf); /* exec-header */ > @@ -491,7 +493,6 @@ static int load_flat_file(struct linux_binprm * bprm, > } > > reloc = datapos + (ntohl(hdr->reloc_start) - text_len); > - memp = realdatastart; > > } else { > > @@ -506,7 +507,6 @@ static int load_flat_file(struct linux_binprm * bprm, > realdatastart = textpos + ntohl(hdr->data_start); > datapos = realdatastart + indx_len; > reloc = (textpos + ntohl(hdr->reloc_start) + indx_len); > - memp = textpos; > > #ifdef CONFIG_BINFMT_ZFLAT > #error code needs checking > @@ -552,7 +552,9 @@ static int load_flat_file(struct linux_binprm * bprm, > > /* The main program needs a little extra setup in the task structure */ > start_code = textpos + sizeof (struct flat_hdr); > +#ifdef DEBUG > end_code = textpos + text_len; > +#endif > > DBG_FLT("%s %s: TEXT=%x-%x DATA=%x-%x BSS=%x-%x\n", > id ? "Lib" : "Load", bprm->filename, > diff --git a/linux-user/linuxload.c b/linux-user/linuxload.c > index ac8c486..62ebc7e 100644 > --- a/linux-user/linuxload.c > +++ b/linux-user/linuxload.c > @@ -26,22 +26,6 @@ abi_long memcpy_to_target(abi_ulong dest, const void *src, > return 0; > } > > -static int in_group_p(gid_t g) > -{ > - /* return TRUE if we're in the specified group, FALSE otherwise */ > - int ngroup; > - int i; > - gid_t grouplist[NGROUPS]; > - > - ngroup = getgroups(NGROUPS, grouplist); > - for(i = 0; i < ngroup; i++) { > - if(grouplist[i] == g) { > - return 1; > - } > - } > - return 0; > -} > - > static int count(char ** vec) > { > int i; > @@ -57,7 +41,7 @@ static int prepare_binprm(struct linux_binprm *bprm) > { > struct stat st; > int mode; > - int retval, id_change; > + int retval; > > if(fstat(bprm->fd, &st) < 0) { > return(-errno); > @@ -73,14 +57,10 @@ static int prepare_binprm(struct linux_binprm *bprm) > > bprm->e_uid = geteuid(); > bprm->e_gid = getegid(); > - id_change = 0; > > /* Set-uid? */ > if(mode & S_ISUID) { > bprm->e_uid = st.st_uid; > - if(bprm->e_uid != geteuid()) { > - id_change = 1; > - } > } > > /* Set-gid? */ > @@ -91,9 +71,6 @@ static int prepare_binprm(struct linux_binprm *bprm) > */ > if ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) { > bprm->e_gid = st.st_gid; > - if (!in_group_p(bprm->e_gid)) { > - id_change = 1; > - } > } > > retval = read(bprm->fd, bprm->buf, BPRM_BUF_SIZE); > diff --git a/linux-user/main.c b/linux-user/main.c > index 04da0a4..9b995e5 100644 > --- a/linux-user/main.c > +++ b/linux-user/main.c > @@ -2053,15 +2053,15 @@ void cpu_loop(CPUMIPSState *env) > } else { > int nb_args; > abi_ulong sp_reg; > - abi_ulong arg5 = 0, arg6 = 0, arg7 = 0, arg8 = 0; > + abi_ulong arg5 = 0, arg6 = 0; > > nb_args = mips_syscall_args[syscall_num]; > sp_reg = env->active_tc.gpr[29]; > switch (nb_args) { > /* these arguments are taken from the stack */ > /* FIXME - what to do if get_user() fails? */ > - case 8: get_user_ual(arg8, sp_reg + 28); > - case 7: get_user_ual(arg7, sp_reg + 24); > + case 8: /* get_user_ual(arg8, sp_reg + 28); */ > + case 7: /* get_user_ual(arg7, sp_reg + 24); */
I'd prefer to see these and the respective variable definitions #if 0'd with a comment, stating that they're currently unused. > case 6: get_user_ual(arg6, sp_reg + 20); > case 5: get_user_ual(arg5, sp_reg + 16); > default: > diff --git a/linux-user/signal.c b/linux-user/signal.c > index 11b25be..685ae61 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -2080,7 +2080,6 @@ long do_sigreturn(CPUState *env) > uint32_t up_psr, pc, npc; > target_sigset_t set; > sigset_t host_set; > - abi_ulong fpu_save_addr; > int err, i; > > sf_addr = env->regwptr[UREG_FP]; > @@ -2120,8 +2119,6 @@ long do_sigreturn(CPUState *env) > err |= __get_user(env->regwptr[i + UREG_I0], > &sf->info.si_regs.u_regs[i+8]); > } > > - err |= __get_user(fpu_save_addr, &sf->fpu_save); This probably goes along the same line. Please keep the code around - it seems related to the commented out code below. > - > //if (fpu_save) > // err |= restore_fpu_state(env, fpu_save); > > @@ -2228,7 +2225,6 @@ void sparc64_set_context(CPUSPARCState *env) > target_mc_gregset_t *grp; > abi_ulong pc, npc, tstate; > abi_ulong fp, i7, w_addr; > - unsigned char fenab; > int err; > unsigned int i; > > @@ -2293,7 +2289,6 @@ void sparc64_set_context(CPUSPARCState *env) > if (put_user(i7, w_addr + offsetof(struct target_reg_window, ins[7]), > abi_ulong) != 0) > goto do_sigsegv; > - err |= __get_user(fenab, &(ucp->tuc_mcontext.mc_fpregs.mcfpu_enab)); not sure here - might be the same as above? > err |= __get_user(env->fprs, &(ucp->tuc_mcontext.mc_fpregs.mcfpu_fprs)); > { > uint32_t *src, *dst; > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 5cb27c7..71395d5 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -3751,7 +3751,6 @@ static abi_long do_get_thread_area(CPUX86State *env, > abi_ulong ptr) > #ifndef TARGET_ABI32 > static abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr) > { > - abi_long ret; > abi_ulong val; > int idx; > > @@ -3776,7 +3775,6 @@ static abi_long do_arch_prctl(CPUX86State *env, int > code, abi_ulong addr) > return -TARGET_EFAULT; > break; > default: > - ret = -TARGET_EINVAL; I'm fairly sure this was supposed to be "return -TARGET_EINVAL". > break; > } > return 0; > @@ -7058,18 +7056,14 @@ abi_long do_syscall(void *cpu_env, int num, abi_long > arg1, > case TARGET_NR_osf_sigprocmask: > { > abi_ulong mask; > - int how = arg1; > sigset_t set, oldset; > > switch(arg1) { > case TARGET_SIG_BLOCK: > - how = SIG_BLOCK; > break; > case TARGET_SIG_UNBLOCK: > - how = SIG_UNBLOCK; > break; > case TARGET_SIG_SETMASK: > - how = SIG_SETMASK; why go through the effort of setting "how" and then not using it? I'm pretty sure this is a bug as well. A few lines down is the following code: sigprocmask(arg1, &set, &oldset); which in TARGET_NR_sigprocmask would be: ret = get_errno(sigprocmask(how, &set, &oldset)); So we end up sending guest masks to the host. Richard, this is Alpha specific code. Mind to double-check? Alex