All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf: perl: force to use stdbool.
@ 2015-01-15  5:55 Wang Nan
  2015-01-19 10:42 ` Wang Nan
  0 siblings, 1 reply; 10+ messages in thread
From: Wang Nan @ 2015-01-15  5:55 UTC (permalink / raw)
  To: paulus, mingo, acme, jolsa, namhyung; +Cc: lizefan, linux-kernel

When building perf for arm64 I hit a warning (and be treated as an
error) like below:

 aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
	 ... util/scripting-engines/trace-event-python.c

 In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
                  from Context.xs:23:
 /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
  #  define bool char
  ^
 In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
                  from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
		  from /.../usr/include/bits/sigcontext.h:27,
		  from /.../usr/include/signal.h:340,
		  from /.../usr/include/sys/param.h:28,
		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
		  from Context.xs:23:
  /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
    #define bool _Bool

Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
includes linux/types.h while other archs not.

This patch includes stdbool.h before Context.xs and define HAS_BOOL to
prevent perl'e headers define its own 'bool'.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 790ceba..69c3572 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -5,7 +5,8 @@
  *	ANY CHANGES MADE HERE WILL BE LOST! 
  *
  */
-
+#include <stdbool.h>
+#define HAS_BOOL 1
 #line 1 "Context.xs"
 /*
  * Context.xs.  XS interfaces for perf script.
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] perf: perl: force to use stdbool.
  2015-01-15  5:55 [PATCH] perf: perl: force to use stdbool Wang Nan
@ 2015-01-19 10:42 ` Wang Nan
  2015-01-19 11:23   ` Jiri Olsa
  0 siblings, 1 reply; 10+ messages in thread
From: Wang Nan @ 2015-01-19 10:42 UTC (permalink / raw)
  To: acme, jolsa; +Cc: paulus, mingo, namhyung, lizefan, linux-kernel, Jiri Olsa

Add Jiri Olsa jolsa@kernel.org to CC list. I think jolsa@kernel.org should be the main
email address he uses.

On 2015/1/15 13:55, Wang Nan wrote:
> When building perf for arm64 I hit a warning (and be treated as an
> error) like below:
> 
>  aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
> 	 ... util/scripting-engines/trace-event-python.c
> 
>  In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
>                   from Context.xs:23:
>  /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
>   #  define bool char
>   ^
>  In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
>                   from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
> 		  from /.../usr/include/bits/sigcontext.h:27,
> 		  from /.../usr/include/signal.h:340,
> 		  from /.../usr/include/sys/param.h:28,
> 		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
> 		  from Context.xs:23:
>   /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
>     #define bool _Bool
> 
> Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
> includes linux/types.h while other archs not.
> 
> This patch includes stdbool.h before Context.xs and define HAS_BOOL to
> prevent perl'e headers define its own 'bool'.
> 
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> ---
>  tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> index 790ceba..69c3572 100644
> --- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> @@ -5,7 +5,8 @@
>   *	ANY CHANGES MADE HERE WILL BE LOST! 
>   *
>   */
> -
> +#include <stdbool.h>
> +#define HAS_BOOL 1
>  #line 1 "Context.xs"
>  /*
>   * Context.xs.  XS interfaces for perf script.
> 



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] perf: perl: force to use stdbool.
  2015-01-19 10:42 ` Wang Nan
@ 2015-01-19 11:23   ` Jiri Olsa
  2015-01-19 11:51     ` Wang Nan
  0 siblings, 1 reply; 10+ messages in thread
From: Jiri Olsa @ 2015-01-19 11:23 UTC (permalink / raw)
  To: Wang Nan; +Cc: acme, paulus, mingo, namhyung, lizefan, linux-kernel, Jiri Olsa

On Mon, Jan 19, 2015 at 06:42:17PM +0800, Wang Nan wrote:
> Add Jiri Olsa jolsa@kernel.org to CC list. I think jolsa@kernel.org should be the main
> email address he uses.

