Hi acme,

Andi Kleen <[email protected]> writes:

> diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
> index c0783b4f7b6c..b0fdb6c032a5 100644
> --- a/tools/perf/builtin-script.c
> +++ b/tools/perf/builtin-script.c
> @@ -546,6 +555,259 @@ static void print_sample_brstacksym(struct perf_sample 
> *sample,
>       }
>  }
>  
> +#define MAXBB 16384UL
> +
> +static int grab_bb(u8 *buffer, u64 start, u64 end,
> +                 struct machine *machine, struct thread *thread,
> +                 bool *is64bit, u8 *cpumode, bool last)
> +{
> +     long offset, len;
> +     struct addr_location al;
> +     bool kernel;
> +
> +     if (!start || !end)
> +             return 0;
> +
> +     kernel = machine__kernel_ip(machine, start);
> +     if (kernel)
> +             *cpumode = PERF_RECORD_MISC_KERNEL;
> +     else
> +             *cpumode = PERF_RECORD_MISC_USER;
> +
> +     /*
> +      * Block overlaps between kernel and user.
> +      * This can happen due to ring filtering
> +      * On Intel CPUs the entry into the kernel is filtered,
> +      * but the exit is not. Let the caller patch it up.
> +      */
> +     if (kernel != machine__kernel_ip(machine, end)) {
> +             printf("\tblock %" PRIx64 "-%" PRIx64 " transfers between 
> kernel and user\n",
> +                             start, end);
> +             return -ENXIO;
> +     }
> +
> +     memset(&al, 0, sizeof(al));
> +     if (end - start > MAXBB - MAXINSN) {
> +             if (last)
> +                     printf("\tbrstack does not reach to final jump (%" 
> PRIx64 "-%" PRIx64 ")\n",
> +                                     start, end);
> +             else
> +                     printf("\tblock %" PRIx64 "-%" PRIx64 " (%ld) too long 
> to dump\n",
> +                                     start, end, end - start);

This looks to be breaking the build on ppc64:

  builtin-script.c: In function ‘grab_bb’:
  builtin-script.c:595:11: error: format ‘%ld’ expects argument of type ‘long 
int’, but argument 4 has type ‘u64 {aka long long unsigned int}’ 
[-Werror=format=]
      printf("\tblock %" PRIx64 "-%" PRIx64 " (%ld) too long to dump\n", start, 
end, end - start);
             ^

cheers

Reply via email to