[desktop-discuss] XineramaGetState() vs different (un)patched vendor provided vers of libXext

Martin Bochnig mb1x at gmx.com
Tue Oct 2 20:45:46 PDT 2007


Modern (gtk/gdk based) desktop applications shipping as part of SXCR are linked against /usr/lib/libgdk-x11-2.0.so.0, which in turn still depends on the deprecated libXext-function XineramaGetState(), which gets reported as missing symbol, whenever an (unpatched default) libXext is found/used by the runtime linker, before the Sun-provided historic /usr/openwin/lib/libXext.so.0 would be found/used.
This has led to one of the issues, that prevented me from calling 
http://www.martux.org/xorg/fox-gate/20070930sun/bin_pkgadd/Xorg7.2.0_opensol_sparc_snv70_binary_pkgadd__fox-gate_20070930.tar.gz
a more_mature_than_alpha-release. Because the previous release 
http://www.martux.org/xorg/OLD/20070503__7.2.0/bin_pkgadd_packages/
had not shipped with libXext at all, no problems arised when replacing Xsun: Gnome could be started, so coud firefox, thunderbird et al. Because the first flavour of libXext that would have been found would always be the very version, /usr/lib/libgdk-x11-2.0.so.0 once had been linked against. Now that I have added libXext to the fox-gate framework (encouraged by/derived from Moinak's work) the default unpatched version at /usr/X11/lib/libXext.so.0.0.0 would be found first, attempted to use, and then the default error handling mechanism of exit()'ing would be gone, printing that nice message to stderr:

ld.so.1: gnome-session: fatal: relocation error: file /usr/lib/libgdk-x11-2.0.so.0: symbol XineramaGetState: referenced symbol not found

It is naturally a question of a few minutes to either add such a symbol to /FOX/MERCURIAL_20070830thu/XXX__fox-gate/XW_NV/open-src/lib/libXext/libXext.patch and change the Makefile to alawys apply that patch (and let that function do nothing, but make the linker's symbol table happy). Or to add such a symbol to an almost empty fake-lib (and LD_PRELOAD it, or link against that).

But those are only hacks/workarounds.
Are there plans to open up Sun's version of libXext, or does it even exist for download already, somewhere? One could then go and make Xorg's new libXext backward compatible to Sun-provided X-clients in a properly engineered manner. Don't know.

References:

Even SGI listed XineramaGetState(3X11) as 
"This API call is deprecated by the new call,
          XineramaActive(3X11). Only run-time backward compatibility
          is provided. For compilation, use the API proposed by Xorg."
Years ago!
(Then I don't quite understand why state of the art JDS stuff is still depending on it, on the latest versions of SX[C-D]R ?)

http://docs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/p_man/cat3/Xext/XineramaGetState.z
http://blogs.sun.com/alanc/date/20050602
http://www.google.com/search?hl=en&q=%22XineramaGetState%3A%22&btnG=Search

--
%martin
 
 
This message posted from opensolaris.org


More information about the desktop-discuss mailing list