ack ;-)

jirka

> 
> On 2015/1/15 13:55, Wang Nan wrote:
> > When building perf for arm64 I hit a warning (and be treated as an
> > error) like below:
> > 
> >  aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
> > 	 ... util/scripting-engines/trace-event-python.c
> > 
> >  In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
> >                   from Context.xs:23:
> >  /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
> >   #  define bool char
> >   ^
> >  In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
> >                   from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
> > 		  from /.../usr/include/bits/sigcontext.h:27,
> > 		  from /.../usr/include/signal.h:340,
> > 		  from /.../usr/include/sys/param.h:28,
> > 		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
> > 		  from Context.xs:23:
> >   /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
> >     #define bool _Bool
> > 
> > Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
> > includes linux/types.h while other archs not.
> > 
> > This patch includes stdbool.h before Context.xs and define HAS_BOOL to
> > prevent perl'e headers define its own 'bool'.
> > 
> > Signed-off-by: Wang Nan <wangnan0@huawei.com>
> > ---
> >  tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> > index 790ceba..69c3572 100644
> > --- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> > +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> > @@ -5,7 +5,8 @@
> >   *	ANY CHANGES MADE HERE WILL BE LOST! 
> >   *
> >   */
> > -
> > +#include <stdbool.h>
> > +#define HAS_BOOL 1

I saw this patch before.. but I had no idea ;-)

seems hacky to me? Is there any doc saying 'this is how you handle this with perl' ? ;-)

I couldn't find any.. or more detailed explanation why we should
define HAS_BOOL and not perl headers..

thanks,
jirka

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] perf: perl: force to use stdbool.
  2015-01-19 11:23   ` Jiri Olsa
@ 2015-01-19 11:51     ` Wang Nan
  2015-01-19 12:38       ` Jiri Olsa
  0 siblings, 1 reply; 10+ messages in thread
From: Wang Nan @ 2015-01-19 11:51 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: acme, paulus, mingo, namhyung, lizefan, linux-kernel, Jiri Olsa

On 2015/1/19 19:23, Jiri Olsa wrote:
> On Mon, Jan 19, 2015 at 06:42:17PM +0800, Wang Nan wrote:
>> Add Jiri Olsa jolsa@kernel.org to CC list. I think jolsa@kernel.org should be the main
>> email address he uses.
> 
> ack ;-)
> 
> jirka
> 
>>
>> On 2015/1/15 13:55, Wang Nan wrote:
>>> When building perf for arm64 I hit a warning (and be treated as an
>>> error) like below:
>>>
>>>  aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
>>> 	 ... util/scripting-engines/trace-event-python.c
>>>
>>>  In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
>>>                   from Context.xs:23:
>>>  /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
>>>   #  define bool char
>>>   ^
>>>  In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
>>>                   from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
>>> 		  from /.../usr/include/bits/sigcontext.h:27,
>>> 		  from /.../usr/include/signal.h:340,
>>> 		  from /.../usr/include/sys/param.h:28,
>>> 		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
>>> 		  from Context.xs:23:
>>>   /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
>>>     #define bool _Bool
>>>
>>> Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
>>> includes linux/types.h while other archs not.
>>>
>>> This patch includes stdbool.h before Context.xs and define HAS_BOOL to
>>> prevent perl'e headers define its own 'bool'.
>>>
>>> Signed-off-by: Wang Nan <wangnan0@huawei.com>
>>> ---
>>>  tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 3 ++-
>>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
>>> index 790ceba..69c3572 100644
>>> --- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
>>> +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
>>> @@ -5,7 +5,8 @@
>>>   *	ANY CHANGES MADE HERE WILL BE LOST! 
>>>   *
>>>   */
>>> -
>>> +#include <stdbool.h>
>>> +#define HAS_BOOL 1
> 
> I saw this patch before.. but I had no idea ;-)
> 
> seems hacky to me? Is there any doc saying 'this is how you handle this with perl' ? ;-)
> 

It is hacky. I'm not very familiar with perl, I just try to build it.

I checked perl's repository and found that newest perl does consider this problem:

http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b

So the root cause is in my perl version.

What's your policy then? Do you think we should provid a workaround or just force
users update their perl?

Thank you.

> I couldn't find any.. or more detailed explanation why we should
> define HAS_BOOL and not perl headers..
> 
> thanks,
> jirka
> 



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] perf: perl: force to use stdbool.
  2015-01-19 11:51     ` Wang Nan
