On 10/6/14, 10:18 PM, "Jens Axboe" <axboe@xxxxxxxxx> wrote: >On 2014-10-06 19:26, Stephen Cameron wrote: >> On Mon, Oct 6, 2014 at 8:10 PM, Jens Axboe <axboe@xxxxxxxxx> 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@xxxxxxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html