[PATCH] New ia64 @slotcount pseudo func (4th try)

Douglas B Rupp rupp@gnat.com
Thu Nov 5 22:21:00 GMT 2009


I ran objdump -d on a version of the object file (unwind-ia64.o) from 
before we started down slotcounts in the assembler, calculated the 
slotcount by hand and it came out right in this case with a frag_off of 
zero, even though the labels are clearly in different frags, so now I'm 
really confused. Giving up until someone tells me something.

Douglas B Rupp wrote:
> Seems like from this comment rs_align_code could be handled in 
> frag_offset_fixed_p, no?
> 
>   /* Align code.  The fr_offset field holds the power of 2 to which
>      to align.  This type is only generated by machine specific
>      code, which is normally responsible for handling the fill
>      pattern.  The fr_subtype field holds the maximum number of
>      bytes to skip when aligning, or 0 if there is no maximum.  */
>   rs_align_code,
> 
> 
> Douglas B Rupp wrote:
>> Some problems have appeared. I should have run more complex tests.
>>
>> frag_offset_fixed_p is returning false for some cases involving the 
>> begin epilogue label slotcount from the begin function label
>>
>>         data4.ua        @slotcount(.LEB56-.LFB56)
>>
>> -------------------
>> (gdb) print frag1
>> $21 = (const fragS *) 0x766890
>> (gdb) print frag2
>> $22 = (const fragS *) 0x7667c8
>> (gdb) n
>> 407       frag = frag1;
>> (gdb) n
>> 408       while (frag->fr_type == rs_fill)
>> (gdb) print frag->fr_type
>> $23 = rs_align_code
>> (gdb) n
>> 422       off = frag1->fr_address - frag2->fr_address;
>> (gdb) print frag->fr_type
>> $24 = rs_align_code
>> (gdb) print off
>> $25 = 0
>> (gdb) n
>> 423       frag = frag2;
>> (gdb)
>> 424       while (frag->fr_type == rs_fill)
>> (gdb) print frag->fr_type
>> $26 = rs_align_code
>> (gdb) n
>> 437       return FALSE;
>>
> 



More information about the Binutils mailing list