Thanks Ed for pointing to the bug that refers to the same problem that i 
am experiencing. I did ::dismod v9plus
to enable, and could now see the mnemonics...Here it is:

 > ::dismode v9plus
disassembly mode is v9plus (UltraSPARC1-v9 disassembler)

 > libc_psr.so.1`memcpy+0x3d4::dis
libc_psr.so.1`memcpy+0x3ac:
be,pt %icc, +0x68 <libc_psr.so.1`memcpy+0x414>
libc_psr.so.1`memcpy+0x3b0: sub %o2, %o5, %o2
libc_psr.so.1`memcpy+0x3b4: ldd [%o1], %f2
libc_psr.so.1`memcpy+0x3b8: subcc %o5, 8, %o5
libc_psr.so.1`memcpy+0x3bc:
be,pn %icc, +0x38 <libc_psr.so.1`memcpy+0x3f4>
libc_psr.so.1`memcpy+0x3c0: add %o1, 8, %o1
libc_psr.so.1`memcpy+0x3c4: faligndata %f0, %f2, %f4
libc_psr.so.1`memcpy+0x3c8: ldd [%o1], %f0
libc_psr.so.1`memcpy+0x3cc: subcc %o5, 8, %o5
libc_psr.so.1`memcpy+0x3d0: add %o1, 0x10, %o1
libc_psr.so.1`memcpy+0x3d4: std %f4, [%o0]
libc_psr.so.1`memcpy+0x3d8:
be,pn %icc, +0x30 <libc_psr.so.1`memcpy+0x408>
libc_psr.so.1`memcpy+0x3dc: faligndata %f2, %f0, %f6
libc_psr.so.1`memcpy+0x3e0: ldd [%o1 - 8], %f2
libc_psr.so.1`memcpy+0x3e4: subcc %o5, 8, %o5
libc_psr.so.1`memcpy+0x3e8: std %f6, [%o0 + 8]
libc_psr.so.1`memcpy+0x3ec:
bne,pt %icc, -0x28 <libc_psr.so.1`memcpy+0x3c4>
libc_psr.so.1`memcpy+0x3f0: add %o0, 0x10, %o0
libc_psr.so.1`memcpy+0x3f4: faligndata %f0, %f2, %f4


As Greg rightly pointed out, these are indeed branch (with prediction) 
instructions..


Cheers
--Arindam


Edward Pilatowicz wrote:

>your guess is correct.
>this actually tripped me up recently and i was pointed to the
>following bug:
>       4884128 ::dis should default to each object's native mode
>
>which mentions that you can enable dissassembly of the v9
>instructions in mdb with the following command:
>       ::dismode v9plus
>
>ed
>
>
>On Mon, Jul 16, 2007 at 09:30:28PM +1000, Greg Price wrote:
>  
>
>>These instructions are branches with prediction, i.e. SPARC v9
>>instructions. I suspect the disassemblers only display instructions they
>>think are legitimate for the target code. In this case it's a 32-bit
>>program, hence it's not SPARC v9, and the disassembler has decided it
>>won't decode the v9 instructions. The reason why we have v9 instructions
>>is this is an optimized platform specific library that will only be
>>loaded for relevant platforms - in this case the 480R loads the Sun4u /
>>UltraSPARC III library as the system knows it has UltraSPARC processors.
>>SPARC v9 instructions are still legitimate instructions in a 32 bit
>>program when running on an UltraSPARC (It's really only the address mode
>>that changes when running "32 bit mode")
>>
>>That would be my guess. Make sense?
>>
>>Cheers,
>>Greg
>>
>>
>>
>>Arindam Sarkar - Sun Microsystems wrote:
>>    
>>
>>>Hi,
>>>  I was looking at a userland core, where the tar program dumps core
>>>when it calls mempcy() routine
>>>  of libc_psr library. The call to memcpy() is from a while loop, and
>>>during an iteration tar dumps
>>>  core when it calls memcpy().
>>>     While i was analysing the userland core, i found the following
>>>after dumping the instructions at
>>>  libc_psr.so.1`memcpy+0x3d4.
>>>
>>> > libc_psr.so.1`memcpy+0x3d4::dis
>>>libc_psr.so.1`memcpy+0x3ac:     0x248001a
>>>libc_psr.so.1`memcpy+0x3b0:     sub       %o2, %o5, %o2
>>>libc_psr.so.1`memcpy+0x3b4:     ldd       [%o1], %f2
>>>libc_psr.so.1`memcpy+0x3b8:     subcc     %o5, 8, %o5
>>>libc_psr.so.1`memcpy+0x3bc:     0x240000e
>>>libc_psr.so.1`memcpy+0x3c0:     add       %o1, 8, %o1
>>>libc_psr.so.1`memcpy+0x3c4:     0x89b00902
>>>libc_psr.so.1`memcpy+0x3c8:     ldd       [%o1], %f0
>>>libc_psr.so.1`memcpy+0x3cc:     subcc     %o5, 8, %o5
>>>libc_psr.so.1`memcpy+0x3d0:     add       %o1, 0x10, %o1
>>>libc_psr.so.1`memcpy+0x3d4:     std       %f4, [%o0]
>>>
>>> > !uname -a
>>>SunOS line2-v480 5.10 Generic_120011-11 sun4u sparc SUNW,Sun-Fire-480R
>>> > !cat /etc/release
>>>                     Solaris 10 8/07 s10s_u4wos_10 SPARC
>>>         Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
>>>                      Use is subject to license terms.
>>>                           Assembled 21 June 2007
>>> > ::status
>>>debugging core file of tar (32-bit) from line2-v480
>>>file: /usr/sbin/tar
>>>initial argv: tar -xpf 10g.tar
>>>threading model: multi-threaded
>>>status: process terminated by SIGSEGV (Segmentation Fault)
>>>
>>>
>>> I am not sure why do we see an address at libc_psr.so.1`memcpy+0x3bc,
>>>instead of the usual mnemonic.
>>> Note, this core dump is the result of reproducing a bug on a sparc
>>>machine having S10U4. Can someone
>>> pls tell me *why* we don't see the mnemonic for the 3 instructions in
>>>the above output ? Pls respond to
>>>  me directly since i am not yet a member of this alias.
>>>
>>>
>>>
>>>TIA
>>>--Arindam
>>>_______________________________________________
>>>mdb-discuss mailing list
>>>mdb-discuss at opensolaris.org
>>>
>>>      
>>>
>>_______________________________________________
>>mdb-discuss mailing list
>>mdb-discuss at opensolaris.org
>>    
>>


Reply via email to