Skip to contentSkip to conversation

perf build failure on Linus's tree

PATCH In review Greg KH 9 participants 25 messages May 3, 2012 – May 4, 2012 perf events

lore
Share & tools
lore

Greg KH

author
#0 lore raw

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Do you really want to ensure that flex's build warnings fail the build?

thanks,

greg k-h

#1 lore raw

Hi,

Quoted 9 lines · Greg KH

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Quoted 5 lines

Do you really want to ensure that flex's build warnings fail the build?

thanks,

greg k-h

Can't reproduce it on my Fedora 17 box:

namhyung@sejong:perf$ make
PERF_VERSION = 3.4.rc5.67.gac001
    GEN common-cmds.h
    * new build flags or prefix
    CC perf.o
    CC builtin-annotate.o
    CC builtin-bench.o
    CC bench/sched-messaging.o
    CC bench/sched-pipe.o
[SNIP]
    CC util/trace-event-parse.o
    CC util/parse-events-flex.o
    CC util/parse-events-bison.o
    CC util/pmu-flex.o
    CC util/pmu-bison.o
[SNIP]
    CC util/scripting-engines/trace-event-python.o
    CC scripts/python/Perf-Trace-Util/Context.o
    AR libperf.a
    LINK perf
    GEN perf-archive
    GEN python/perf.so

What are versions of tools you are using?

Thanks,
Namhyung

author
#2 lore raw
Quoted 44 lines · Namhyung Kim

Hi,

Quoted 9 lines · Greg KH

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Quoted 5 lines

Do you really want to ensure that flex's build warnings fail the build?

thanks,

greg k-h

Can't reproduce it on my Fedora 17 box:

namhyung@sejong:perf$ make
PERF_VERSION = 3.4.rc5.67.gac001
    GEN common-cmds.h
    * new build flags or prefix
    CC perf.o
    CC builtin-annotate.o
    CC builtin-bench.o
    CC bench/sched-messaging.o
    CC bench/sched-pipe.o
[SNIP]
    CC util/trace-event-parse.o
    CC util/parse-events-flex.o
    CC util/parse-events-bison.o
    CC util/pmu-flex.o
    CC util/pmu-bison.o
[SNIP]
    CC util/scripting-engines/trace-event-python.o
    CC scripts/python/Perf-Trace-Util/Context.o
    AR libperf.a
    LINK perf
    GEN perf-archive
    GEN python/perf.so
Quoted 1 line

What are versions of tools you are using?

gcc 4.6.2 from openSUSE 12.1.
Any other tools you want to know the version of?

#3 lore raw

Hi,

Quoted 5 lines · Greg KH
Quoted 1 line · Namhyung Kim

What are versions of tools you are using?

gcc 4.6.2 from openSUSE 12.1.
Any other tools you want to know the version of?

flex and bison versions might be helpful.

Thanks,
Namhyung

#4 lore raw
In reply to Namhyung Kim

From: Namhyung Kim <[email protected]>
Date: Fri, 04 May 2012 10:37:24 +0900

Quoted 12 lines

Hi,

Quoted 9 lines · Greg KH

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Quoted 7 lines
Quoted 5 lines

Do you really want to ensure that flex's build warnings fail the build?

thanks,

greg k-h

Can't reproduce it on my Fedora 17 box:

Because your glibc headers probably don't have the warn_unused_result attribute
in the extern declaration of fwrite() like Greg's do. �τθΊ{.nΗ+‰·Ÿ�‰­†+%ŠΛ�±ιέΆ�Šw�Ί{.nΗ+‰·�Š{±ώG«ι�Š{ayΊΚ‡Ϊ™λ,j­’f£’·hšοκ�‘κηz_θ�(­ιšŽŠέ’j"ϊΆm§��Ύ«ώG«ι�’Έ?™¨θ­Ϊ&£ψ§~αΆiO•ζ¬z·švΨ^Άm§��Γ �Άμ�’Έ?–I�

#5 lore raw

Hi,

Quoted 17 lines · David Miller

From: Namhyung Kim <[email protected]>
Date: Fri, 04 May 2012 10:37:24 +0900

Quoted 14 lines

Hi,

Quoted 11 lines · Greg KH

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
    CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Do you really want to ensure that flex's build warnings fail the build?

