[Patch mach-o/gas] support .previous

Iain Sandoe developer@sandoe-acoustics.co.uk
Thu Jan 5 09:28:00 GMT 2012


Hi Tristan,

On 5 Jan 2012, at 09:10, Tristan Gingold wrote:
+
>> +  new_seg = obj_mach_o_parse_section ();
>> +
>> +  if (new_seg != NULL)
>> +    {
>> +      demand_empty_rest_of_line ();
>> +
>> +      subseg_set (new_seg, 0);
>> +      if (now_seg != old_seg)
>> +	previous_section = old_seg;
>
> What is the reason of this guard ? It seems to be that it prevents  
> user to write code such as:
>
> asm ("
>  .section x
>  […]
>  .previous
> ");
>
> as it would make .previous behavior undefined for the user

well, my reasoning is if the user switches to a new section that is  
the same as the old one - then there's no change in section... so the  
'previous' one hasn't changed, because the 'current' one hasn't ...  
but I can see your point too...

.. happy with doing it either way, just make a choice ;) ...

(applies to each case - so the choice would be dealt with the same for  
each).

>> -
>>  /* else, we leave the section as it was; there was a fatal error  
>> anyway.  */
>> +  demand_empty_rest_of_line ();
>> }
>
> BTW, obj_mach_o_objc_section looks furiously like  
> obj_mach_o_known_section.  Maybe we can reserve a range for objc  
> sections and merge both implementations.

Yes, I have been aware of that all along.. reservation or perhaps I  
could make huge enum ...  or macro-ize the process.

So far, I was consoling myself with the assertion that the compiler  
would sibcall and thus it wouldn't incur a big code penalty - whilst  
making it a bit easier to keep things separate.

(BTW, I'm not sure if we will need access to the debug section  
switches from elsewhere in gas, to allow dwarf debugging to be enabled  
for asm, it might be better to keep those separate if so).

>> +  segT old_seg = now_seg;
>>  s_comm_internal (is_local, obj_mach_o_common_parse);
>> +  if (now_seg != old_seg)
>> +    previous_section = old_seg;
>> +}
>
> Humm, why does it set previous_section ?

duh... thanks for catching that.

I'll fix up and rebase according to whatever you recommend for the  
point above.
thanks for the review,
Iain




More information about the Binutils mailing list