[RFC][AARCH64][GAS]Stop creating new frag for .inst directive

Renlin Li renlin.li@arm.com
Wed Mar 25 14:56:00 GMT 2015


Hi Nick,

Thank you for the explanation, it's now clear to me.
I will try to reconsider it and find another approach.

Regards,
Renlin

On 25/03/15 13:23, Nicholas Clifton wrote:
> Hi Renlin,
>
>> I don't see any particular reasons why we call frag_align_code here.
>> If it's indeed have reasons to do so, I would be quite happy if somebody
>> could explain it to me.
> Certainly.  It is there in order to ensure 4-byte alignment when
> generating instructions.  Consider this variation of your test case:
>
>           .inst 0x01020304
>           nop
>           .short 0x1234
>           .inst 0x12345678
>
> With your patch applied this generates:
>
>      0:   01020304        .inst   0x01020304 ; undefined
>      4:   d503201f        nop
>      8:   1234            .short  0x1234
>      a:   12345678        and     w24, w19, #0xfffff003
>
> Whereas the current code produces:
>
>      0:   01020304        .inst   0x01020304 ; undefined
>      4:   d503201f        nop
>      8:   1234            .short  0x1234
>      a:   0000            .short  0x0000
>      c:   12345678        and     w24, w19, #0xfffff003
>
> Note the two bytes of padding at address 0xa, so that the second .inst
> pseudo starts on a 4-byte aligned boundary.
>
> Cheers
>     Nick
>
> PS.  Your test case was missing a 1: label, and the error message needed
> to be in quotes...
>



More information about the Binutils mailing list