@ 2015-01-19 12:38       ` Jiri Olsa
  2015-01-19 12:43         ` [PATCH v2] " Wang Nan
  0 siblings, 1 reply; 10+ messages in thread
From: Jiri Olsa @ 2015-01-19 12:38 UTC (permalink / raw)
  To: Wang Nan; +Cc: acme, paulus, mingo, namhyung, lizefan, linux-kernel, Jiri Olsa

On Mon, Jan 19, 2015 at 07:51:54PM +0800, Wang Nan wrote:
> On 2015/1/19 19:23, Jiri Olsa wrote:
> > On Mon, Jan 19, 2015 at 06:42:17PM +0800, Wang Nan wrote:
> >> Add Jiri Olsa jolsa@kernel.org to CC list. I think jolsa@kernel.org should be the main
> >> email address he uses.
> > 
> > ack ;-)
> > 
> > jirka
> > 
> >>
> >> On 2015/1/15 13:55, Wang Nan wrote:
> >>> When building perf for arm64 I hit a warning (and be treated as an
> >>> error) like below:
> >>>
> >>>  aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
> >>> 	 ... util/scripting-engines/trace-event-python.c
> >>>
> >>>  In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
> >>>                   from Context.xs:23:
> >>>  /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
> >>>   #  define bool char
> >>>   ^
> >>>  In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
> >>>                   from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
> >>> 		  from /.../usr/include/bits/sigcontext.h:27,
> >>> 		  from /.../usr/include/signal.h:340,
> >>> 		  from /.../usr/include/sys/param.h:28,
> >>> 		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
> >>> 		  from Context.xs:23:
> >>>   /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
> >>>     #define bool _Bool
> >>>
> >>> Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
> >>> includes linux/types.h while other archs not.
> >>>
> >>> This patch includes stdbool.h before Context.xs and define HAS_BOOL to
> >>> prevent perl'e headers define its own 'bool'.
> >>>
> >>> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> >>> ---
> >>>  tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 3 ++-
> >>>  1 file changed, 2 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> >>> index 790ceba..69c3572 100644
> >>> --- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> >>> +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> >>> @@ -5,7 +5,8 @@
> >>>   *	ANY CHANGES MADE HERE WILL BE LOST! 
> >>>   *
> >>>   */
> >>> -
> >>> +#include <stdbool.h>
> >>> +#define HAS_BOOL 1
> > 
> > I saw this patch before.. but I had no idea ;-)
> > 
> > seems hacky to me? Is there any doc saying 'this is how you handle this with perl' ? ;-)
> > 
> 
> It is hacky. I'm not very familiar with perl, I just try to build it.
> 
> I checked perl's repository and found that newest perl does consider this problem:
> 
> http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b
> 
> So the root cause is in my perl version.
> 
> What's your policy then? Do you think we should provid a workaround or just force
> users update their perl?

I guess thats ok then.. maybe use it the way they did:

#include <stdbool.h>
#ifndef HAS_BOOL
#  define HAS_BOOL 1
#endif

not sure if the better fix would be regenerating Context.c somehow,
as it indicates it's been generated ;-)

but if nobody screams, I'm ok with this..

jirka

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2] perf: perl: force to use stdbool.
  2015-01-19 12:38       ` Jiri Olsa
@ 2015-01-19 12:43         ` Wang Nan
  2015-01-19 14:26           ` Namhyung Kim
  2015-01-28 15:00           ` [tip:perf/core] perf scripting perl: Force " tip-bot for Wang Nan
  0 siblings, 2 replies; 10+ messages in thread
