This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2.5/4 v2] GAS: Make new fake labels when cloning a symbol


"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> On Sat, 30 Oct 2010, Richard Sandiford wrote:
>> Looks good.  However, 
>> 
>> gcc (Debian 4.4.4-8) 4.4.5 20100728 (prerelease)
>> 
>> complains about so-called aliasing violations on these calls:
>> 
>> > +  S_SET_NAME (&dot_symbol, ".");
>> > +  S_SET_FORWARD_REF (&dot_symbol);
>> 
>> It's inlining the calls and warning about the local case, which obviously
>> doesn't apply here.  I know it's not usually good practice to recode to
>> avoid bogus warnings, but let's use:
>> 
>>   dot_symbol.bsym->name = ".";
>>   dot_symbol.sy_forward_ref = 1;
>> 
>> anyway.
>
>  Hmm, TBH I didn't like the way these structs are type-punned from the 
> very first moment I realised what was going on here, but GCC 4.3.2 doesn't 
> seem as picky, so I let it be.  The complaint about the risk of alias 
> violations with these structs is IMO legitimate; if not here, then 
> elsewhere.  And since this is 2.22 material anyway, how about we do this 
> properly and convert symbolS to make it a union of the two cases: local 
> and external?  I mean:
>
> union symbol
> {
>   struct local_symbol l;
>   struct external_symbol e;
> };
> typedef union symbol symbolS;
>
> where "struct local_symbol" would remain unchanged and the current "struct 
> symbol" would become "struct external_symbol".
>
>  I realise syntactically that's going to be an extensive change, but 
> mostly if not entirely mechanical and will improve the overall quality of 
> code involved.  And if anytime, freshly after a release branch has been 
> forked off is I think the best moment to make such changes.  What do you 
> think?

Sounds good, but please don't let it get in the way of applying this patch
(when the time comes).  The change above seems entirely in keeping with
the way that abs_symbol is initialised.

Richard


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]