Aren't system libraries required not to touch application global registers %g2 
- %g4?

When I look at the disassembly of _XInternAtom in /usr/lib/libX11.so.4
(from Solaris Nevada snv_48 SPARC), I see that the code is using / thrashing
global register %g2.

I see code like this:

    _XInternAtom+0x264:     94 10 00 11  mov       %l1, %o2
    _XInternAtom+0x268:     ac 0d e0 03  and       %l7, 0x3, %l6
    _XInternAtom+0x26c:     84 0a 60 03  and       %o1, 0x3, %g2
    _XInternAtom+0x270:     80 95 80 02  orcc      %l6, %g2, %g0


Or this:

    _XInternAtom+0x2bc:     c4 0d bf ff  ldub      [%l6 - 0x1], %g2
    _XInternAtom+0x2c0:     16 bf ff f9  bge       -0x1c         
<_XInternAtom+0x2a4>
    _XInternAtom+0x2c4:     c4 2d ff ff  stb       %g2, [%l7 - 0x1]


This breaks applications like qemu, which is trying to use global registers %g2 
- %g4;
but some of these global register variables get thrashed by calls into the X11
libraries.

Shouldn't the Solaris X11 shared libraries be compiled with  -xregs=no%appl ?

See also Bug ID 4166599
http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=4166599
 
 
This message posted from opensolaris.org

Reply via email to