Quoted 9 lines
Quoted 5 lines
Quoted 3 lines

thanks,

greg k-h

Can't reproduce it on my Fedora 17 box:

Because your glibc headers probably don't have the warn_unused_result attribute in the extern declaration of fwrite() like Greg's do.

tools/perf/Makefile' adds -D_FORTIFY_SOURCE=2 on the compiler's command line, which in turn adds __attribute__ ((__warn_unused_result__))' to fwrite(3)'s prototypes, via __wur'. I double checked by pre-processing util/parse-events-flex.c' with the same arguments used by perf. fwrite(3) ends up being declared as:

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,

        size_t __n, FILE *__restrict __s) __attribute__

((__warn_unused_result__));

So it is definitively enabled, and used, on Fedora.

Above tests were done on Fedora 15/x86_64 and Fedora 16/x86_64, `perf' build without any issue there too.

my 0.2c,
- Arnaud

#6 lore raw

Hi,

Quoted 39 lines · Arnaud Lacombe

Hi,

Quoted 17 lines · David Miller

From: Namhyung Kim <[email protected]>
Date: Fri, 04 May 2012 10:37:24 +0900

Quoted 14 lines

Hi,

Quoted 11 lines · Greg KH

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
    CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Do you really want to ensure that flex's build warnings fail the build?

Quoted 9 lines
Quoted 5 lines
Quoted 3 lines

thanks,

greg k-h

Can't reproduce it on my Fedora 17 box:

Because your glibc headers probably don't have the warn_unused_result attribute in the extern declaration of fwrite() like Greg's do.

tools/perf/Makefile' adds -D_FORTIFY_SOURCE=2 on the compiler's command line, which in turn adds __attribute__ ((__warn_unused_result__))' to fwrite(3)'s prototypes, via __wur'. I double checked by pre-processing util/parse-events-flex.c' with the same arguments used by perf. fwrite(3) ends up being declared as:

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,

        size_t __n, FILE *__restrict __s) __attribute__

((__warn_unused_result__));

Quoted 7 lines

So it is definitively enabled, and used, on Fedora.

Above tests were done on Fedora 15/x86_64 and Fedora 16/x86_64, `perf' build without any issue there too.

my 0.2c,
- Arnaud

On my desktop:

$ make util/parse-events-flex.i
    CC util/parse-events-flex.i
$ grep -A1 'size_t fwrite' util/parse-events-flex.i
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));
--
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));

Thanks,
Namhyung

#7 lore raw
In reply to Arnaud Lacombe

Hi,

Quoted 35 lines · Arnaud Lacombe

Hi,

Quoted 17 lines · David Miller

From: Namhyung Kim <[email protected]>
Date: Fri, 04 May 2012 10:37:24 +0900

Quoted 14 lines

Hi,

Quoted 11 lines · Greg KH

Linus's tree right now (3.4.rc5.67.gac001.dirty) gives me the following
build error when I try to build perf:
    CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Do you really want to ensure that flex's build warnings fail the build?

Quoted 9 lines
Quoted 5 lines
Quoted 3 lines

thanks,

greg k-h

Can't reproduce it on my Fedora 17 box:

Because your glibc headers probably don't have the warn_unused_result attribute in the extern declaration of fwrite() like Greg's do.

tools/perf/Makefile' adds -D_FORTIFY_SOURCE=2 on the compiler's command line, which in turn adds __attribute__ ((__warn_unused_result__))' to fwrite(3)'s prototypes, via __wur'. I double checked by pre-processing util/parse-events-flex.c' with the same arguments used by perf. fwrite(3) ends up being declared as:

Quoted 9 lines

extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));

So it is definitively enabled, and used, on Fedora.

Above tests were done on Fedora 15/x86_64 and Fedora 16/x86_64, `perf' build without any issue there too.

it would seem that OpenSuse 12.1 and Fedora ship the same `flex' package, upstream version 2.5.35. However, Fedora specifically harden flex(1) wrt. lacks of fwrite(3)'s return value check, see [0] for the exact patch.

- Arnaud

[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 2 lines

my 0.2c,
 - Arnaud

author
#9 lore raw
Quoted 8 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.) Do I have to bisect it down to find the problem?

greg

#10 lore raw

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

- Arnaud

author
#11 lore raw
Quoted 17 lines · Arnaud Lacombe

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

