Flexible I/O Tester development
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: "Neto,
	Antonio Jose Rodrigues" <Antonio.Jose.Rodrigues.Neto@netapp.com>,
	Stephen Cameron <stephenmcameron@gmail.com>
Cc: "fio@vger.kernel.org" <fio@vger.kernel.org>
Subject: Re: YACC y.tab.c Usage: /usr/bin/yacc [options] filename
Date: Tue, 07 Oct 2014 08:17:35 -0600	[thread overview]
Message-ID: <5433F5FF.60508@kernel.dk> (raw)
In-Reply-To: <D05967DE.51EB1%Antonio.Jose.Rodrigues.Neto@netapp.com>

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



  reply	other threads:[~2014-10-07 14:17 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5433F5FF.60508@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=Antonio.Jose.Rodrigues.Neto@netapp.com \
    --cc=fio@vger.kernel.org \
    --cc=stephenmcameron@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox