This is the mail archive of the binutils@sources.redhat.com 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: The new assembler with unwind table bug fix


On Thu, Jan 15, 2004 at 05:09:17PM -0800, David Mosberger wrote:
> Oops, while trying to come up with an automated test, I found a case
> which the new assembler doesn't handle properly:
> 
> $ cat t.S
>         .proc foo
>         .prologue
> foo:    .save rp, r2
>         nop 0
>         .align 64
>         .endp foo
> $ as t.S -o t.o
> $ readelf -u t.o
> 
> Unwind section '.IA_64.unwind' at offset 0x98 contains 1 entries:
> 
> <foo>: [0x0-0x40], info at +0x0
>   v1, flags=0x0 (), len=8 bytes
>     R1:prologue(rlen=1)
>         P7:rp_when(t=0)
>         P3:rp_gr(reg=r2)
>     R1:prologue(rlen=0)
>     R1:prologue(rlen=0)
>     R1:prologue(rlen=0)
> 
> The region length should be 15, but instead it comes out as 1.  It
> seems that .align is handled correctly only inside .body, not inside
> .prologue, which must work, too.
> 
> Hopefully, this is easy to fix?
> 

It is not easy to fix. The problem is the assembler uses the next
instruction after .align to find the region size. With

         .align 64
         .endp foo

it couldn't tell where a region ends.


H.J.


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