Quoted 6 lines

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

Well, it can allow bison to run, but just don't break the build if the generated code it creates happens to contain warnings.

I'm using bison 2.5 and flex 2.5.35, and my phone number is...

Like this really matters? This needs to work for everyone, if not, you better put the specific version numbers you need to require in the Documentation/Changes file.

So, how do I fix this?

greg k-h

#12 lore raw

Hi,

Quoted 25 lines · Greg KH
Quoted 17 lines · Arnaud Lacombe

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

Quoted 6 lines

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

Quoted 9 lines

Well, it can allow bison to run, but just don't break the build if the generated code it creates happens to contain warnings.

I'm using bison 2.5 and flex 2.5.35, and my phone number is...

Like this really matters?  This needs to work for everyone, if not, you better put the specific version numbers you need to require in the Documentation/Changes file.

This will not really help. Fedora and OpenSuse both ship flex 2.5.35, which happens to both produce different output. It will be a real mess to track which patch is applied by such or such distro which results in such behavior.

Now, I agree with you. This does not *need* to work, it *must*. Removing the dependency on bison/flex for normal users would make it more manageable, from my point of view.

Quoted 2 lines

So, how do I fix this?

you may either want to try the attached patch, or wait for `perf's folks to look at this issue.

- Arnaud

ps: btw, please do not shoot at the messenger, I had nothing to do with `util/perf' before you Cc'ed me. I'm just proposing solutions...

#13 lore raw

PATCH 1/1 perf: Fix build failure on OpenSuse userspace

In reply to Greg KH
Quoted 28 lines · Greg KH
Quoted 17 lines · Arnaud Lacombe

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

Quoted 6 lines

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

Well, it can allow bison to run, but just don't break the build if the generated code it creates happens to contain warnings.

Quoted 7 lines

I'm using bison 2.5 and flex 2.5.35, and my phone number is...

Like this really matters? This needs to work for everyone, if not, you better put the specific version numbers you need to require in the Documentation/Changes file.

So, how do I fix this?

Does the (untested) patch below help?

If not then please paste me the build failure output (it will most likely change due to the patch), and until we fix this build regression on OpenSuse userspace you can work it around via:

make WERROR=0

Thanks,

Ingo

tools/perf/Makefile +2 -2
index 7055a00..3174e9b 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
 # over the general rule for .o
 
 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<
 
 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<
 
 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
#14 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Hi,

Quoted 63 lines · Ingo Molnar
Quoted 28 lines · Greg KH
Quoted 17 lines · Arnaud Lacombe

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

Quoted 6 lines

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

Well, it can allow bison to run, but just don't break the build if the generated code it creates happens to contain warnings.

Quoted 7 lines

I'm using bison 2.5 and flex 2.5.35, and my phone number is...

Like this really matters?  This needs to work for everyone, if not, you better put the specific version numbers you need to require in the Documentation/Changes file.

So, how do I fix this?

Does the (untested) patch below help?

If not then please paste me the build failure output (it will most likely change due to the patch), and until we fix this build regression on OpenSuse userspace you can work it around via:

 make WERROR=0

Thanks,

       Ingo

tools/perf/Makefile +0 -0
index 7055a00..3174e9b 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
  # over the general rule for .o
 

 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<

Quoted 7 lines

 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<

 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<

You can find the build failure log in <[email protected]>, pasted here for reference:

CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

So I doubt -Wno-unused-parameter will do any good here.

How about my solution, pre-generating the lexer/tokenizer ? It has been used without trouble in other place of the tree for years. I don't really see the point of micro-managing flex/bison issue here.

- Arnaud

#15 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Hi,

Quoted 4 lines · Arnaud Lacombe

How about my solution, pre-generating the lexer/tokenizer ? It has been used without trouble in other place of the tree for years. I don't really see the point of micro-managing flex/bison issue here.

There was a discussion:

https://lkml.org/lkml/2012/3/27/263

Thanks,
Namhyung

author
#16 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Quoted 11 lines · Namhyung Kim

Hi,

Quoted 4 lines · Arnaud Lacombe

How about my solution, pre-generating the lexer/tokenizer ? It has been used without trouble in other place of the tree for years. I don't really see the point of micro-managing flex/bison issue here.

There was a discussion:

