Jürgen Keil
2007-Mar-19 11:52 UTC
[qemu-discuss] snv_48: X libraries breaking System V SPARC ABI?
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