Patchwork [1/2] perf: flag __SANE_USERSPACE_TYPES__ to include int-ll64.h for powerpc64

login
register
mail settings
Submitter Ting Liu
Date Oct. 11, 2013, 8:11 a.m.
Message ID <1381479105-21972-1-git-send-email-b28495@freescale.com>
Download mbox | patch
Permalink /patch/59641/
State Accepted
Commit e0b56f7ed84da4f71f448548e15d5a75e8eada6e
Headers show

Comments

Ting Liu - Oct. 11, 2013, 8:11 a.m.
From: Ting Liu <b28495@freescale.com>

PPC64 uses long long for u64 in the kernel, but powerpc's asm/types.h
prevents 64-bit userland from seeing this definition, instead defaulting
to u64 == long in userspace.
Perf want LL64, flag __SANE_USERSPACE_TYPES__ to get int-ll64.h.

Fix the below issue:
| tests/attr.c:71:4: error: format '%llu' expects argument of type 'long
long unsigned int', but argument 6 has type '__u64' [-Werror=format=]
| tests/attr.c:80:7: error: format '%llu' expects argument of type 'long
long unsigned int', but argument 4 has type '__u64' [-Werror=format=]
|        attr->type, attr->config, fd) < 0) {
|        ^

Signed-off-by: Ting Liu <b28495@freescale.com>
---
 meta/recipes-kernel/perf/perf.bb |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
Yang Shi - Oct. 30, 2013, 3:45 a.m.
On 10/11/2013 1:11 AM, b28495@freescale.com wrote:
> From: Ting Liu <b28495@freescale.com>
>
> PPC64 uses long long for u64 in the kernel, but powerpc's asm/types.h
> prevents 64-bit userland from seeing this definition, instead defaulting
> to u64 == long in userspace.
> Perf want LL64, flag __SANE_USERSPACE_TYPES__ to get int-ll64.h.
>
> Fix the below issue:
> | tests/attr.c:71:4: error: format '%llu' expects argument of type 'long
> long unsigned int', but argument 6 has type '__u64' [-Werror=format=]
> | tests/attr.c:80:7: error: format '%llu' expects argument of type 'long
> long unsigned int', but argument 4 has type '__u64' [-Werror=format=]
> |        attr->type, attr->config, fd) < 0) {
> |        ^
>
> Signed-off-by: Ting Liu <b28495@freescale.com>
> ---
>   meta/recipes-kernel/perf/perf.bb |    6 ++++++
>   1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> index 269069f..d27e535 100644
> --- a/meta/recipes-kernel/perf/perf.bb
> +++ b/meta/recipes-kernel/perf/perf.bb
> @@ -89,6 +89,12 @@ EXTRA_OEMAKE += "\
>   	'infodir=${@oe.path.relative(prefix, infodir)}' \
>   "
>   
> +# PPC64 uses long long for u64 in the kernel, but powerpc's asm/types.h
> +# prevents 64-bit userland from seeing this definition, instead defaulting
> +# to u64 == long in userspace. Define __SANE_USERSPACE_TYPES__ to get
> +# int-ll64.h included.
> +EXTRA_OEMAKE_append_powerpc64 = ' CFLAGS=-D__SANE_USERSPACE_TYPES__'

This override perf CFLAGS incorrectly.

kernel commit e3541ec75219819d3235f80125a1a75d798ff6e1 can solve this 
build issue.

Yang

> +
>   PARALLEL_MAKE = ""
>   
>   do_compile() {

Patch

diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 269069f..d27e535 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -89,6 +89,12 @@  EXTRA_OEMAKE += "\
 	'infodir=${@oe.path.relative(prefix, infodir)}' \
 "
 
+# PPC64 uses long long for u64 in the kernel, but powerpc's asm/types.h
+# prevents 64-bit userland from seeing this definition, instead defaulting
+# to u64 == long in userspace. Define __SANE_USERSPACE_TYPES__ to get 
+# int-ll64.h included.
+EXTRA_OEMAKE_append_powerpc64 = ' CFLAGS=-D__SANE_USERSPACE_TYPES__'
+
 PARALLEL_MAKE = ""
 
 do_compile() {