https://lkml.org/lkml/2012/3/27/263

Yes, and I agree with Ingo on this, you can require flex and bison to build this code, I have no problem with that.

It's the "you must build with this specific version that is not possible for your distro otherwise the build will break" side affect of this that I do have a problem with :)

Why can't we turn off "build error on warning" for just these generated files?

thanks,

greg k-h

#17 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

In reply to Arnaud Lacombe

Em Fri, May 04, 2012 at 10:44:28AM -0400, Arnaud Lacombe escreveu:

Quoted 10 lines

CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Quoted 5 lines

So I doubt -Wno-unused-parameter will do any good here.

How about my solution, pre-generating the lexer/tokenizer ? It has been used without trouble in other place of the tree for years. I don't really see the point of micro-managing flex/bison issue here.

This was what we did in the first place:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=89812fc81f8d62d70433a8ff63d26819f372e8ec

Then we asked Linus about it and he said:

https://lkml.org/lkml/2012/3/28/417

So we:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=65f3e56e0c81d1f581c4bdef7646ae5a8d51f494

- Arnaldo

#18 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

In reply to Arnaud Lacombe
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Ingo Molnar

* Greg KH <[email protected]> wrote:

SNIP

Quoted 31 lines
Quoted 11 lines
tools/perf/Makefile +0 -0
index 7055a00..3174e9b 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
  # over the general rule for .o
 

 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<

Quoted 7 lines

 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<

 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<

You can find the build failure log in <[email protected]>, pasted here for reference:

CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Quoted 1 line

So I doubt -Wno-unused-parameter will do any good here.

I think we need also -Wno-sign-compare, please check the attached patch

jirka

---

tools/perf/Makefile +2 -2
index 7055a00..8f7b6cf 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
 # over the general rule for .o
 
 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare $<
 
 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare $<
 
 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
#19 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Hi,

Quoted 10 lines · Jiri Olsa
Quoted 1 line

So I doubt -Wno-unused-parameter will do any good here.

I think we need also -Wno-sign-compare, please check the attached patch

---

tools/perf/Makefile +0 -0
index 7055a00..8f7b6cf 100644

tools/perf/Makefile $(OUTPUT)perf.o perf.spec \ · line 733

Quoted 6 lines
tools/perf/Makefile +1 -1
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
 # over the general rule for .o
 
 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare $<
 

s/unused-parameter/unused-result/ ?

Thanks,
Namhyung

Quoted 6 lines
tools/perf/Makefile +1 -1
 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare $<
 
 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
author
#20 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

In reply to Ingo Molnar
Quoted 1 line · Ingo Molnar

Does the (untested) patch below help?

No :(

Quoted 4 lines

If not then please paste me the build failure output (it will most likely change due to the patch), and until we fix this build regression on OpenSuse userspace you can work it around via:

Here's the error, it looks identical to what I previously had:

CC perf.o
CC util/parse-events-flex.o
<stdout>: In function ‘yy_get_next_buffer’:
<stdout>:1510:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] util/parse-events.l: In function ‘parse_events_lex’:
util/parse-events.l:122:1: error: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

Quoted 1 line

make WERROR=0

Thanks, that works for me for now, but obviously, not a real solution :)

greg k-h

#21 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

In reply to Ingo Molnar
Quoted 59 lines · Ingo Molnar
Quoted 28 lines · Greg KH
Quoted 17 lines · Arnaud Lacombe

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

Quoted 6 lines

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

Well, it can allow bison to run, but just don't break the build if the generated code it creates happens to contain warnings.

Quoted 7 lines

I'm using bison 2.5 and flex 2.5.35, and my phone number is...

Like this really matters?  This needs to work for everyone, if not, you better put the specific version numbers you need to require in the Documentation/Changes file.

So, how do I fix this?

Does the (untested) patch below help?

If not then please paste me the build failure output (it will most likely change due to the patch), and until we fix this build regression on OpenSuse userspace you can work it around via:

 make WERROR=0

Thanks,

       Ingo

tools/perf/Makefile +0 -0
index 7055a00..3174e9b 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
  # over the general rule for .o
 
Quoted 3 lines

 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<

Nah. What you need is -Wno-sign-compare.

But you are better off overriding the CFLAGS for these generated files. Just put -Wno-error as the last one (untested, but should work)

