http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52205

Ian Lance Taylor <ian at airs dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
   Last reconfirmed|                            |2012-02-12
         Resolution|DUPLICATE                   |
     Ever Confirmed|0                           |1

--- Comment #3 from Ian Lance Taylor <ian at airs dot com> 2012-02-12 04:12:07 
UTC ---
I'm using a system Rainer gave me access to.  It's sparc-sun-solaris2.11. 
uname -a reports

SunOS mayon 5.11 11.0 sun4v sparc SUNW,SPARC-Enterprise-T5220 Solaris

readelf -V /lib/libc.so.1 shows that the highest version is SUNW_1.22.7.

Using mainline as of a couple of February 8, 2012 or so.  Looking at
libgcc/config/sparc/sol2-unwind.h.

This case matches:

  if(/* Solaris 8+ - multi-threaded
       ----------------------------
       <__sighndlr>:    save  %sp, -96, %sp
       <__sighndlr+4>:    mov  %i0, %o0
       <__sighndlr+8>:    mov  %i1, %o1
       <__sighndlr+12>:    call  %i3
       <__sighndlr+16>:    mov  %i2, %o2
       <__sighndlr+20>:    ret         <--- PC
       <__sighndlr+24>:    restore  */
        pc[-5] == 0x9de3bfa0
     && pc[-4] == 0x90100018
     && pc[-3] == 0x92100019
     && pc[-2] == 0x9fc6c000
     && pc[-1] == 0x9410001a
     && pc[ 0] == 0x81c7e008
     && pc[ 1] == 0x81e80000)

In that condition, cuh_pattern is set to 0x92100019.  This doesn't match any of
the choices in the code, so it returns 1 with *nframes = 2.  In order to work
correctly, it needs to return with *nframes = 3.

cuh_pattern is an instruction loaded from some code.  That code looks like
this:

   0xff298f48 <call_user_handler+876>:  mov  %i1, %o1
   0xff298f4c <call_user_handler+880>:  call  0xff2a552c <__sighndlr>
   0xff298f50 <call_user_handler+884>:  mov  %i5, %o2
   0xff298f54 <call_user_handler+888>:  ld  [ %fp + 0x4c ], %i5
   0xff298f58 <call_user_handler+892>:  ld  [ %fp + 0x44 ], %g5

Reply via email to