Subject: Re: [PATCH] tools/perf: fix build when WERROR=1

From: Andy Shevchenko <[email-masked]>
Date: Wed, 08 Aug 2012 19:32:46 +0300

On Wed, 2012-08-08 at 13:18 -0300, Arnaldo Carvalho de Melo wrote: 
> Em Wed, Aug 08, 2012 at 06:05:50PM +0300, Andy Shevchenko escreveu:
> > util/symbol.c: In function ‘hex2u64’:
> > util/symbol.c:2836:2: error: passing argument 2 of ‘strtoull’ from incompatible pointer type [-Werror]
> > In file included from util/symbol.c:3:0:
> > /usr/include/stdlib.h:215:31: note: expected ‘char ** restrict’ but argument is of type ‘const char **’
> > cc1: all warnings being treated as errors
> > make[1]: *** [util/symbol.o] Error 1
> > make[1]: Leaving directory `/home/andy/prj/linux-2.6/tools/perf'
> > make: *** [perf] Error 2
> > 
> > Signed-off-by: Andy Shevchenko <[email-masked]>
> > ---
> >  tools/perf/util/symbol.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> > index ba2a489..26e695c 100644
> > --- a/tools/perf/util/symbol.c
> > +++ b/tools/perf/util/symbol.c
> > @@ -2831,7 +2831,7 @@ int machines__create_kernel_maps(struct rb_root *machines, pid_t pid)
> >   */
> >  int hex2u64(const char *ptr, u64 *long_val)
> >  {
> > -	const char *p = ptr;
> > +	char *p;
> >  
> >  	*long_val = strtoull(ptr, &p, 16);
> 
> What tree is this against? Here I have:
Ah, it's a fix on top on mine other fix.
I'll resend squashed version soon.

> 
> /*
>  * While we find nice hex chars, build a long_val.
>  * Return number of chars processed.
>  */
> int hex2u64(const char *ptr, u64 *long_val)
> {
>         const char *p = ptr;
>         *long_val = 0;
> 
>         while (*p) {
>                 const int hex_val = hex(*p);
> 
>                 if (hex_val < 0)
>                         break;
> 
>                 *long_val = (*long_val << 4) | hex_val;
>                 p++;
>         }
> 
>         return p - ptr;
> }
> 
> - Arnaldo

-- 
Andy Shevchenko <[email-masked]>
Intel Finland Oy