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