[yocto] [PATCH] perf: mips64: Convert __u64 to unsigned long long
Yang Shi
yang.shi at windriver.com
Tue Oct 29 07:49:22 PDT 2013
On 10/29/2013 5:40 AM, Bruce Ashfield wrote:
> On 13-10-29 05:28 AM, Hans Beckérus wrote:
>> On Tue, Oct 29, 2013 at 1:38 AM, Khem Raj <raj.khem at gmail.com> wrote:
>>> On Fri, Oct 25, 2013 at 12:17 PM, Yang Shi <yang.shi at windriver.com>
>>> wrote:
>>>> On MIPS64, "__u64" is "unsigned long" type, so the "%llu" specifier
>>>> will cause
>>>> build error on MIPS64.
>>>>
>>>> Convert __u64 to unsigned long long in those sprintf calls to avoid
>>>> the build
>>>> error.
>>>>
>>>> Signed-off-by: Yang Shi <yang.shi at windriver.com>
>>>> ---
>>>> tools/perf/tests/attr.c | 20 ++++++++++----------
>>>> tools/perf/tests/bp_signal.c | 2 +-
>>>> tools/perf/tests/bp_signal_overflow.c | 2 +-
>>>> 3 files changed, 12 insertions(+), 12 deletions(-)
>>>>
>>>> diff --git a/tools/perf/tests/attr.c b/tools/perf/tests/attr.c
>>>> index 00218f5..f045c2c 100644
>>>> --- a/tools/perf/tests/attr.c
>>>> +++ b/tools/perf/tests/attr.c
>>>> @@ -71,7 +71,7 @@ static int store_event(struct perf_event_attr
>>>> *attr, pid_t pid, int cpu,
>>>> char path[PATH_MAX];
>>>>
>>>> snprintf(path, PATH_MAX, "%s/event-%d-%llu-%d", dir,
>>>> - attr->type, attr->config, fd);
>>>> + attr->type, (unsigned long long)attr->config, fd);
>>>>
>>>
>>> hmm may be you can convert %llu into PRIu64
>>>
>>> e.g.
>>>
>>> printf( "%" PRIu64 "\n", val);
>>>
>> I think there was a thread/patch on the exact same package and issue
>> in OE-core.
>> The solution I think was to define __SANE_USERSPACE_TYPES__ to get
>> proper definition of __u64.
>> http://patchwork.openembedded.org/patch/59641/
>> Or maybe this is something completely different?
>
> The are the same, just a kernel guy versus a userspace guy looking
> at the same issue from different points of view. :)
Yes, actually kernel already had a commit to define that macro:
commit e3541ec75219819d3235f80125a1a75d798ff6e1
Author: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
Date: Wed Jan 23 21:44:39 2013 -0800
perf tools, powerpc: Fix compile warnings in tests/attr.c
We print several '__u64' quantities using '%llu'. On powerpc, we by
default include '<asm-generic/int-l64.h> which results in __u64
being an
unsigned long. This causes compile warnings which are treated as errors
due to '-Werror'.
By defining __SANE_USERSPACE_TYPES__ we include
<asm-generic/int-ll64.h>
and define __u64 as unsigned long long.
Changelog[v2]:
[Michael Ellerman] Use __SANE_USERSPACE_TYPES__ and avoid PRIu64
format specifier - which as Jiri Olsa pointed out, breaks on
x86-64.
Signed-off-by: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
Cc: Anton Blanchard <anton at au1.ibm.com>
Cc: Jiri Olsa <jolsa at redhat.com>
Cc: Michael Ellerman <ellerman at au1.ibm.com>
Cc: linuxppc-dev at ozlabs.org
Link: http://lkml.kernel.org/r/20130124054439.GA31588@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme at redhat.com>
But, MIPS64 still failed to build with this commit.
Yang
>
> Bruce
>
>>
>> Thanks.
>> Hans
>>
>>>
>>>
>>>> file = fopen(path, "w+");
>>>> if (!file) {
>>>> @@ -80,7 +80,7 @@ static int store_event(struct perf_event_attr
>>>> *attr, pid_t pid, int cpu,
>>>> }
>>>>
>>>> if (fprintf(file, "[event-%d-%llu-%d]\n",
>>>> - attr->type, attr->config, fd) < 0) {
>>>> + attr->type, (unsigned long long)attr->config,
>>>> fd) < 0) {
>>>> perror("test attr - failed to write event file");
>>>> fclose(file);
>>>> return -1;
>>>> @@ -96,10 +96,10 @@ static int store_event(struct perf_event_attr
>>>> *attr, pid_t pid, int cpu,
>>>> /* struct perf_event_attr */
>>>> WRITE_ASS(type, PRIu32);
>>>> WRITE_ASS(size, PRIu32);
>>>> - WRITE_ASS(config, "llu");
>>>> - WRITE_ASS(sample_period, "llu");
>>>> - WRITE_ASS(sample_type, "llu");
>>>> - WRITE_ASS(read_format, "llu");
>>>> + __WRITE_ASS(config, "llu", (unsigned long
>>>> long)attr->config);
>>>> + __WRITE_ASS(sample_period, "llu", (unsigned long
>>>> long)attr->sample_period);
>>>> + __WRITE_ASS(sample_type, "llu", (unsigned long
>>>> long)attr->sample_type);
>>>> + __WRITE_ASS(read_format, "llu", (unsigned long
>>>> long)attr->read_format);
>>>> WRITE_ASS(disabled, "d");
>>>> WRITE_ASS(inherit, "d");
>>>> WRITE_ASS(pinned, "d");
>>>> @@ -124,10 +124,10 @@ static int store_event(struct perf_event_attr
>>>> *attr, pid_t pid, int cpu,
>>>> WRITE_ASS(exclude_callchain_user, "d");
>>>> WRITE_ASS(wakeup_events, PRIu32);
>>>> WRITE_ASS(bp_type, PRIu32);
>>>> - WRITE_ASS(config1, "llu");
>>>> - WRITE_ASS(config2, "llu");
>>>> - WRITE_ASS(branch_sample_type, "llu");
>>>> - WRITE_ASS(sample_regs_user, "llu");
>>>> + __WRITE_ASS(config1, "llu", (unsigned long
>>>> long)attr->config1);
>>>> + __WRITE_ASS(config2, "llu", (unsigned long
>>>> long)attr->config2);
>>>> + __WRITE_ASS(branch_sample_type, "llu", (unsigned long
>>>> long)attr->branch_sample_type);
>>>> + __WRITE_ASS(sample_regs_user, "llu", (unsigned long
>>>> long)attr->sample_regs_user);
>>>> WRITE_ASS(sample_stack_user, PRIu32);
>>>>
>>>> fclose(file);
>>>> diff --git a/tools/perf/tests/bp_signal.c
>>>> b/tools/perf/tests/bp_signal.c
>>>> index 68daa28..bf3a094 100644
>>>> --- a/tools/perf/tests/bp_signal.c
>>>> +++ b/tools/perf/tests/bp_signal.c
>>>> @@ -74,7 +74,7 @@ static int bp_event(void *fn, int setup_signal)
>>>>
>>>> fd = sys_perf_event_open(&pe, 0, -1, -1, 0);
>>>> if (fd < 0) {
>>>> - pr_debug("failed opening event %llx\n", pe.config);
>>>> + pr_debug("failed opening event %llx\n", (unsigned
>>>> long long)pe.config);
>>>> return TEST_FAIL;
>>>> }
>>>>
>>>> diff --git a/tools/perf/tests/bp_signal_overflow.c
>>>> b/tools/perf/tests/bp_signal_overflow.c
>>>> index fe7ed28..3662b15 100644
>>>> --- a/tools/perf/tests/bp_signal_overflow.c
>>>> +++ b/tools/perf/tests/bp_signal_overflow.c
>>>> @@ -87,7 +87,7 @@ int test__bp_signal_overflow(void)
>>>>
>>>> fd = sys_perf_event_open(&pe, 0, -1, -1, 0);
>>>> if (fd < 0) {
>>>> - pr_debug("failed opening event %llx\n", pe.config);
>>>> + pr_debug("failed opening event %llx\n", (unsigned
>>>> long long)pe.config);
>>>> return TEST_FAIL;
>>>> }
>>>>
>>>> --
>>>> 1.7.5.4
>>>>
>>>> _______________________________________________
>>>> yocto mailing list
>>>> yocto at yoctoproject.org
>>>> https://lists.yoctoproject.org/listinfo/yocto
>>> _______________________________________________
>>> yocto mailing list
>>> yocto at yoctoproject.org
>>> https://lists.yoctoproject.org/listinfo/yocto
>> _______________________________________________
>> yocto mailing list
>> yocto at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
>>
>
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
More information about the yocto
mailing list