Lucas De Marchi

#22 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Quoted 60 lines · Lucas De Marchi
Quoted 59 lines · Ingo Molnar
Quoted 28 lines · Greg KH
Quoted 17 lines · Arnaud Lacombe

Hi,

Quoted 7 lines · Greg KH
Quoted 6 lines · Arnaud Lacombe

Hi,

Quoted 3 lines · Arnaud Lacombe

[...]
[0]: http://pkgs.fedoraproject.org/gitweb/?p=flex.git;a=blob;f=flex-2.5.35-hardening.patch;h=7d608ea2371fa3295bdb8eb97c15eeb03029c02b;hb=HEAD

Quoted 7 lines
Quoted 2 lines

as a side note, this patch sounds more being about "silencing" than "hardening"...

That's nice, but I can build the perf version in 3.3 just fine, so something broke here (hint, build regression.)  Do I have to bisect it down to find the problem?

Quoted 6 lines

there is most likely nothing to bisect, perf' seems to have never required any parser before 3.4. The way the rest of the tools (especially kconfig', genksyms' and dtc') manage parsers is via pre-generated .[ch]_shipped version of the lexer/tokenizer. It's been working well for a long time as such. `perf' will certainly have to follow the same path.

Well, it can allow bison to run, but just don't break the build if the generated code it creates happens to contain warnings.

Quoted 7 lines

I'm using bison 2.5 and flex 2.5.35, and my phone number is...

Like this really matters?  This needs to work for everyone, if not, you better put the specific version numbers you need to require in the Documentation/Changes file.

So, how do I fix this?

Does the (untested) patch below help?

If not then please paste me the build failure output (it will most likely change due to the patch), and until we fix this build regression on OpenSuse userspace you can work it around via:

 make WERROR=0

Thanks,

       Ingo

tools/perf/Makefile +0 -0
index 7055a00..3174e9b 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
  # over the general rule for .o
 
Quoted 8 lines
Quoted 3 lines

 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+       $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function -Wno-unused-parameter $<

Nah. What you need is -Wno-sign-compare.

But you are better off overriding the CFLAGS for these generated files. Just put -Wno-error as the last one (untested, but should work)

yep, I think it's good idea.. and plus '-w' to suppres warnings not to polute the build log

jirka

---

tools/perf/Makefile +2 -2
index 7055a00..9c734a2 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
 # over the general rule for .o
 
 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-error -w $<
 
 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-error -w $<
 
 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
#23 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Hi,

Quoted 10 lines · Jiri Olsa
Quoted 4 lines · Lucas De Marchi

Nah. What you need is -Wno-sign-compare.

But you are better off overriding the CFLAGS for these generated files. Just put -Wno-error as the last one (untested, but should work)

yep, I think it's good idea.. and plus '-w' to suppres warnings not to polute the build log

jirka

Works well for me. But I guess -Wno-error turns into a nop if we use '-w', right?

Thank,
Namhyung

Quoted 20 lines

---

tools/perf/Makefile +2 -2
index 7055a00..9c734a2 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
 # over the general rule for .o
 
 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-error -w $<
 
 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-error -w $<
 
 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
#24 lore raw

Re: [patch] perf: Fix build failure on OpenSuse userspace

Quoted 9 lines · Namhyung Kim

Hi,

Quoted 6 lines · Jiri Olsa
Quoted 4 lines · Lucas De Marchi

Nah. What you need is -Wno-sign-compare.

But you are better off overriding the CFLAGS for these generated files. Just put -Wno-error as the last one (untested, but should work)

Quoted 7 lines
Quoted 4 lines

yep, I think it's good idea.. and plus '-w' to suppres warnings not to polute the build log

jirka

Works well for me. But I guess -Wno-error turns into a nop if we use '-w', right?

argghh.. right ;) misread the man page.. I tested -w is enough

thanks,
jirka

Quoted 26 lines

Thank,
Namhyung

Quoted 20 lines

---

tools/perf/Makefile +2 -2
index 7055a00..9c734a2 100644
@@ -729,10 +729,10 @@ $(OUTPUT)perf.o perf.spec \
 # over the general rule for .o
 
 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -Wno-error -w $<
 
 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-redundant-decls -Wno-switch-default -Wno-unused-function $<
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -Wno-error -w $<
 
 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<