From: Wang Nan @ 2015-01-19 12:43 UTC (permalink / raw)
  To: jolsa; +Cc: linux-kernel, lizefan, namhyung, acme

When building perf for arm64 I hit a warning (and be treated as an
error) like below:

 aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
	 ... util/scripting-engines/trace-event-python.c

 In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
                  from Context.xs:23:
 /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
  #  define bool char
  ^
 In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
                  from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
		  from /.../usr/include/bits/sigcontext.h:27,
		  from /.../usr/include/signal.h:340,
		  from /.../usr/include/sys/param.h:28,
		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
		  from Context.xs:23:
  /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
    #define bool _Bool

Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
includes linux/types.h while other archs not.

Current perl consider this problem:

http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b

However there are users which use old version of perl.

This patch includes stdbool.h before Context.xs and define HAS_BOOL to
prevent perl'e headers define its own 'bool'. Code is learn from perl's
git tree.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 790ceba..28431d1 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -5,7 +5,10 @@
  *	ANY CHANGES MADE HERE WILL BE LOST! 
  *
  */
-
+#include <stdbool.h>
+#ifndef HAS_BOOL
+# define HAS_BOOL 1
+#endif
 #line 1 "Context.xs"
 /*
  * Context.xs.  XS interfaces for perf script.
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] perf: perl: force to use stdbool.
  2015-01-19 12:43         ` [PATCH v2] " Wang Nan
@ 2015-01-19 14:26           ` Namhyung Kim
  2015-01-20  1:59             ` [PATCH v3] " Wang Nan
  2015-01-20  2:07             ` [PATCH v2] " Wang Nan
  2015-01-28 15:00           ` [tip:perf/core] perf scripting perl: Force " tip-bot for Wang Nan
  1 sibling, 2 replies; 10+ messages in thread
From: Namhyung Kim @ 2015-01-19 14:26 UTC (permalink / raw)
  To: Wang Nan; +Cc: jolsa, linux-kernel, lizefan, acme

On Mon, Jan 19, 2015 at 08:43:17PM +0800, Wang Nan wrote:
> When building perf for arm64 I hit a warning (and be treated as an
> error) like below:
> 
>  aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
> 	 ... util/scripting-engines/trace-event-python.c

s/python/perl/g ?


> 
>  In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
>                   from Context.xs:23:
>  /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
>   #  define bool char
>   ^
>  In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
>                   from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
> 		  from /.../usr/include/bits/sigcontext.h:27,
> 		  from /.../usr/include/signal.h:340,
> 		  from /.../usr/include/sys/param.h:28,
> 		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
> 		  from Context.xs:23:
>   /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
>     #define bool _Bool
> 
> Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
> includes linux/types.h while other archs not.
> 
> Current perl consider this problem:
> 
> http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b
> 
> However there are users which use old version of perl.
> 
> This patch includes stdbool.h before Context.xs and define HAS_BOOL to
> prevent perl'e headers define its own 'bool'. Code is learn from perl's
> git tree.
> 
> Signed-off-by: Wang Nan <wangnan0@huawei.com>

Other than that, looks good to me.

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung


> ---
>  tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> index 790ceba..28431d1 100644
> --- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
> @@ -5,7 +5,10 @@
>   *	ANY CHANGES MADE HERE WILL BE LOST! 
>   *
>   */
> -
> +#include <stdbool.h>
> +#ifndef HAS_BOOL
> +# define HAS_BOOL 1
> +#endif
>  #line 1 "Context.xs"
>  /*
>   * Context.xs.  XS interfaces for perf script.
> -- 
> 1.8.4
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v3] perf: perl: force to use stdbool.
  2015-01-19 14:26           ` Namhyung Kim
@ 2015-01-20  1:59             ` Wang Nan
  2015-01-20  2:07             ` [PATCH v2] " Wang Nan
  1 sibling, 0 replies; 10+ messages in thread
From: Wang Nan @ 2015-01-20  1:59 UTC (permalink / raw)
  To: namhyung; +Cc: jolsa, linux-kernel, lizefan, acme

When building perf for arm64 I hit a warning (and be treated as an
error) like below:

 aarch64-oe-linux-gcc -o .../scripts/perl/Perf-Trace-Util/Context.o -c -Wbad-function-cast \
	 ... scripts/perl/Perf-Trace-Util/Context.c

 In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
                  from Context.xs:23:
 /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
  #  define bool char
  ^
 In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
                  from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
		  from /.../usr/include/bits/sigcontext.h:27,
		  from /.../usr/include/signal.h:340,
		  from /.../usr/include/sys/param.h:28,
		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
		  from Context.xs:23:
  /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
    #define bool _Bool

Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
includes linux/types.h while other archs not.

Current perl consider this problem:

http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b

So systems with perl later than v5.15.3 will be free of this bug.
However, old perl still exists in many main distributions.

This patch includes stdbool.h before Context.xs and define HAS_BOOL to
prevent perl'e headers define its own 'bool'. Code is learn from perl's
git tree.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 790ceba..28431d1 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -5,7 +5,10 @@
  *	ANY CHANGES MADE HERE WILL BE LOST! 
  *
  */
