* YACC y.tab.c Usage: /usr/bin/yacc [options] filename
@ 2014-10-06 21:12 Neto, Antonio Jose Rodrigues
2014-10-06 21:44 ` Stephen Cameron
0 siblings, 1 reply; 23+ messages in thread
From: Neto, Antonio Jose Rodrigues @ 2014-10-06 21:12 UTC (permalink / raw)
To: fio@vger.kernel.org
Hi All,
This is neto from Brazil
How are you?
Trying to compile fio on RHEL 6.4 and I've got this error (latest git).
Please any ideas how to fix it? (I've tried to use CONFIG_ARITHMETIC=n,
but not success)
CC verify.o
CC memory.o
CC io_u.o
LEX lex.yy.c
YACC y.tab.c
Usage: /usr/bin/yacc [options] filename
Options:
-b file_prefix set filename prefix (default "y.")
-d write definitions (y.tab.h)
-g write a graphical description
-l suppress #line directives
-o output_file (default "y.tab.c")
-p symbol_prefix set symbol prefix (default "yy")
-r produce separate code and table files (y.code.c)
-t add debugging support
-v write description (y.output)
-V show version information and exit
make: *** [y.tab.c] Error 1
Thank you,
neto
^ permalink raw reply [flat|nested] 23+ messages in thread* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 21:12 YACC y.tab.c Usage: /usr/bin/yacc [options] filename Neto, Antonio Jose Rodrigues @ 2014-10-06 21:44 ` Stephen Cameron [not found] ` <D05885C8.51DCC%Antonio.Jose.Rodrigues.Neto@netapp.com> 2014-10-06 22:34 ` Bruce Cran 0 siblings, 2 replies; 23+ messages in thread From: Stephen Cameron @ 2014-10-06 21:44 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues; +Cc: fio@vger.kernel.org On Mon, Oct 6, 2014 at 4:12 PM, Neto, Antonio Jose Rodrigues <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: > > Hi All, > > This is neto from Brazil > > How are you? > > Trying to compile fio on RHEL 6.4 and I've got this error (latest git). > > Please any ideas how to fix it? (I've tried to use CONFIG_ARITHMETIC=n, > but not success) > > CC verify.o > CC memory.o > CC io_u.o > LEX lex.yy.c > YACC y.tab.c > Usage: /usr/bin/yacc [options] filename > > Options: > -b file_prefix set filename prefix (default "y.") > -d write definitions (y.tab.h) > -g write a graphical description > -l suppress #line directives > -o output_file (default "y.tab.c") > -p symbol_prefix set symbol prefix (default "yy") > -r produce separate code and table files (y.code.c) > -t add debugging support > -v write description (y.output) > -V show version information and exit > make: *** [y.tab.c] Error 1 I suspect that your version of yacc does not comprehend the --no-lines option (which we needed only in order to avoid a bug in some other versions of yacc). From the usage message it does appear to understand both -d and -l though. Try changing the --no-lines option in the Makefile to -l instead, and see if that helps. You can also run "make V=1 > output.txt" to get more verbose output from make and get a clearer idea of what the offending command line is trying to do. -- steve ^ permalink raw reply [flat|nested] 23+ messages in thread
[parent not found: <D05885C8.51DCC%Antonio.Jose.Rodrigues.Neto@netapp.com>]
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename [not found] ` <D05885C8.51DCC%Antonio.Jose.Rodrigues.Neto@netapp.com> @ 2014-10-06 22:04 ` Stephen Cameron 2014-10-06 22:10 ` Neto, Antonio Jose Rodrigues 0 siblings, 1 reply; 23+ messages in thread From: Stephen Cameron @ 2014-10-06 22:04 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues; +Cc: fio@vger.kernel.org On Mon, Oct 6, 2014 at 4:49 PM, Neto, Antonio Jose Rodrigues <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: > > > On 10/6/14, 5:44 PM, "Stephen Cameron" <stephenmcameron@gmail.com> wrote: > >>On Mon, Oct 6, 2014 at 4:12 PM, Neto, Antonio Jose Rodrigues >><Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>> >>> Hi All, >>> >>> This is neto from Brazil >>> >>> How are you? >>> >>> Trying to compile fio on RHEL 6.4 and I've got this error (latest git). >>> >>> Please any ideas how to fix it? (I've tried to use CONFIG_ARITHMETIC=n, >>> but not success) >>> >>> CC verify.o >>> CC memory.o >>> CC io_u.o >>> LEX lex.yy.c >>> YACC y.tab.c >>> Usage: /usr/bin/yacc [options] filename >>> >>> Options: >>> -b file_prefix set filename prefix (default "y.") >>> -d write definitions (y.tab.h) >>> -g write a graphical description >>> -l suppress #line directives >>> -o output_file (default "y.tab.c") >>> -p symbol_prefix set symbol prefix (default "yy") >>> -r produce separate code and table files (y.code.c) >>> -t add debugging support >>> -v write description (y.output) >>> -V show version information and exit >>> make: *** [y.tab.c] Error 1 >> >>I suspect that your version of yacc does not comprehend the --no-lines >>option (which we needed only in order to avoid a bug in some other >>versions of yacc). From the usage message it does appear to >>understand both -d and -l though. >> >>Try changing the --no-lines option in the Makefile to -l instead, and >>see if that helps. >> >>You can also run "make V=1 > output.txt" to get more verbose output >>from make and get a clearer idea of what the offending command line is >>trying to do. >> >>-- steve > > Hi Steve, > > This is neto from Brazil > > How are you? > > I have tried with -l and I've got this: :-( > > YACC y.tab.c > /usr/bin/yacc: e - line 66 of "exp/expression-parser.y", syntax error > %parse-param { long long *result } > ^ > make: *** [y.tab.c] Error 1 > > > > [root@s1 fio]# make V=1 > gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall > -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include > config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' > -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL > -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c > exp/expression-parser.l: In function Œyylex¹: > exp/expression-parser.l:51: error: Œyylval¹ undeclared (first use in this > function) > exp/expression-parser.l:51: error: (Each undeclared identifier is reported > only once > exp/expression-parser.l:51: error: for each function it appears in.) > exp/expression-parser.l:52: error: ŒSUFFIX¹ undeclared (first use in this > function) > exp/expression-parser.l:122: error: ŒNUMBER¹ undeclared (first use in this > function) > make: *** [lex.yy.o] Error 1 [...] > Any other ideas? I found this: http://stackoverflow.com/questions/19691665/yyparse-argument-list-is-parse-param-portable which suggests that the "%parse-param" thing only works with bison, and with bsd's yacc, but not with at&t's yacc, which RHEL6.4 bison must be emulating all too faithfully. Try "make YACC=bison V=1" and see if that helps. -- steve ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:04 ` Stephen Cameron @ 2014-10-06 22:10 ` Neto, Antonio Jose Rodrigues 2014-10-06 22:25 ` Stephen Cameron 0 siblings, 1 reply; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-06 22:10 UTC (permalink / raw) To: Stephen Cameron; +Cc: fio@vger.kernel.org On 10/6/14, 6:04 PM, "Stephen Cameron" <stephenmcameron@gmail.com> wrote: >On Mon, Oct 6, 2014 at 4:49 PM, Neto, Antonio Jose Rodrigues ><Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >> >> >> On 10/6/14, 5:44 PM, "Stephen Cameron" <stephenmcameron@gmail.com> >>wrote: >> >>>On Mon, Oct 6, 2014 at 4:12 PM, Neto, Antonio Jose Rodrigues >>><Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>>> >>>> Hi All, >>>> >>>> This is neto from Brazil >>>> >>>> How are you? >>>> >>>> Trying to compile fio on RHEL 6.4 and I've got this error (latest >>>>git). >>>> >>>> Please any ideas how to fix it? (I've tried to use >>>>CONFIG_ARITHMETIC=n, >>>> but not success) >>>> >>>> CC verify.o >>>> CC memory.o >>>> CC io_u.o >>>> LEX lex.yy.c >>>> YACC y.tab.c >>>> Usage: /usr/bin/yacc [options] filename >>>> >>>> Options: >>>> -b file_prefix set filename prefix (default "y.") >>>> -d write definitions (y.tab.h) >>>> -g write a graphical description >>>> -l suppress #line directives >>>> -o output_file (default "y.tab.c") >>>> -p symbol_prefix set symbol prefix (default "yy") >>>> -r produce separate code and table files >>>>(y.code.c) >>>> -t add debugging support >>>> -v write description (y.output) >>>> -V show version information and exit >>>> make: *** [y.tab.c] Error 1 >>> >>>I suspect that your version of yacc does not comprehend the --no-lines >>>option (which we needed only in order to avoid a bug in some other >>>versions of yacc). From the usage message it does appear to >>>understand both -d and -l though. >>> >>>Try changing the --no-lines option in the Makefile to -l instead, and >>>see if that helps. >>> >>>You can also run "make V=1 > output.txt" to get more verbose output >>>from make and get a clearer idea of what the offending command line is >>>trying to do. >>> >>>-- steve >> >> Hi Steve, >> >> This is neto from Brazil >> >> How are you? >> >> I have tried with -l and I've got this: :-( >> >> YACC y.tab.c >> /usr/bin/yacc: e - line 66 of "exp/expression-parser.y", syntax error >> %parse-param { long long *result } >> ^ >> make: *** [y.tab.c] Error 1 >> >> >> >> [root@s1 fio]# make V=1 >> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include >> config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >> exp/expression-parser.l: In function Œyylex¹: >> exp/expression-parser.l:51: error: Œyylval¹ undeclared (first use in >>this >> function) >> exp/expression-parser.l:51: error: (Each undeclared identifier is >>reported >> only once >> exp/expression-parser.l:51: error: for each function it appears in.) >> exp/expression-parser.l:52: error: ŒSUFFIX¹ undeclared (first use in >>this >> function) >> exp/expression-parser.l:122: error: ŒNUMBER¹ undeclared (first use in >>this >> function) >> make: *** [lex.yy.o] Error 1 >[...] >> Any other ideas? > >I found this: > >http://stackoverflow.com/questions/19691665/yyparse-argument-list-is-parse >-param-portable > >which suggests that the "%parse-param" thing only works with bison, >and with bsd's yacc, but not with at&t's yacc, which RHEL6.4 bison >must be emulating all too faithfully. > >Try "make YACC=bison V=1" and see if that helps. > >-- steve >-- gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory exp/expression-parser.l: In function ‘yylex’: exp/expression-parser.l:51: error: ‘yylval’ undeclared (first use in this function) exp/expression-parser.l:51: error: (Each undeclared identifier is reported only once exp/expression-parser.l:51: error: for each function it appears in.) exp/expression-parser.l:52: error: ‘SUFFIX’ undeclared (first use in this function) exp/expression-parser.l:122: error: ‘NUMBER’ undeclared (first use in this function) make: *** [lex.yy.o] Error 1 ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:10 ` Neto, Antonio Jose Rodrigues @ 2014-10-06 22:25 ` Stephen Cameron 2014-10-06 22:28 ` Neto, Antonio Jose Rodrigues 2014-10-07 1:10 ` Jens Axboe 0 siblings, 2 replies; 23+ messages in thread From: Stephen Cameron @ 2014-10-06 22:25 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues; +Cc: fio@vger.kernel.org On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: > > [...] > > gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall > -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include > config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' > -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL > -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c > exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory > exp/expression-parser.l: In function ‘yylex’: > exp/expression-parser.l:51: error: ‘yylval’ undeclared (first use in this > function) > exp/expression-parser.l:51: error: (Each undeclared identifier is reported > only once > exp/expression-parser.l:51: error: for each function it appears in.) > exp/expression-parser.l:52: error: ‘SUFFIX’ undeclared (first use in this > function) > exp/expression-parser.l:122: error: ‘NUMBER’ undeclared (first use in this > function) > make: *** [lex.yy.o] Error 1 > > Ok, hmm. Try making the following change to the Makefile: --- a/Makefile +++ b/Makefile @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< y.tab.c: exp/expression-parser.y - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y + $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y y.tab.h: y.tab.c (I cut and pasted the above, so it is probably not a well formatted patch anymore). That is, add " -b y " into the line for yacc. bison by default doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c and xxx.tab.h, which makes more sense than what yacc does, but it's not what the makefile is expecting. The "-b y" tells bison to use "y" as the output file prefix, just as yacc normally does. then "make clean" and "make YACC=bison" and see if that works. -- steve ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:25 ` Stephen Cameron @ 2014-10-06 22:28 ` Neto, Antonio Jose Rodrigues 2014-10-06 22:31 ` Stephen Cameron 2014-10-07 1:10 ` Jens Axboe 1 sibling, 1 reply; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-06 22:28 UTC (permalink / raw) To: Stephen Cameron; +Cc: fio@vger.kernel.org On 10/6/14, 6:25 PM, "Stephen Cameron" <stephenmcameron@gmail.com> wrote: >On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues ><Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >> >> >[...] >> >> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include >> config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >> exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory >> exp/expression-parser.l: In function �yylex�: >> exp/expression-parser.l:51: error: �yylval� undeclared (first use in >>this >> function) >> exp/expression-parser.l:51: error: (Each undeclared identifier is >>reported >> only once >> exp/expression-parser.l:51: error: for each function it appears in.) >> exp/expression-parser.l:52: error: �SUFFIX� undeclared (first use in >>this >> function) >> exp/expression-parser.l:122: error: �NUMBER� undeclared (first use in >>this >> function) >> make: *** [lex.yy.o] Error 1 >> >> > >Ok, hmm. > >Try making the following change to the Makefile: > >--- a/Makefile >+++ b/Makefile >@@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h > $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< > > y.tab.c: exp/expression-parser.y >- $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >+ $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y > > y.tab.h: y.tab.c > >(I cut and pasted the above, so it is probably not a well formatted >patch anymore). > >That is, add " -b y " into the line for yacc. bison by default >doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >and xxx.tab.h, which makes more sense than what yacc does, but it's >not what the makefile is expecting. The "-b y" tells bison to use "y" >as the output file prefix, just as yacc normally does. > >then "make clean" and "make YACC=bison" and see if that works. > >-- steve Steve, This is neto from Brazil How are you? Thank you VERY MUCH. It worked. LINK fio CC t/stest.o CC t/log.o CC t/debug.o LINK t/stest CC t/ieee754.o LINK t/ieee754 CC t/genzipf.o LINK t/genzipf CC t/axmap.o LINK t/axmap CC t/lfsr-test.o LINK t/lfsr-test CC t/btrace2fio.o LINK t/btrace2fio CC t/dedupe.o LINK t/dedupe All the best, neto ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:28 ` Neto, Antonio Jose Rodrigues @ 2014-10-06 22:31 ` Stephen Cameron 2014-10-07 1:18 ` Jens Axboe 0 siblings, 1 reply; 23+ messages in thread From: Stephen Cameron @ 2014-10-06 22:31 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues; +Cc: fio@vger.kernel.org Glad I could help, and that this got fio going for you, and it's ok as a temporary fix, but really, it should just work without having to mess around with such things, so I still have some work to do to figure out how to make that happen. -- steve On Mon, Oct 6, 2014 at 5:28 PM, Neto, Antonio Jose Rodrigues <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: > > > On 10/6/14, 6:25 PM, "Stephen Cameron" <stephenmcameron@gmail.com> wrote: > >>On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >><Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>> >>> >>[...] >>> >>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include >>> config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory >>> exp/expression-parser.l: In function Œyylex¹: >>> exp/expression-parser.l:51: error: Œyylval¹ undeclared (first use in >>>this >>> function) >>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>>reported >>> only once >>> exp/expression-parser.l:51: error: for each function it appears in.) >>> exp/expression-parser.l:52: error: ŒSUFFIX¹ undeclared (first use in >>>this >>> function) >>> exp/expression-parser.l:122: error: ŒNUMBER¹ undeclared (first use in >>>this >>> function) >>> make: *** [lex.yy.o] Error 1 >>> >>> >> >>Ok, hmm. >> >>Try making the following change to the Makefile: >> >>--- a/Makefile >>+++ b/Makefile >>@@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >> >> y.tab.c: exp/expression-parser.y >>- $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >>+ $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y >> >> y.tab.h: y.tab.c >> >>(I cut and pasted the above, so it is probably not a well formatted >>patch anymore). >> >>That is, add " -b y " into the line for yacc. bison by default >>doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >>and xxx.tab.h, which makes more sense than what yacc does, but it's >>not what the makefile is expecting. The "-b y" tells bison to use "y" >>as the output file prefix, just as yacc normally does. >> >>then "make clean" and "make YACC=bison" and see if that works. >> >>-- steve > > > Steve, > > This is neto from Brazil > > How are you? > > Thank you VERY MUCH. It worked. > > LINK fio > CC t/stest.o > CC t/log.o > CC t/debug.o > LINK t/stest > CC t/ieee754.o > LINK t/ieee754 > CC t/genzipf.o > LINK t/genzipf > CC t/axmap.o > LINK t/axmap > CC t/lfsr-test.o > LINK t/lfsr-test > CC t/btrace2fio.o > LINK t/btrace2fio > CC t/dedupe.o > LINK t/dedupe > > > > All the best, > > neto > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:31 ` Stephen Cameron @ 2014-10-07 1:18 ` Jens Axboe 0 siblings, 0 replies; 23+ messages in thread From: Jens Axboe @ 2014-10-07 1:18 UTC (permalink / raw) To: Stephen Cameron, Neto, Antonio Jose Rodrigues; +Cc: fio@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 456 bytes --] On 2014-10-06 16:31, Stephen Cameron wrote: > Glad I could help, and that this got fio going for you, and it's ok as > a temporary fix, but really, it should just work without having to > mess around with such things, so I still have some work to do to > figure out how to make that happen. Neto, can you try this patch? It's basically what Steve sent, just wrapped up into a complete patch. Apply the patch, make clean, and then make. -- Jens Axboe [-- Attachment #2: bison.patch --] [-- Type: text/x-patch, Size: 933 bytes --] diff --git a/Makefile b/Makefile index d735ec7e991d..1c2994366718 100644 --- a/Makefile +++ b/Makefile @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< y.tab.c: exp/expression-parser.y - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y + $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y y.tab.h: y.tab.c diff --git a/configure b/configure index f7d8ff92b22c..e3ec25232706 100755 --- a/configure +++ b/configure @@ -1279,14 +1279,14 @@ LEX=$(which lex 2> /dev/null) if test -x "$LEX" ; then lex="yes" fi -YACC=$(which yacc 2> /dev/null) +YACC=$(which bison 2> /dev/null) if test -x "$YACC" ; then yacc="yes" + yacc_is_bison="yes" else - YACC=$(which bison 2> /dev/null) + YACC=$(which yacc 2> /dev/null) if test -x "$YACC" ; then yacc="yes" - yacc_is_bison="yes" fi fi if test "$yacc" = "yes" && test "$lex" = "yes" ; then ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:25 ` Stephen Cameron 2014-10-06 22:28 ` Neto, Antonio Jose Rodrigues @ 2014-10-07 1:10 ` Jens Axboe 2014-10-07 1:26 ` Stephen Cameron 1 sibling, 1 reply; 23+ messages in thread From: Jens Axboe @ 2014-10-07 1:10 UTC (permalink / raw) To: Stephen Cameron, Neto, Antonio Jose Rodrigues; +Cc: fio@vger.kernel.org On 2014-10-06 16:25, Stephen Cameron wrote: > On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues > <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >> >> > [...] >> >> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include >> config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >> exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory >> exp/expression-parser.l: In function ‘yylex’: >> exp/expression-parser.l:51: error: ‘yylval’ undeclared (first use in this >> function) >> exp/expression-parser.l:51: error: (Each undeclared identifier is reported >> only once >> exp/expression-parser.l:51: error: for each function it appears in.) >> exp/expression-parser.l:52: error: ‘SUFFIX’ undeclared (first use in this >> function) >> exp/expression-parser.l:122: error: ‘NUMBER’ undeclared (first use in this >> function) >> make: *** [lex.yy.o] Error 1 >> >> > > Ok, hmm. > > Try making the following change to the Makefile: > > --- a/Makefile > +++ b/Makefile > @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h > $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< > > y.tab.c: exp/expression-parser.y > - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y > + $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y > > y.tab.h: y.tab.c > > (I cut and pasted the above, so it is probably not a well formatted > patch anymore). > > That is, add " -b y " into the line for yacc. bison by default > doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c > and xxx.tab.h, which makes more sense than what yacc does, but it's > not what the makefile is expecting. The "-b y" tells bison to use "y" > as the output file prefix, just as yacc normally does. > > then "make clean" and "make YACC=bison" and see if that works. Should we default to using bison? Right now it checks for yacc first, and uses that if available. If not, it checks for bison and uses that. Would be easy enough to move around in configure. -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 1:10 ` Jens Axboe @ 2014-10-07 1:26 ` Stephen Cameron 2014-10-07 2:18 ` Jens Axboe 0 siblings, 1 reply; 23+ messages in thread From: Stephen Cameron @ 2014-10-07 1:26 UTC (permalink / raw) To: Jens Axboe; +Cc: Neto, Antonio Jose Rodrigues, fio@vger.kernel.org On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@kernel.dk> wrote: > On 2014-10-06 16:25, Stephen Cameron wrote: >> >> On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >> <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>> >>> >>> >> [...] >>> >>> >>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include >>> config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory >>> exp/expression-parser.l: In function ‘yylex’: >>> exp/expression-parser.l:51: error: ‘yylval’ undeclared (first use in this >>> function) >>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>> reported >>> only once >>> exp/expression-parser.l:51: error: for each function it appears in.) >>> exp/expression-parser.l:52: error: ‘SUFFIX’ undeclared (first use in this >>> function) >>> exp/expression-parser.l:122: error: ‘NUMBER’ undeclared (first use in >>> this >>> function) >>> make: *** [lex.yy.o] Error 1 >>> >>> >> >> Ok, hmm. >> >> Try making the following change to the Makefile: >> >> --- a/Makefile >> +++ b/Makefile >> @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >> >> y.tab.c: exp/expression-parser.y >> - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >> + $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y >> >> y.tab.h: y.tab.c >> >> (I cut and pasted the above, so it is probably not a well formatted >> patch anymore). >> >> That is, add " -b y " into the line for yacc. bison by default >> doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >> and xxx.tab.h, which makes more sense than what yacc does, but it's >> not what the makefile is expecting. The "-b y" tells bison to use "y" >> as the output file prefix, just as yacc normally does. >> >> then "make clean" and "make YACC=bison" and see if that works. > > > Should we default to using bison? Right now it checks for yacc first, and > uses that if available. If not, it checks for bison and uses that. Would be > easy enough to move around in configure. I'm not sure, I haven't proposed a real fix because I'm not sure what a real fix should look like. We're using %parse-param, and I think yacc, or bison doing an exceptionally good job of pretending to be yacc, can't handle that. I guess the versions of bison that I have seen do not do such a perfect job of pretending to be yacc, and allow %parse-params to work anyway. So the real fix might be to figure out how to get away without using %parse-param, so that yacc can deal with it. Or maybe we just require bison? Maybe nowadays everyone has bison? Neto also mentioned that he wasn't able to build with arithmetic configured off. I didn't try to chase that down. -- steve ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 1:26 ` Stephen Cameron @ 2014-10-07 2:18 ` Jens Axboe 2014-10-07 13:39 ` Neto, Antonio Jose Rodrigues 0 siblings, 1 reply; 23+ messages in thread From: Jens Axboe @ 2014-10-07 2:18 UTC (permalink / raw) To: Stephen Cameron; +Cc: Neto, Antonio Jose Rodrigues, fio@vger.kernel.org On 2014-10-06 19:26, Stephen Cameron wrote: > On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@kernel.dk> wrote: >> On 2014-10-06 16:25, Stephen Cameron wrote: >>> >>> On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >>> <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>>> >>>> >>>> >>> [...] >>>> >>>> >>>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include >>>> config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or directory >>>> exp/expression-parser.l: In function ‘yylex’: >>>> exp/expression-parser.l:51: error: ‘yylval’ undeclared (first use in this >>>> function) >>>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>>> reported >>>> only once >>>> exp/expression-parser.l:51: error: for each function it appears in.) >>>> exp/expression-parser.l:52: error: ‘SUFFIX’ undeclared (first use in this >>>> function) >>>> exp/expression-parser.l:122: error: ‘NUMBER’ undeclared (first use in >>>> this >>>> function) >>>> make: *** [lex.yy.o] Error 1 >>>> >>>> >>> >>> Ok, hmm. >>> >>> Try making the following change to the Makefile: >>> >>> --- a/Makefile >>> +++ b/Makefile >>> @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >>> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >>> >>> y.tab.c: exp/expression-parser.y >>> - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >>> + $(QUIET_YACC)$(YACC) --no-lines -d -b y exp/expression-parser.y >>> >>> y.tab.h: y.tab.c >>> >>> (I cut and pasted the above, so it is probably not a well formatted >>> patch anymore). >>> >>> That is, add " -b y " into the line for yacc. bison by default >>> doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >>> and xxx.tab.h, which makes more sense than what yacc does, but it's >>> not what the makefile is expecting. The "-b y" tells bison to use "y" >>> as the output file prefix, just as yacc normally does. >>> >>> then "make clean" and "make YACC=bison" and see if that works. >> >> >> Should we default to using bison? Right now it checks for yacc first, and >> uses that if available. If not, it checks for bison and uses that. Would be >> easy enough to move around in configure. > > I'm not sure, I haven't proposed a real fix because I'm not sure what > a real fix should look like. We're using %parse-param, and I think > yacc, or bison doing an exceptionally good job of pretending to be > yacc, can't handle that. I guess the versions of bison that I have > seen do not do such a perfect job of pretending to be yacc, and allow > %parse-params to work anyway. So the real fix might be to figure out > how to get away without using %parse-param, so that yacc can deal with > it. > > Or maybe we just require bison? Maybe nowadays everyone has bison? It's probably a safer choice than defaulting to yacc, me thinks... We'll see how that goes. I might have to extend and improve it to check not just if it's there, but if it actually works for our case as well. But baby steps, perhaps this is enough. > Neto also mentioned that he wasn't able to build with arithmetic > configured off. I didn't try to chase that down. I think that's a build issue due to hand editing stuff and attempting a build. The current code builds fine if it's off, I definitely tested that prior to pulling things in. -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 2:18 ` Jens Axboe @ 2014-10-07 13:39 ` Neto, Antonio Jose Rodrigues 2014-10-07 13:51 ` Neto, Antonio Jose Rodrigues 2014-10-07 14:16 ` Jens Axboe 0 siblings, 2 replies; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-07 13:39 UTC (permalink / raw) To: Jens Axboe, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/6/14, 10:18 PM, "Jens Axboe" <axboe@kernel.dk> wrote: >On 2014-10-06 19:26, Stephen Cameron wrote: >> On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@kernel.dk> wrote: >>> On 2014-10-06 16:25, Stephen Cameron wrote: >>>> >>>> On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >>>> <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>>>> >>>>> >>>>> >>>> [...] >>>>> >>>>> >>>>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>>>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE >>>>>-include >>>>> config-host.h -DBITS_PER_LONG=64 >>>>>-DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>>>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>>>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>>>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or >>>>>directory >>>>> exp/expression-parser.l: In function Œyylex¹: >>>>> exp/expression-parser.l:51: error: Œyylval¹ undeclared (first use in >>>>>this >>>>> function) >>>>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>>>> reported >>>>> only once >>>>> exp/expression-parser.l:51: error: for each function it appears in.) >>>>> exp/expression-parser.l:52: error: ŒSUFFIX¹ undeclared (first use in >>>>>this >>>>> function) >>>>> exp/expression-parser.l:122: error: ŒNUMBER¹ undeclared (first use in >>>>> this >>>>> function) >>>>> make: *** [lex.yy.o] Error 1 >>>>> >>>>> >>>> >>>> Ok, hmm. >>>> >>>> Try making the following change to the Makefile: >>>> >>>> --- a/Makefile >>>> +++ b/Makefile >>>> @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >>>> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >>>> >>>> y.tab.c: exp/expression-parser.y >>>> - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >>>> + $(QUIET_YACC)$(YACC) --no-lines -d -b y >>>>exp/expression-parser.y >>>> >>>> y.tab.h: y.tab.c >>>> >>>> (I cut and pasted the above, so it is probably not a well formatted >>>> patch anymore). >>>> >>>> That is, add " -b y " into the line for yacc. bison by default >>>> doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >>>> and xxx.tab.h, which makes more sense than what yacc does, but it's >>>> not what the makefile is expecting. The "-b y" tells bison to use "y" >>>> as the output file prefix, just as yacc normally does. >>>> >>>> then "make clean" and "make YACC=bison" and see if that works. >>> >>> >>> Should we default to using bison? Right now it checks for yacc first, >>>and >>> uses that if available. If not, it checks for bison and uses that. >>>Would be >>> easy enough to move around in configure. >> >> I'm not sure, I haven't proposed a real fix because I'm not sure what >> a real fix should look like. We're using %parse-param, and I think >> yacc, or bison doing an exceptionally good job of pretending to be >> yacc, can't handle that. I guess the versions of bison that I have >> seen do not do such a perfect job of pretending to be yacc, and allow >> %parse-params to work anyway. So the real fix might be to figure out >> how to get away without using %parse-param, so that yacc can deal with >> it. >> >> Or maybe we just require bison? Maybe nowadays everyone has bison? > >It's probably a safer choice than defaulting to yacc, me thinks... We'll >see how that goes. I might have to extend and improve it to check not >just if it's there, but if it actually works for our case as well. But >baby steps, perhaps this is enough. > >> Neto also mentioned that he wasn't able to build with arithmetic >> configured off. I didn't try to chase that down. > >I think that's a build issue due to hand editing stuff and attempting a >build. The current code builds fine if it's off, I definitely tested >that prior to pulling things in. > >-- >Jens Axboe Hi Jens, This is neto from Brazil How are you? I have applied the latest commit. On MAC: Still getting warnings: YACC y.tab.c CC lex.yy.o lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' (aka 'unsigned long *') to parameter of type 'int *' [-Wincompatible-pointer-types] ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' lexer_input((buffer), &(bytes_read), (bytes_requested)) ^~~~~~~~~~~~~ exp/expression-parser.l:27:43: note: passing argument to parameter 'nbytes' here extern int lexer_input(char* buffer, int *nbytes, int buffersize); ^ On Linux (RedHat 6.4) All good :-) Thank you, neto ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 13:39 ` Neto, Antonio Jose Rodrigues @ 2014-10-07 13:51 ` Neto, Antonio Jose Rodrigues 2014-10-07 14:17 ` Jens Axboe 2014-10-07 14:16 ` Jens Axboe 1 sibling, 1 reply; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-07 13:51 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues, Jens Axboe, Stephen Cameron Cc: fio@vger.kernel.org On 10/7/14, 9:39 AM, "Neto, Antonio Jose Rodrigues" <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: > > >On 10/6/14, 10:18 PM, "Jens Axboe" <axboe@kernel.dk> wrote: > >>On 2014-10-06 19:26, Stephen Cameron wrote: >>> On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@kernel.dk> wrote: >>>> On 2014-10-06 16:25, Stephen Cameron wrote: >>>>> >>>>> On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >>>>> <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>>>>> >>>>>> >>>>>> >>>>> [...] >>>>>> >>>>>> >>>>>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>>>>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE >>>>>>-include >>>>>> config-host.h -DBITS_PER_LONG=64 >>>>>>-DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>>>>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>>>>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>>>>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or >>>>>>directory >>>>>> exp/expression-parser.l: In function Œyylex¹: >>>>>> exp/expression-parser.l:51: error: Œyylval¹ undeclared (first use in >>>>>>this >>>>>> function) >>>>>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>>>>> reported >>>>>> only once >>>>>> exp/expression-parser.l:51: error: for each function it appears in.) >>>>>> exp/expression-parser.l:52: error: ŒSUFFIX¹ undeclared (first use in >>>>>>this >>>>>> function) >>>>>> exp/expression-parser.l:122: error: ŒNUMBER¹ undeclared (first use >>>>>>in >>>>>> this >>>>>> function) >>>>>> make: *** [lex.yy.o] Error 1 >>>>>> >>>>>> >>>>> >>>>> Ok, hmm. >>>>> >>>>> Try making the following change to the Makefile: >>>>> >>>>> --- a/Makefile >>>>> +++ b/Makefile >>>>> @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >>>>> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >>>>> >>>>> y.tab.c: exp/expression-parser.y >>>>> - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >>>>> + $(QUIET_YACC)$(YACC) --no-lines -d -b y >>>>>exp/expression-parser.y >>>>> >>>>> y.tab.h: y.tab.c >>>>> >>>>> (I cut and pasted the above, so it is probably not a well formatted >>>>> patch anymore). >>>>> >>>>> That is, add " -b y " into the line for yacc. bison by default >>>>> doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >>>>> and xxx.tab.h, which makes more sense than what yacc does, but it's >>>>> not what the makefile is expecting. The "-b y" tells bison to use >>>>>"y" >>>>> as the output file prefix, just as yacc normally does. >>>>> >>>>> then "make clean" and "make YACC=bison" and see if that works. >>>> >>>> >>>> Should we default to using bison? Right now it checks for yacc first, >>>>and >>>> uses that if available. If not, it checks for bison and uses that. >>>>Would be >>>> easy enough to move around in configure. >>> >>> I'm not sure, I haven't proposed a real fix because I'm not sure what >>> a real fix should look like. We're using %parse-param, and I think >>> yacc, or bison doing an exceptionally good job of pretending to be >>> yacc, can't handle that. I guess the versions of bison that I have >>> seen do not do such a perfect job of pretending to be yacc, and allow >>> %parse-params to work anyway. So the real fix might be to figure out >>> how to get away without using %parse-param, so that yacc can deal with >>> it. >>> >>> Or maybe we just require bison? Maybe nowadays everyone has bison? >> >>It's probably a safer choice than defaulting to yacc, me thinks... We'll >>see how that goes. I might have to extend and improve it to check not >>just if it's there, but if it actually works for our case as well. But >>baby steps, perhaps this is enough. >> >>> Neto also mentioned that he wasn't able to build with arithmetic >>> configured off. I didn't try to chase that down. >> >>I think that's a build issue due to hand editing stuff and attempting a >>build. The current code builds fine if it's off, I definitely tested >>that prior to pulling things in. >> >>-- >>Jens Axboe > > > >Hi Jens, > >This is neto from Brazil > >How are you? > >I have applied the latest commit. > >On MAC: > >Still getting warnings: > > YACC y.tab.c > CC lex.yy.o >lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' > (aka 'unsigned long *') to parameter of type 'int *' > [-Wincompatible-pointer-types] > ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' > lexer_input((buffer), &(bytes_read), (bytes_requested)) > ^~~~~~~~~~~~~ >exp/expression-parser.l:27:43: note: passing argument to parameter >'nbytes' here >extern int lexer_input(char* buffer, int *nbytes, int buffersize); > ^ > > > >On Linux (RedHat 6.4) > >All good :-) > >Thank you, > >neto Hi Jens, This is neto from Brazil How are you? Another issue that I have realized, on RHEL the new tools t/dedupe works but it does not work on my mac. Seems to me that is related to YACC. Please see below: Nossa Senhora:fio neto$ make V=1 t/dedupe gcc -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 -DFIO_VERSION='"fio-2.1.13-31-g15e3"' -o t/dedupe -ll -lz -lm -lpthread -ldl Undefined symbols for architecture x86_64: "_yylex", referenced from: _main in libl.a(libmain.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [t/dedupe] Error 1 Any idea how to fix it? Thank you, neto ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 13:51 ` Neto, Antonio Jose Rodrigues @ 2014-10-07 14:17 ` Jens Axboe 2014-10-07 14:29 ` Jens Axboe 0 siblings, 1 reply; 23+ messages in thread From: Jens Axboe @ 2014-10-07 14:17 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/07/2014 07:51 AM, Neto, Antonio Jose Rodrigues wrote: > > > On 10/7/14, 9:39 AM, "Neto, Antonio Jose Rodrigues" > <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: > >> >> >> On 10/6/14, 10:18 PM, "Jens Axboe" <axboe@kernel.dk> wrote: >> >>> On 2014-10-06 19:26, Stephen Cameron wrote: >>>> On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@kernel.dk> wrote: >>>>> On 2014-10-06 16:25, Stephen Cameron wrote: >>>>>> >>>>>> On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >>>>>> <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>> [...] >>>>>>> >>>>>>> >>>>>>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>>>>>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE >>>>>>> -include >>>>>>> config-host.h -DBITS_PER_LONG=64 >>>>>>> -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>>>>>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>>>>>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>>>>>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or >>>>>>> directory >>>>>>> exp/expression-parser.l: In function Œyylex¹: >>>>>>> exp/expression-parser.l:51: error: Œyylval¹ undeclared (first use in >>>>>>> this >>>>>>> function) >>>>>>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>>>>>> reported >>>>>>> only once >>>>>>> exp/expression-parser.l:51: error: for each function it appears in.) >>>>>>> exp/expression-parser.l:52: error: ŒSUFFIX¹ undeclared (first use in >>>>>>> this >>>>>>> function) >>>>>>> exp/expression-parser.l:122: error: ŒNUMBER¹ undeclared (first use >>>>>>> in >>>>>>> this >>>>>>> function) >>>>>>> make: *** [lex.yy.o] Error 1 >>>>>>> >>>>>>> >>>>>> >>>>>> Ok, hmm. >>>>>> >>>>>> Try making the following change to the Makefile: >>>>>> >>>>>> --- a/Makefile >>>>>> +++ b/Makefile >>>>>> @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >>>>>> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >>>>>> >>>>>> y.tab.c: exp/expression-parser.y >>>>>> - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >>>>>> + $(QUIET_YACC)$(YACC) --no-lines -d -b y >>>>>> exp/expression-parser.y >>>>>> >>>>>> y.tab.h: y.tab.c >>>>>> >>>>>> (I cut and pasted the above, so it is probably not a well formatted >>>>>> patch anymore). >>>>>> >>>>>> That is, add " -b y " into the line for yacc. bison by default >>>>>> doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >>>>>> and xxx.tab.h, which makes more sense than what yacc does, but it's >>>>>> not what the makefile is expecting. The "-b y" tells bison to use >>>>>> "y" >>>>>> as the output file prefix, just as yacc normally does. >>>>>> >>>>>> then "make clean" and "make YACC=bison" and see if that works. >>>>> >>>>> >>>>> Should we default to using bison? Right now it checks for yacc first, >>>>> and >>>>> uses that if available. If not, it checks for bison and uses that. >>>>> Would be >>>>> easy enough to move around in configure. >>>> >>>> I'm not sure, I haven't proposed a real fix because I'm not sure what >>>> a real fix should look like. We're using %parse-param, and I think >>>> yacc, or bison doing an exceptionally good job of pretending to be >>>> yacc, can't handle that. I guess the versions of bison that I have >>>> seen do not do such a perfect job of pretending to be yacc, and allow >>>> %parse-params to work anyway. So the real fix might be to figure out >>>> how to get away without using %parse-param, so that yacc can deal with >>>> it. >>>> >>>> Or maybe we just require bison? Maybe nowadays everyone has bison? >>> >>> It's probably a safer choice than defaulting to yacc, me thinks... We'll >>> see how that goes. I might have to extend and improve it to check not >>> just if it's there, but if it actually works for our case as well. But >>> baby steps, perhaps this is enough. >>> >>>> Neto also mentioned that he wasn't able to build with arithmetic >>>> configured off. I didn't try to chase that down. >>> >>> I think that's a build issue due to hand editing stuff and attempting a >>> build. The current code builds fine if it's off, I definitely tested >>> that prior to pulling things in. >>> >>> -- >>> Jens Axboe >> >> >> >> Hi Jens, >> >> This is neto from Brazil >> >> How are you? >> >> I have applied the latest commit. >> >> On MAC: >> >> Still getting warnings: >> >> YACC y.tab.c >> CC lex.yy.o >> lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' >> (aka 'unsigned long *') to parameter of type 'int *' >> [-Wincompatible-pointer-types] >> ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' >> lexer_input((buffer), &(bytes_read), (bytes_requested)) >> ^~~~~~~~~~~~~ >> exp/expression-parser.l:27:43: note: passing argument to parameter >> 'nbytes' here >> extern int lexer_input(char* buffer, int *nbytes, int buffersize); >> ^ >> >> >> >> On Linux (RedHat 6.4) >> >> All good :-) >> >> Thank you, >> >> neto > > Hi Jens, > > This is neto from Brazil > > How are you? > > Another issue that I have realized, on RHEL the new tools t/dedupe works > but it does not work on my mac. > > Seems to me that is related to YACC. > > Please see below: > > Nossa Senhora:fio neto$ make V=1 t/dedupe > gcc -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement -O3 -g > -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 > -DFIO_VERSION='"fio-2.1.13-31-g15e3"' -o t/dedupe -ll -lz -lm -lpthread > -ldl > Undefined symbols for architecture x86_64: > "_yylex", referenced from: > _main in libl.a(libmain.o) > ld: symbol(s) not found for architecture x86_64 > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > make: *** [t/dedupe] Error 1 > > Any idea how to fix it? It's only supported on Linux right now, it will be built automatically there. Not really a design problem, it's just that it has the Linux method for getting the size of a block device hard wired. I can fix that pretty quickly. -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 14:17 ` Jens Axboe @ 2014-10-07 14:29 ` Jens Axboe 2014-10-07 14:44 ` Neto, Antonio Jose Rodrigues 0 siblings, 1 reply; 23+ messages in thread From: Jens Axboe @ 2014-10-07 14:29 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/07/2014 08:17 AM, Jens Axboe wrote: >> Please see below: >> >> Nossa Senhora:fio neto$ make V=1 t/dedupe >> gcc -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement -O3 -g >> -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 >> -DFIO_VERSION='"fio-2.1.13-31-g15e3"' -o t/dedupe -ll -lz -lm -lpthread >> -ldl >> Undefined symbols for architecture x86_64: >> "_yylex", referenced from: >> _main in libl.a(libmain.o) >> ld: symbol(s) not found for architecture x86_64 >> clang: error: linker command failed with exit code 1 (use -v to see >> invocation) >> make: *** [t/dedupe] Error 1 >> >> Any idea how to fix it? > > It's only supported on Linux right now, it will be built automatically > there. Not really a design problem, it's just that it has the Linux > method for getting the size of a block device hard wired. I can fix that > pretty quickly. I changed it to use the fio supplied blockdev_size(), so it should work on all platforms now: http://git.kernel.dk/?p=fio.git;a=commit;h=d08a6886fa57f819682f05548d284a079a99e77d Pull, make clean, and make again. Should work on OSX and others now. -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 14:29 ` Jens Axboe @ 2014-10-07 14:44 ` Neto, Antonio Jose Rodrigues 2014-10-07 14:55 ` Jens Axboe 0 siblings, 1 reply; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-07 14:44 UTC (permalink / raw) To: Jens Axboe, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/7/14, 10:29 AM, "Jens Axboe" <axboe@kernel.dk> wrote: >On 10/07/2014 08:17 AM, Jens Axboe wrote: >>> Please see below: >>> >>> Nossa Senhora:fio neto$ make V=1 t/dedupe >>> gcc -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement >>>-O3 -g >>> -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 >>> -DFIO_VERSION='"fio-2.1.13-31-g15e3"' -o t/dedupe -ll -lz -lm >>>-lpthread >>> -ldl >>> Undefined symbols for architecture x86_64: >>> "_yylex", referenced from: >>> _main in libl.a(libmain.o) >>> ld: symbol(s) not found for architecture x86_64 >>> clang: error: linker command failed with exit code 1 (use -v to see >>> invocation) >>> make: *** [t/dedupe] Error 1 >>> >>> Any idea how to fix it? >> >> It's only supported on Linux right now, it will be built automatically >> there. Not really a design problem, it's just that it has the Linux >> method for getting the size of a block device hard wired. I can fix that >> pretty quickly. > >I changed it to use the fio supplied blockdev_size(), so it should work >on all platforms now: > >http://git.kernel.dk/?p=fio.git;a=commit;h=d08a6886fa57f819682f05548d284a0 >79a99e77d > >Pull, make clean, and make again. Should work on OSX and others now. > >-- >Jens Axboe > Hi Jens, This is neto from Brazil How are you? :-( Trying with the latest commit on my mac. CC lex.yy.o lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' (aka 'unsigned long *') to parameter of type 'int *' [-Wincompatible-pointer-types] ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' lexer_input((buffer), &(bytes_read), (bytes_requested)) ^~~~~~~~~~~~~ exp/expression-parser.l:27:43: note: passing argument to parameter 'nbytes' here extern int lexer_input(char* buffer, int *nbytes, int buffersize); ^ 1 warning generated. CC y.tab.o CC parse.o CC mutex.o CC options.o CC lib/rbtree.o CC smalloc.o CC filehash.o CC profile.o CC debug.o CC lib/rand.o CC lib/num2str.o CC lib/ieee754.o CC crc/crc16.o CC crc/crc32.o CC crc/crc32c-intel.o CC crc/crc32c.o CC crc/crc64.o CC crc/crc7.o CC crc/fnv.o CC crc/md5.o CC crc/murmur3.o CC crc/sha1.o CC crc/sha256.o CC crc/sha512.o CC crc/test.o CC crc/xxhash.o CC engines/cpu.o CC engines/mmap.o CC engines/sync.o CC engines/null.o CC engines/net.o CC memalign.o CC server.o CC client.o CC iolog.o CC backend.o CC libfio.o CC flow.o CC cconv.o CC lib/prio_tree.o CC json.o CC lib/zipf.o CC lib/axmap.o CC lib/lfsr.o CC gettime-thread.o CC helpers.o CC lib/flist_sort.o CC lib/hweight.o CC lib/getrusage.o CC idletime.o CC td_error.o CC profiles/tiobench.o CC profiles/act.o CC io_u_queue.o CC filelock.o CC lib/tp.o CC lib/bloom.o CC engines/posixaio.o CC fio.o LINK fio CC t/stest.o CC t/log.o CC t/debug.o LINK t/stest CC t/ieee754.o LINK t/ieee754 CC t/genzipf.o LINK t/genzipf CC t/axmap.o LINK t/axmap CC t/lfsr-test.o LINK t/lfsr-test CC t/dedupe.o t/dedupe.c:14:10: fatal error: 'linux/fs.h' file not found #include <linux/fs.h> ^ 1 error generated. make: *** [t/dedupe.o] Error 1 Nossa Senhora:fio neto$ ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 14:44 ` Neto, Antonio Jose Rodrigues @ 2014-10-07 14:55 ` Jens Axboe 2014-10-07 15:00 ` Neto, Antonio Jose Rodrigues 0 siblings, 1 reply; 23+ messages in thread From: Jens Axboe @ 2014-10-07 14:55 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/07/2014 08:44 AM, Neto, Antonio Jose Rodrigues wrote: > > > On 10/7/14, 10:29 AM, "Jens Axboe" <axboe@kernel.dk> wrote: > >> On 10/07/2014 08:17 AM, Jens Axboe wrote: >>>> Please see below: >>>> >>>> Nossa Senhora:fio neto$ make V=1 t/dedupe >>>> gcc -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement >>>> -O3 -g >>>> -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 >>>> -DFIO_VERSION='"fio-2.1.13-31-g15e3"' -o t/dedupe -ll -lz -lm >>>> -lpthread >>>> -ldl >>>> Undefined symbols for architecture x86_64: >>>> "_yylex", referenced from: >>>> _main in libl.a(libmain.o) >>>> ld: symbol(s) not found for architecture x86_64 >>>> clang: error: linker command failed with exit code 1 (use -v to see >>>> invocation) >>>> make: *** [t/dedupe] Error 1 >>>> >>>> Any idea how to fix it? >>> >>> It's only supported on Linux right now, it will be built automatically >>> there. Not really a design problem, it's just that it has the Linux >>> method for getting the size of a block device hard wired. I can fix that >>> pretty quickly. >> >> I changed it to use the fio supplied blockdev_size(), so it should work >> on all platforms now: >> >> http://git.kernel.dk/?p=fio.git;a=commit;h=d08a6886fa57f819682f05548d284a0 >> 79a99e77d >> >> Pull, make clean, and make again. Should work on OSX and others now. >> >> -- >> Jens Axboe >> > > Hi Jens, > > This is neto from Brazil > > How are you? > > :-( > > Trying with the latest commit on my mac. > > CC lex.yy.o > lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' > (aka 'unsigned long *') to parameter of type 'int *' > [-Wincompatible-pointer-types] > ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' > lexer_input((buffer), &(bytes_read), (bytes_requested)) > ^~~~~~~~~~~~~ > exp/expression-parser.l:27:43: note: passing argument to parameter > 'nbytes' here > extern int lexer_input(char* buffer, int *nbytes, int buffersize); > ^ > 1 warning generated. > CC y.tab.o > CC parse.o > CC mutex.o > CC options.o > CC lib/rbtree.o > CC smalloc.o > CC filehash.o > CC profile.o > CC debug.o > CC lib/rand.o > CC lib/num2str.o > CC lib/ieee754.o > CC crc/crc16.o > CC crc/crc32.o > CC crc/crc32c-intel.o > CC crc/crc32c.o > CC crc/crc64.o > CC crc/crc7.o > CC crc/fnv.o > CC crc/md5.o > CC crc/murmur3.o > CC crc/sha1.o > CC crc/sha256.o > CC crc/sha512.o > CC crc/test.o > CC crc/xxhash.o > CC engines/cpu.o > CC engines/mmap.o > CC engines/sync.o > CC engines/null.o > CC engines/net.o > CC memalign.o > CC server.o > CC client.o > CC iolog.o > CC backend.o > CC libfio.o > CC flow.o > CC cconv.o > CC lib/prio_tree.o > CC json.o > CC lib/zipf.o > CC lib/axmap.o > CC lib/lfsr.o > CC gettime-thread.o > CC helpers.o > CC lib/flist_sort.o > CC lib/hweight.o > CC lib/getrusage.o > CC idletime.o > CC td_error.o > CC profiles/tiobench.o > CC profiles/act.o > CC io_u_queue.o > CC filelock.o > CC lib/tp.o > CC lib/bloom.o > CC engines/posixaio.o > CC fio.o > LINK fio > CC t/stest.o > CC t/log.o > CC t/debug.o > LINK t/stest > CC t/ieee754.o > LINK t/ieee754 > CC t/genzipf.o > LINK t/genzipf > CC t/axmap.o > LINK t/axmap > CC t/lfsr-test.o > LINK t/lfsr-test > CC t/dedupe.o > t/dedupe.c:14:10: fatal error: 'linux/fs.h' file not found > #include <linux/fs.h> > ^ > 1 error generated. > make: *** [t/dedupe.o] Error 1 > Nossa Senhora:fio neto$ t/dedupe should work now if you pull again. There's still some oddity around the size_t - ignore that for now, it'll work, and we'll get it sorted. -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 14:55 ` Jens Axboe @ 2014-10-07 15:00 ` Neto, Antonio Jose Rodrigues 2014-10-07 15:11 ` Jens Axboe 0 siblings, 1 reply; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-07 15:00 UTC (permalink / raw) To: Jens Axboe, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/7/14, 10:55 AM, "Jens Axboe" <axboe@kernel.dk> wrote: >On 10/07/2014 08:44 AM, Neto, Antonio Jose Rodrigues wrote: >> >> >> On 10/7/14, 10:29 AM, "Jens Axboe" <axboe@kernel.dk> wrote: >> >>> On 10/07/2014 08:17 AM, Jens Axboe wrote: >>>>> Please see below: >>>>> >>>>> Nossa Senhora:fio neto$ make V=1 t/dedupe >>>>> gcc -std=gnu99 -Wwrite-strings -Wall -Wdeclaration-after-statement >>>>> -O3 -g >>>>> -ffast-math -D_GNU_SOURCE -include config-host.h -DBITS_PER_LONG=64 >>>>> -DFIO_VERSION='"fio-2.1.13-31-g15e3"' -o t/dedupe -ll -lz -lm >>>>> -lpthread >>>>> -ldl >>>>> Undefined symbols for architecture x86_64: >>>>> "_yylex", referenced from: >>>>> _main in libl.a(libmain.o) >>>>> ld: symbol(s) not found for architecture x86_64 >>>>> clang: error: linker command failed with exit code 1 (use -v to see >>>>> invocation) >>>>> make: *** [t/dedupe] Error 1 >>>>> >>>>> Any idea how to fix it? >>>> >>>> It's only supported on Linux right now, it will be built automatically >>>> there. Not really a design problem, it's just that it has the Linux >>>> method for getting the size of a block device hard wired. I can fix >>>>that >>>> pretty quickly. >>> >>> I changed it to use the fio supplied blockdev_size(), so it should work >>> on all platforms now: >>> >>> >>>http://git.kernel.dk/?p=fio.git;a=commit;h=d08a6886fa57f819682f05548d284 >>>a0 >>> 79a99e77d >>> >>> Pull, make clean, and make again. Should work on OSX and others now. >>> >>> -- >>> Jens Axboe >>> >> >> Hi Jens, >> >> This is neto from Brazil >> >> How are you? >> >> :-( >> >> Trying with the latest commit on my mac. >> >> CC lex.yy.o >> lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t >>*' >> (aka 'unsigned long *') to parameter of type 'int *' >> [-Wincompatible-pointer-types] >> ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' >> lexer_input((buffer), &(bytes_read), (bytes_requested)) >> ^~~~~~~~~~~~~ >> exp/expression-parser.l:27:43: note: passing argument to parameter >> 'nbytes' here >> extern int lexer_input(char* buffer, int *nbytes, int buffersize); >> ^ >> 1 warning generated. >> CC y.tab.o >> CC parse.o >> CC mutex.o >> CC options.o >> CC lib/rbtree.o >> CC smalloc.o >> CC filehash.o >> CC profile.o >> CC debug.o >> CC lib/rand.o >> CC lib/num2str.o >> CC lib/ieee754.o >> CC crc/crc16.o >> CC crc/crc32.o >> CC crc/crc32c-intel.o >> CC crc/crc32c.o >> CC crc/crc64.o >> CC crc/crc7.o >> CC crc/fnv.o >> CC crc/md5.o >> CC crc/murmur3.o >> CC crc/sha1.o >> CC crc/sha256.o >> CC crc/sha512.o >> CC crc/test.o >> CC crc/xxhash.o >> CC engines/cpu.o >> CC engines/mmap.o >> CC engines/sync.o >> CC engines/null.o >> CC engines/net.o >> CC memalign.o >> CC server.o >> CC client.o >> CC iolog.o >> CC backend.o >> CC libfio.o >> CC flow.o >> CC cconv.o >> CC lib/prio_tree.o >> CC json.o >> CC lib/zipf.o >> CC lib/axmap.o >> CC lib/lfsr.o >> CC gettime-thread.o >> CC helpers.o >> CC lib/flist_sort.o >> CC lib/hweight.o >> CC lib/getrusage.o >> CC idletime.o >> CC td_error.o >> CC profiles/tiobench.o >> CC profiles/act.o >> CC io_u_queue.o >> CC filelock.o >> CC lib/tp.o >> CC lib/bloom.o >> CC engines/posixaio.o >> CC fio.o >> LINK fio >> CC t/stest.o >> CC t/log.o >> CC t/debug.o >> LINK t/stest >> CC t/ieee754.o >> LINK t/ieee754 >> CC t/genzipf.o >> LINK t/genzipf >> CC t/axmap.o >> LINK t/axmap >> CC t/lfsr-test.o >> LINK t/lfsr-test >> CC t/dedupe.o >> t/dedupe.c:14:10: fatal error: 'linux/fs.h' file not found >> #include <linux/fs.h> >> ^ >> 1 error generated. >> make: *** [t/dedupe.o] Error 1 >> Nossa Senhora:fio neto$ > >t/dedupe should work now if you pull again. There's still some oddity >around the size_t - ignore that for now, it'll work, and we'll get it >sorted. > >-- >Jens Axboe Hi Jens, This is neto from Brazil How are you? All good with dedupe. CC lex.yy.o lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' (aka 'unsigned long *') to parameter of type 'int *' [-Wincompatible-pointer-types] YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' lexer_input((buffer), &(bytes_read), (bytes_requested)) ^~~~~~~~~~~~~ exp/expression-parser.l:27:43: note: passing argument to parameter 'nbytes' here extern int lexer_input(char* buffer, int *nbytes, int buffersize); ^ 1 warning generated. CC y.tab.o CC parse.o CC mutex.o CC options.o CC lib/rbtree.o CC smalloc.o CC filehash.o CC profile.o CC debug.o CC lib/rand.o CC lib/num2str.o CC lib/ieee754.o CC crc/crc16.o CC crc/crc32.o CC crc/crc32c-intel.o CC crc/crc32c.o CC crc/crc64.o CC crc/crc7.o CC crc/fnv.o CC crc/md5.o CC crc/murmur3.o CC crc/sha1.o CC crc/sha256.o CC crc/sha512.o CC crc/test.o CC crc/xxhash.o CC engines/cpu.o CC engines/mmap.o CC engines/sync.o CC engines/null.o CC engines/net.o CC memalign.o CC server.o CC client.o CC iolog.o CC backend.o CC libfio.o CC flow.o CC cconv.o CC lib/prio_tree.o CC json.o CC lib/zipf.o CC lib/axmap.o CC lib/lfsr.o CC gettime-thread.o CC helpers.o CC lib/flist_sort.o CC lib/hweight.o CC lib/getrusage.o CC idletime.o CC td_error.o CC profiles/tiobench.o CC profiles/act.o CC io_u_queue.o CC filelock.o CC lib/tp.o CC lib/bloom.o CC engines/posixaio.o CC fio.o LINK fio CC t/stest.o CC t/log.o CC t/debug.o LINK t/stest CC t/ieee754.o LINK t/ieee754 CC t/genzipf.o LINK t/genzipf CC t/axmap.o LINK t/axmap CC t/lfsr-test.o LINK t/lfsr-test CC t/dedupe.o LINK t/dedupe Nossa Senhora:fio neto$ cd t Nossa Senhora:t neto$ ./dedupe Check for dedupable blocks on a device/file ./dedupe: [options] <device or file> -b Chunk size to use -t Number of threads to use -d Full extent/chunk debug output -o Use O_DIRECT -c Full collision check -B Use probabilistic bloom filter -p Print progress indicator Thank you, neto ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 15:00 ` Neto, Antonio Jose Rodrigues @ 2014-10-07 15:11 ` Jens Axboe 2014-10-07 15:14 ` Neto, Antonio Jose Rodrigues 0 siblings, 1 reply; 23+ messages in thread From: Jens Axboe @ 2014-10-07 15:11 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/07/2014 09:00 AM, Neto, Antonio Jose Rodrigues wrote: > CC lex.yy.o > lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' > (aka 'unsigned long *') to parameter of type 'int *' > [-Wincompatible-pointer-types] > YY_INPUT( > (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' > lexer_input((buffer), &(bytes_read), (bytes_requested)) > ^~~~~~~~~~~~~ > exp/expression-parser.l:27:43: note: passing argument to parameter > 'nbytes' here > extern int lexer_input(char* buffer, int *nbytes, int buffersize); OK, try and re-pull, I think I fixed the size_t issue as well now. This is the commit: http://git.kernel.dk/?p=fio.git;a=commit;h=3fcc6ca7f15db70b9f82df1f9065765b4cca4e9d -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 15:11 ` Jens Axboe @ 2014-10-07 15:14 ` Neto, Antonio Jose Rodrigues 0 siblings, 0 replies; 23+ messages in thread From: Neto, Antonio Jose Rodrigues @ 2014-10-07 15:14 UTC (permalink / raw) To: Jens Axboe, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/7/14, 11:11 AM, "Jens Axboe" <axboe@kernel.dk> wrote: >On 10/07/2014 09:00 AM, Neto, Antonio Jose Rodrigues wrote: >> CC lex.yy.o >> lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t >>*' >> (aka 'unsigned long *') to parameter of type 'int *' >> [-Wincompatible-pointer-types] >> YY_INPUT( >> (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), >> >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' >> lexer_input((buffer), &(bytes_read), (bytes_requested)) >> ^~~~~~~~~~~~~ >> exp/expression-parser.l:27:43: note: passing argument to parameter >> 'nbytes' here >> extern int lexer_input(char* buffer, int *nbytes, int buffersize); > >OK, try and re-pull, I think I fixed the size_t issue as well now. This >is the commit: > >http://git.kernel.dk/?p=fio.git;a=commit;h=3fcc6ca7f15db70b9f82df1f9065765 >b4cca4e9d > >-- >Jens Axboe > Hi Jens, This is neto from Brazil How are you? That is why I love FIO. All good my friend, Thanks neto ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-07 13:39 ` Neto, Antonio Jose Rodrigues 2014-10-07 13:51 ` Neto, Antonio Jose Rodrigues @ 2014-10-07 14:16 ` Jens Axboe 1 sibling, 0 replies; 23+ messages in thread From: Jens Axboe @ 2014-10-07 14:16 UTC (permalink / raw) To: Neto, Antonio Jose Rodrigues, Stephen Cameron; +Cc: fio@vger.kernel.org On 10/07/2014 07:39 AM, Neto, Antonio Jose Rodrigues wrote: > > > On 10/6/14, 10:18 PM, "Jens Axboe" <axboe@kernel.dk> wrote: > >> On 2014-10-06 19:26, Stephen Cameron wrote: >>> On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@kernel.dk> wrote: >>>> On 2014-10-06 16:25, Stephen Cameron wrote: >>>>> >>>>> On Mon, Oct 6, 2014 at 5:10 PM, Neto, Antonio Jose Rodrigues >>>>> <Antonio.Jose.Rodrigues.Neto@netapp.com> wrote: >>>>>> >>>>>> >>>>>> >>>>> [...] >>>>>> >>>>>> >>>>>> gcc -o lex.yy.o -std=gnu99 -Wwrite-strings -Wall >>>>>> -Wdeclaration-after-statement -O3 -g -ffast-math -D_GNU_SOURCE >>>>>> -include >>>>>> config-host.h -DBITS_PER_LONG=64 >>>>>> -DFIO_VERSION='"fio-2.1.13-26-gb220c"' >>>>>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INTERNAL >>>>>> -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG -c lex.yy.c >>>>>> exp/expression-parser.l:23:19: error: y.tab.h: No such file or >>>>>> directory >>>>>> exp/expression-parser.l: In function �yylex�: >>>>>> exp/expression-parser.l:51: error: �yylval� undeclared (first use in >>>>>> this >>>>>> function) >>>>>> exp/expression-parser.l:51: error: (Each undeclared identifier is >>>>>> reported >>>>>> only once >>>>>> exp/expression-parser.l:51: error: for each function it appears in.) >>>>>> exp/expression-parser.l:52: error: �SUFFIX� undeclared (first use in >>>>>> this >>>>>> function) >>>>>> exp/expression-parser.l:122: error: �NUMBER� undeclared (first use in >>>>>> this >>>>>> function) >>>>>> make: *** [lex.yy.o] Error 1 >>>>>> >>>>>> >>>>> >>>>> Ok, hmm. >>>>> >>>>> Try making the following change to the Makefile: >>>>> >>>>> --- a/Makefile >>>>> +++ b/Makefile >>>>> @@ -277,7 +277,7 @@ y.tab.o: y.tab.c y.tab.h >>>>> $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< >>>>> >>>>> y.tab.c: exp/expression-parser.y >>>>> - $(QUIET_YACC)$(YACC) --no-lines -d exp/expression-parser.y >>>>> + $(QUIET_YACC)$(YACC) --no-lines -d -b y >>>>> exp/expression-parser.y >>>>> >>>>> y.tab.h: y.tab.c >>>>> >>>>> (I cut and pasted the above, so it is probably not a well formatted >>>>> patch anymore). >>>>> >>>>> That is, add " -b y " into the line for yacc. bison by default >>>>> doesn't produce y.tab.c y.tab.h, it produces from xxx.y -> xxx.tab.c >>>>> and xxx.tab.h, which makes more sense than what yacc does, but it's >>>>> not what the makefile is expecting. The "-b y" tells bison to use "y" >>>>> as the output file prefix, just as yacc normally does. >>>>> >>>>> then "make clean" and "make YACC=bison" and see if that works. >>>> >>>> >>>> Should we default to using bison? Right now it checks for yacc first, >>>> and >>>> uses that if available. If not, it checks for bison and uses that. >>>> Would be >>>> easy enough to move around in configure. >>> >>> I'm not sure, I haven't proposed a real fix because I'm not sure what >>> a real fix should look like. We're using %parse-param, and I think >>> yacc, or bison doing an exceptionally good job of pretending to be >>> yacc, can't handle that. I guess the versions of bison that I have >>> seen do not do such a perfect job of pretending to be yacc, and allow >>> %parse-params to work anyway. So the real fix might be to figure out >>> how to get away without using %parse-param, so that yacc can deal with >>> it. >>> >>> Or maybe we just require bison? Maybe nowadays everyone has bison? >> >> It's probably a safer choice than defaulting to yacc, me thinks... We'll >> see how that goes. I might have to extend and improve it to check not >> just if it's there, but if it actually works for our case as well. But >> baby steps, perhaps this is enough. >> >>> Neto also mentioned that he wasn't able to build with arithmetic >>> configured off. I didn't try to chase that down. >> >> I think that's a build issue due to hand editing stuff and attempting a >> build. The current code builds fine if it's off, I definitely tested >> that prior to pulling things in. >> >> -- >> Jens Axboe > > > > Hi Jens, > > This is neto from Brazil > > How are you? > > I have applied the latest commit. > > On MAC: > > Still getting warnings: > > YACC y.tab.c > CC lex.yy.o > lex.yy.c:1231:3: warning: incompatible pointer types passing 'yy_size_t *' > (aka 'unsigned long *') to parameter of type 'int *' > [-Wincompatible-pointer-types] > ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' > lexer_input((buffer), &(bytes_read), (bytes_requested)) > ^~~~~~~~~~~~~ > exp/expression-parser.l:27:43: note: passing argument to parameter > 'nbytes' here > extern int lexer_input(char* buffer, int *nbytes, int buffersize); Should be better if you pull the latest. Let me know. -- Jens Axboe ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 21:44 ` Stephen Cameron [not found] ` <D05885C8.51DCC%Antonio.Jose.Rodrigues.Neto@netapp.com> @ 2014-10-06 22:34 ` Bruce Cran 2014-10-06 23:02 ` Stephen Cameron 1 sibling, 1 reply; 23+ messages in thread From: Bruce Cran @ 2014-10-06 22:34 UTC (permalink / raw) To: fio@vger.kernel.org On 10/6/2014 3:44 PM, Stephen Cameron wrote: > I suspect that your version of yacc does not comprehend the --no-lines > option (which we needed only in order to avoid a bug in some other > versions of yacc). From the usage message it does appear to > understand both -d and -l though. > > Try changing the --no-lines option in the Makefile to -l instead, and > see if that helps. The same problem occurs on FreeBSD 10. After changing "--no-lines" to "-l" the build works, with the following warnings: YACC y.tab.c CC lex.yy.o lex.yy.c:1245:3: warning: incompatible pointer types passing 'yy_size_t *' (aka 'unsigned long *') to parameter of type 'int *' [-Wincompatible-pointer-types] YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' lexer_input((buffer), &(bytes_read), (bytes_requested)) ^~~~~~~~~~~~~ exp/expression-parser.l:27:43: note: passing argument to parameter 'nbytes' here extern int lexer_input(char* buffer, int *nbytes, int buffersize); -- Bruce ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename 2014-10-06 22:34 ` Bruce Cran @ 2014-10-06 23:02 ` Stephen Cameron 0 siblings, 0 replies; 23+ messages in thread From: Stephen Cameron @ 2014-10-06 23:02 UTC (permalink / raw) To: Bruce Cran; +Cc: fio@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 1698 bytes --] On Mon, Oct 6, 2014 at 5:34 PM, Bruce Cran <bruce@cran.org.uk> wrote: > On 10/6/2014 3:44 PM, Stephen Cameron wrote: >> >> I suspect that your version of yacc does not comprehend the --no-lines >> option (which we needed only in order to avoid a bug in some other >> versions of yacc). From the usage message it does appear to >> understand both -d and -l though. >> >> Try changing the --no-lines option in the Makefile to -l instead, and >> see if that helps. > > > The same problem occurs on FreeBSD 10. After changing "--no-lines" to "-l" > the build works, with the following warnings: > > YACC y.tab.c > CC lex.yy.o > lex.yy.c:1245:3: warning: incompatible pointer types passing 'yy_size_t *' > (aka 'unsigned long *') to parameter of type 'int *' > [-Wincompatible-pointer-types] > YY_INPUT( > (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > exp/expression-parser.l:31:25: note: expanded from macro 'YY_INPUT' > lexer_input((buffer), &(bytes_read), (bytes_requested)) > ^~~~~~~~~~~~~ > exp/expression-parser.l:27:43: note: passing argument to parameter 'nbytes' > here > extern int lexer_input(char* buffer, int *nbytes, int buffersize); > I think Jens mentioned seeing something similar on Mac OSX (which makes sense as it's a BSD derivative). I think it will work so long as sizeof(int) <= sizeof(unsigned long) and you're on a little endian architecture and the buffer is not ridiculously huge. I suspect on a big endian arch where sizeof(long) > sizeof(int), it would fail. Can you see if the attached patch fixes it? -- steve [-- Attachment #2: 0001-fix-problem-with-yy_size_t-vs-int-param-to-lexer_inp.patch --] [-- Type: text/x-patch, Size: 1787 bytes --] From 5a76b7f44183c65afd7af9d578729965c3ba8e75 Mon Sep 17 00:00:00 2001 From: "Stephen M. Cameron" <stephenmcameron@gmail.com> Date: Mon, 6 Oct 2014 17:58:32 -0500 Subject: [PATCH] fix problem with yy_size_t vs int param to lexer_input BSD yacc uses "int" for this param, linux uses size_t --- Makefile | 4 +++- exp/expression-parser.y | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d735ec7..424a112 100644 --- a/Makefile +++ b/Makefile @@ -268,7 +268,7 @@ override CFLAGS += -DFIO_VERSION='"$(FIO_VERSION)"' ifdef CONFIG_ARITHMETIC lex.yy.c: exp/expression-parser.l - $(QUIET_LEX)$(LEX) exp/expression-parser.l + $(QUIET_LEX)$(LEX) --header-file=lexer.h exp/expression-parser.l lex.yy.o: lex.yy.c y.tab.h $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< @@ -281,6 +281,8 @@ y.tab.c: exp/expression-parser.y y.tab.h: y.tab.c +lexer.h: lex.yy.c + exp/test-expression-parser.o: exp/test-expression-parser.c $(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $< exp/test-expression-parser: exp/test-expression-parser.o diff --git a/exp/expression-parser.y b/exp/expression-parser.y index e4373d4..83b5b30 100644 --- a/exp/expression-parser.y +++ b/exp/expression-parser.y @@ -21,6 +21,8 @@ #include <stdio.h> #include <string.h> #include <math.h> +#include "lexer.h" + struct parser_value_type { double dval; long long ival; @@ -186,7 +188,7 @@ expression: expression '+' expression { static int lexer_read_offset = 0; static char lexer_input_buffer[1000]; -int lexer_input(char* buffer, int *bytes_read, int bytes_requested) +int lexer_input(char* buffer, yy_size_t *bytes_read, int bytes_requested) { int bytes_left = strlen(lexer_input_buffer) - lexer_read_offset; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
end of thread, other threads:[~2014-10-07 15:14 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-06 21:12 YACC y.tab.c Usage: /usr/bin/yacc [options] filename Neto, Antonio Jose Rodrigues
2014-10-06 21:44 ` Stephen Cameron
[not found] ` <D05885C8.51DCC%Antonio.Jose.Rodrigues.Neto@netapp.com>
2014-10-06 22:04 ` Stephen Cameron
2014-10-06 22:10 ` Neto, Antonio Jose Rodrigues
2014-10-06 22:25 ` Stephen Cameron
2014-10-06 22:28 ` Neto, Antonio Jose Rodrigues
2014-10-06 22:31 ` Stephen Cameron
2014-10-07 1:18 ` Jens Axboe
2014-10-07 1:10 ` Jens Axboe
2014-10-07 1:26 ` Stephen Cameron
2014-10-07 2:18 ` Jens Axboe
2014-10-07 13:39 ` Neto, Antonio Jose Rodrigues
2014-10-07 13:51 ` Neto, Antonio Jose Rodrigues
2014-10-07 14:17 ` Jens Axboe
2014-10-07 14:29 ` Jens Axboe
2014-10-07 14:44 ` Neto, Antonio Jose Rodrigues
2014-10-07 14:55 ` Jens Axboe
2014-10-07 15:00 ` Neto, Antonio Jose Rodrigues
2014-10-07 15:11 ` Jens Axboe
2014-10-07 15:14 ` Neto, Antonio Jose Rodrigues
2014-10-07 14:16 ` Jens Axboe
2014-10-06 22:34 ` Bruce Cran
2014-10-06 23:02 ` Stephen Cameron
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox