Question: bison 2.4.1 breaks binutils/ld/deffilep.y, with fix

Akim Demaille akim@lrde.epita.fr
Wed Apr 29 07:44:00 GMT 2009


Le 28 avr. 09 à 20:55, Danny Backx a écrit :

> On Tue, 2009-04-28 at 14:46 -0400, Joel E. Denny wrote:
>> On Tue, 28 Apr 2009, Danny Backx wrote:
>>
>> I didn't recognize the significance of this earlier.  If the token
>> STACKSIZE is conflicting with a system header in MacOS, perhaps a  
>> better
>> fix is to rename STACKSIZE in the .y and update any uses  
>> elsewhere.  Have
>> you tried that yet?
>>
>> Your current patch lets the system header symbol be redefined, and so
>> there should still be a warning even though the error goes away.  I  
>> don't
>> know what the effect of redefining that header symbol is.
>>
>> I'd say the backward incompatibility here is really in MacOS.   
>> Bison's
>> backward incompatibility just converted the important warning into an
>> error.
>
> My compliments for reading this so thoroughly ! (not kidding !)
>
> You're right, the original issue was that STACKSIZE is getting defined
> twice, that's a MacOS change. The suggestion by H-P from the binutils
> list was to #undef STACKSIZE between the system includes and the  
> (bison
> generated) definition.
>
> Thanks for all your input, I think the next question now is whether  
> the
> binutils crew wants to see a fix like this coming.

FWIW, Bison 2.6 will provide a means to add a prefix to token names  
when defined in C.  So the grammar file can still use "STACKSIZE"  
while the token will be defined as "<PREFIX>STACKSIZE" in the C files.



More information about the Binutils mailing list