On Wed, Jun 15, 2011 at 10:35:19AM +0200, Alexander Graf wrote:
> 
> 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


Could you guys fix these the way you like?
I just want my build to pass ...

-- 
MST

Reply via email to