On Mon, Mar 25, 2013 at 1:19 PM, Laruence <larue...@php.net> wrote:
> On Mon, Mar 25, 2013 at 1:18 PM, Laruence <larue...@php.net> wrote:
>> On Mon, Mar 25, 2013 at 12:42 PM, Rasmus Lerdorf <ras...@lerdorf.com> wrote:
>>> On 03/24/2013 09:30 PM, Laruence wrote:
>>>> On Mon, Mar 25, 2013 at 7:38 AM, Rasmus Lerdorf <ras...@lerdorf.com> wrote:
>>>>> On 03/24/2013 10:35 AM, Felipe Pena wrote:
>>>>>> Hi,
>>>>>>
>>>>>> 2013/3/24 Rasmus Lerdorf <ras...@lerdorf.com>:
>>>>>>> On 03/22/2013 02:02 AM, Remi Collet wrote:
>>>>>>>> While build of 5.5 snapshot works perfectly, beta1 ZTS build is broken
>>>>>>>>
>>>>>>>> In file included from
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/ext/tokenizer/tokenizer.c:33:0:
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/build-ztscli/Zend/zend_language_parser.h:331:5:
>>>>>>>> error: conflicting types for 'zendparse'
>>>>>>>> In file included from
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_globals.h:28:0,
>>>>>>>>                  from 
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_compile.h:418,
>>>>>>>>                  from 
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_modules.h:26,
>>>>>>>>                  from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_API.h:26,
>>>>>>>>                  from /dev/shm/BUILD/php-5.5.0beta1/main/php.h:38,
>>>>>>>>                  from
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/ext/tokenizer/tokenizer.c:25:
>>>>>>>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_globals_macros.h:35:5: note:
>>>>>>>> previous declaration of 'zendparse' was here
>>>>>>>>
>>>>>>>> Comparing the 201303201430 snapshot (very closed to beta1) and beta1 
>>>>>>>> archive
>>>>>>>>
>>>>>>>> 201303201430, in bison generated files:
>>>>>>>>     /* A Bison parser, made by GNU Bison 2.4.1.  */
>>>>>>>> beta1:
>>>>>>>>     /* A Bison parser, made by GNU Bison 2.6.1.  */
>>>>>>>>
>>>>>>>> So, it seems snapshot script don't use the same environment than the 
>>>>>>>> one
>>>>>>>> used to generate release.
>>>>>>>>
>>>>>>>> Any idea how to fix this ?
>>>>>>>
>>>>>>> I took a quick look at this. The Bison change causing this from their
>>>>>>> NEWS file is:
>>>>>>>
>>>>>>>   *** Features deprecated since Bison 1.875
>>>>>>>     YYPARSE_PARAM and YYLEX_PARAM, deprecated in favor of
>>>>>>>     %parse-param and %lex-param, will no longer be supported.
>>>>>>>
>>>>>>> I was hoping the fix would be as simple as doing:
>>>>>>>
>>>>>>> -#define YYPARSE_PARAM tsrm_ls
>>>>>>> -#define YYLEX_PARAM tsrm_ls
>>>>>>> +%parse-param { tsrm_ls }
>>>>>>> +%lex-param { tsrm_ls }
>>>>>>>
>>>>>>> but that doesn't quite do the trick. Need to read up more on how
>>>>>>> %parse-param and %lex-param work. If someone wants to do a little light
>>>>>>> reading and report back it would be appreciated.
>>>>>>>
>>>>>>
>>>>>> http://www.gnu.org/software/bison/manual/html_node/Parser-Function.html#Parser-Function
>>>>>>
>>>>>> This page explain how to use it.
>>>>>
>>>>> Sure, I see how they work, but the problem is that they can't be inside
>>>>> the %{ ... %} code block there. They have to be outside and as such
>>>>> won't have access to the #ifdef ZTS. So I don't think we can
>>>>> conditionally create a reentrant parser like we did before without
>>>>> refactoring things a bit.
>>>> if %parse-param defined, then the paramenter also is added to yyerror,
>>>> yydestroctor etc.
>>>>
>>>> it will a little big change.
>>>
>>> Right, but if we handle it like we do with TSRMLS_C throughout the code
>>> and always set that %parse-param to this new magic macro we make up and
>>> have it point to void *compiler_globals for zendparse() under ZTS mode
>>> and void otherwise and make sure it is (re)defined correctly in other
>>> places? It might mean we need to refactor zenderror() to take a dummy
>>> first arg since it seems to prepend the parse-param type there. Messy.
>>
>> Hmm, seems fine,  a patch is attached:
>> https://bugs.php.net/patch-display.php?bug_id=64503&patch=bison_build.patch&revision=latest
>>
>>
>> but there must be some unused parameter term_ls while in non-zts build...
> unused parameter warning I mean, :)
hmm, how stupid I was, hehe , simply:

#ifndef ZTS
   (void)tsrm_ls;
#endif

:)

thanks
>
> thanks
>>
>> thanks
>>>
>>> -Rasmus
>>>
>>>
>>>
>>
>>
>>
>> --
>> Laruence  Xinchen Hui
>> http://www.laruence.com/
>
>
>
> --
> Laruence  Xinchen Hui
> http://www.laruence.com/



-- 
Laruence  Xinchen Hui
http://www.laruence.com/

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to