-
+#include <stdbool.h>
+#ifndef HAS_BOOL
+# define HAS_BOOL 1
+#endif
 #line 1 "Context.xs"
 /*
  * Context.xs.  XS interfaces for perf script.
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] perf: perl: force to use stdbool.
  2015-01-19 14:26           ` Namhyung Kim
  2015-01-20  1:59             ` [PATCH v3] " Wang Nan
@ 2015-01-20  2:07             ` Wang Nan
  1 sibling, 0 replies; 10+ messages in thread
From: Wang Nan @ 2015-01-20  2:07 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: jolsa, linux-kernel, lizefan, acme

On 2015/1/19 22:26, Namhyung Kim wrote:
> On Mon, Jan 19, 2015 at 08:43:17PM +0800, Wang Nan wrote:
>> When building perf for arm64 I hit a warning (and be treated as an
>> error) like below:
>>
>>  aarch64-oe-linux-gcc -o .../util/scripting-engines/trace-event-python.o -c -Wbad-function-cast \
>> 	 ... util/scripting-engines/trace-event-python.c
> 
> s/python/perl/g ?
> 

I forgot I was using parallel building and simply pasted the previous line of the
error message here. The failed file should be 'scripts/perl/Perf-Trace-Util/Context.c'.
I posted a v3 patch with improved commit message.

> 
>>
>>  In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
>>                   from Context.xs:23:
>>  /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
>>   #  define bool char
>>   ^
>>  In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
>>                   from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
>> 		  from /.../usr/include/bits/sigcontext.h:27,
>> 		  from /.../usr/include/signal.h:340,
>> 		  from /.../usr/include/sys/param.h:28,
>> 		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
>> 		  from Context.xs:23:
>>   /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
>>     #define bool _Bool
>>
>> Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
>> includes linux/types.h while other archs not.
>>
>> Current perl consider this problem:
>>
>> http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b
>>
>> However there are users which use old version of perl.
>>
>> This patch includes stdbool.h before Context.xs and define HAS_BOOL to
>> prevent perl'e headers define its own 'bool'. Code is learn from perl's
>> git tree.
>>
>> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> 
> Other than that, looks good to me.
> 
> Acked-by: Namhyung Kim <namhyung@kernel.org>
> 
> Thanks,
> Namhyung
> 
> 
>> ---
>>  tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
>> index 790ceba..28431d1 100644
>> --- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
>> +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
>> @@ -5,7 +5,10 @@
>>   *	ANY CHANGES MADE HERE WILL BE LOST! 
>>   *
>>   */
>> -
>> +#include <stdbool.h>
>> +#ifndef HAS_BOOL
>> +# define HAS_BOOL 1
>> +#endif
>>  #line 1 "Context.xs"
>>  /*
>>   * Context.xs.  XS interfaces for perf script.
>> -- 
>> 1.8.4
>>



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [tip:perf/core] perf scripting perl: Force to use stdbool
  2015-01-19 12:43         ` [PATCH v2] " Wang Nan
  2015-01-19 14:26           ` Namhyung Kim
@ 2015-01-28 15:00           ` tip-bot for Wang Nan
  1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Wang Nan @ 2015-01-28 15:00 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: wangnan0, tglx, acme, namhyung, lizefan, jolsa, hpa, linux-kernel, mingo

Commit-ID:  75e0b5f010837f29b5773653a248852a7317562b
Gitweb:     http://git.kernel.org/tip/75e0b5f010837f29b5773653a248852a7317562b
Author:     Wang Nan <wangnan0@huawei.com>
AuthorDate: Mon, 19 Jan 2015 20:43:17 +0800
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 21 Jan 2015 10:05:00 -0300

perf scripting perl: Force to use stdbool

When building perf for arm64 I hit a warning (and be treated as an
error) like below:

 aarch64-oe-linux-gcc -o .../scripts/perl/Perf-Trace-Util/Context.o -c -Wbad-function-cast \
         ... scripts/perl/Perf-Trace-Util/Context.c

 In file included from .../usr/lib64/perl/5.14.3/CORE/perl.h:2464:0,
                  from Context.xs:23:
 /.../usr/lib64/perl/5.14.3/CORE/handy.h:108:0: error: "bool" redefined [-Werror]
  #  define bool char
  ^
 In file included from /.../usr/src/kernel/tools/include/linux/types.h:4:0,
                  from /.../usr/src/kernel/arch/arm64/include/uapi/asm/sigcontext.h:19,
		  from /.../usr/include/bits/sigcontext.h:27,
		  from /.../usr/include/signal.h:340,
		  from /.../usr/include/sys/param.h:28,
		  from /.../usr/lib64/perl/5.14.3/CORE/perl.h:678,
		  from Context.xs:23:
  /.../usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.9.2/include/stdbool.h:33:0: note: this is the location of the previous definition
    #define bool _Bool

Looks like the failure is caused by arm64 uapi/asm/sigcontext.h, which
includes linux/types.h while other archs not.

Current perl consider this problem:

http://perl5.git.perl.org/perl.git/commit/bd31be4baa3ee68abdb92c0db3200efe0fad903b

However there are users which use old version of perl.

This patch includes stdbool.h before Context.xs and define HAS_BOOL to
prevent perl'e headers define its own 'bool'. Code is learn from perl's
git tree.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Li Zefan <lizefan@huawei.com>
Link: http://lkml.kernel.org/r/1421671397-4659-1-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 790ceba..28431d1 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -5,7 +5,10 @@
  *	ANY CHANGES MADE HERE WILL BE LOST! 
  *
  */
-
+#include <stdbool.h>
+#ifndef HAS_BOOL
+# define HAS_BOOL 1
+#endif
 #line 1 "Context.xs"
 /*
  * Context.xs.  XS interfaces for perf script.

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-01-28 21:24 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-15  5:55 [PATCH] perf: perl: force to use stdbool Wang Nan
2015-01-19 10:42 ` Wang Nan
2015-01-19 11:23   ` Jiri Olsa
2015-01-19 11:51     ` Wang Nan
2015-01-19 12:38       ` Jiri Olsa
2015-01-19 12:43         ` [PATCH v2] " Wang Nan
2015-01-19 14:26           ` Namhyung Kim
2015-01-20  1:59             ` [PATCH v3] " Wang Nan
2015-01-20  2:07             ` [PATCH v2] " Wang Nan
2015-01-28 15:00           ` [tip:perf/core] perf scripting perl: Force " tip-bot for Wang Nan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.