Patchwork [10/10] linux-user: remove unused variables

login
register
mail settings
Submitter Michael S. Tsirkin
Date June 14, 2011, 5:36 p.m.
Message ID <fd304ad8f556300ce3ee29bf615a5e5a0a28eb6a.1308072799.git.mst@redhat.com>
Download mbox | patch
Permalink /patch/100464/
State New
Headers show

Comments

Michael S. Tsirkin - June 14, 2011, 5:36 p.m.
Signed-off-by: Michael S. Tsirkin <mst@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(-)
Alexander Graf - June 15, 2011, 8:35 a.m.
On 14.06.2011, at 19:36, Michael S. Tsirkin wrote:

> Signed-off-by: Michael S. Tsirkin <mst@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
Michael S. Tsirkin - June 15, 2011, 8:55 a.m.
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 <mst@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 ...
Richard Henderson - June 15, 2011, 2:32 p.m.
On 06/15/2011 01:35 AM, Alexander Graf wrote:
>> -                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.

I'd prefer not to see if 0 code.  Better, I think, to mark the
variables as __attribute__((unused)) with that same comment.

>> @@ -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?

I remember fixing this before.  Perhaps it was in a patch tree that 
never got pulled...


r~
Peter Maydell - June 15, 2011, 4:51 p.m.
On 15 June 2011 09:35, Alexander Graf <agraf@suse.de> wrote:
>
> On 14.06.2011, at 19:36, Michael S. Tsirkin wrote:

>>     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.

Yes, this change is wrong. We've had a better version of these
fixes posted to the list already by Juan:

http://patchwork.ozlabs.org/patch/98376/

at least some of which have already been reviewed.

-- PMM
Michael S. Tsirkin - June 15, 2011, 6:40 p.m.
On Wed, Jun 15, 2011 at 07:32:50AM -0700, Richard Henderson wrote:
> On 06/15/2011 01:35 AM, Alexander Graf wrote:
> >> -                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.
> 
> I'd prefer not to see if 0 code.  Better, I think, to mark the
> variables as __attribute__((unused)) with that same comment.

Why keep dead code around? If it's for documentation pruposes
comment or if 0 seems more appropriate than attributes.

> >> @@ -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?
> 
> I remember fixing this before.  Perhaps it was in a patch tree that 
> never got pulled...
> 
> 
> r~
Michael S. Tsirkin - June 26, 2011, 11:11 a.m.
On Tue, Jun 14, 2011 at 08:36:33PM +0300, Michael S. Tsirkin wrote:
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Riku, could you fix this up in a way that makes sense please?
All I really care about is that -Werror build passes with the latest
gcc.
Peter Maydell - June 27, 2011, 9:06 a.m.
On 26 June 2011 12:11, Michael S. Tsirkin <mst@redhat.com> wrote:
> On Tue, Jun 14, 2011 at 08:36:33PM +0300, Michael S. Tsirkin wrote:
>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>
> Riku, could you fix this up in a way that makes sense please?
> All I really care about is that -Werror build passes with the latest
> gcc.

These warnings are all fixed in master + latest linux-user pullreq
+ latest trivial-patches pullreq, with the exception of one new one
introduced by the pselect6 patch in the linaro pullreq.

-- PMM
Peter Maydell - June 27, 2011, 9:13 a.m.
On 27 June 2011 10:06, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 26 June 2011 12:11, Michael S. Tsirkin <mst@redhat.com> wrote:
>> On Tue, Jun 14, 2011 at 08:36:33PM +0300, Michael S. Tsirkin wrote:
>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>
>> Riku, could you fix this up in a way that makes sense please?
>> All I really care about is that -Werror build passes with the latest
>> gcc.
>
> These warnings are all fixed in master + latest linux-user pullreq
> + latest trivial-patches pullreq, with the exception of one new one
> introduced by the pselect6 patch in the linaro pullreq.

oops, s/linaro/linux-user/

-- PMM

Patch

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); */
                 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);
-
         //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));
     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;
         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;
                 break;
             default:
                 ret = -TARGET_EINVAL;