[Linux-ia64] Re: gas generates incorrect ia64 unwind rlen values

From: Keith Owens <kaos_at_sgi.com>
Date: 2002-12-17 13:34:03
On 16 Dec 2002 18:10:21 -0500, 
Jim Wilson <wilson@redhat.com> wrote:
>Yes, this is the latest one that we give away free of charge to non-customers.
>I think we stopped maintaining these tools a while ago when we started
>recommending RH AS 2.[01] instead of RHL 7.[012] for IA-64 customers.

I built binutils-2.13.90.0.2-2 (from rh 8.0) on ia64.  I extracted the
generated assembler for ia64_fault as traps.S.  The bug still exists in
2.13.90.0.2.  traps.S has been sent to Jim Wilson as a test case.

/usr/src/redhat/BUILD/binutils-2.13.90.0.2/binutils/tmpdir/gas/as -x -mconstant-gp traps.S -o traps.o
/usr/src/redhat/BUILD/binutils-2.13.90.0.2/binutils/readelf -u traps.o

Unwind section '.IA_64.unwind' at offset 0xb40 contains 1 entries:

<ia64_fault>: [0x0-0xad0), info at +0x0
  v1, flags=0x0 ( ), len=16 bytes
    R2:prologue_gr(mask=[rp,ar.pfs],grsave=r37,rlen=8)
        P7:pfs_when(t=0)
        P7:mem_stack_f(t=2,size=256)
        P7:rp_when(t=7)
    R3:body(rlen=475)			<== should be 511
        B2:epilogue(t=2,ecount=0)
    R1:prologue(rlen=0)

0000000000000000 <ia64_fault>:
   0:   0c 30 31 0e 80 05       [MFI]       alloc r38=ar.pfs,12,7,0
   6:   00 00 00 02 00 80                   nop.f 0x0
   c:   01 60 f8 8c                         adds r12=-256,r12
  10:   04 00 00 00 01 00       [MLX]       nop.m 0x0
  16:   00 08 00 00 00 c0                   movl r14=0x80000000f
  1c:   f1 00 00 60 
  20:   02 00 00 00 01 00       [MII]       nop.m 0x0
  26:   50 02 00 62 00 c0                   mov r37=b0;;
  2c:   e1 08 31 80                         and r14=r14,r33
.....
 ab0:   00 00 00 00 01 00       [MII]       nop.m 0x0
 ab6:   00 30 01 55 00 00                   mov.i ar.pfs=r38
 abc:   50 0a 00 07                         mov b0=r37
 ac0:   1d 60 00 18 02 21       [MFB]       adds r12=256,r12
 ac6:   00 00 00 02 00 80                   nop.f 0x0
 acc:   08 00 84 00                         br.ret.sptk.many b0;;
 ad0:   0c 00 00 00 01 00       [MFI]       nop.m 0x0			<=== end of code at slot 519
 ad6:   00 00 00 02 00 00                   nop.f 0x0
 adc:   00 00 04 00                         nop.i 0x0
Received on Mon Dec 16 18:34:20 2002

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:11 EST