On Mon, 2007-12-03 at 18:01 -0500, Felix Kühling wrote: 
> I'm looking at the details in the bugzilla entry right now. This may or
> may not apply to michalwd1979's problem.
> 
> I think the problem happens when r128CreateScreen calls
> driParseOptionInfo. It gets the two arguments __driConfigOptions and
> __driNConfigOptions. Both are defined in the same r128screen.c file.
> 
> The error message indicates that there is a mismatch between the two
> variables. I noticed that __driConfigOptions is public, since driconf
> needs to be able to access it, while __driNConfigOptions is static.
> 
> Both drivers (shared objects) have a __driConfigOptions symbol with the
> same name. I guess what's happening is that the dynamic linker resolves
> __driConfigOptions to the same object in both drivers in a dual-screen
> system. On the second screen that happens to be the wrong one.
> 
> I'm not sure how to fix this. Some linker magic may be needed. You need
> to make sure that in the r128 driver, __driConfigOptions is resolved to
> its own version of the symbol in all cases, even when another driver is
> linked in that has a symbol with the same name. I hope this analysis
> helps.

Your analysis is spot on, Felix. :) I realized what the problem was
after one of Michal's later posts, so I came up with a patch to use
-Bsymbolic for linking all shared objects, not just libraries, and that
seems to do the trick.


P.S. -Bsymbolic currently seems to be only ever used on Linux, people
working on other platforms with shared objects may want to look out for
this kind of problem.

-- 
Earthling Michel Dänzer           |          http://tungstengraphics.com
Libre software enthusiast         |          Debian, X and DRI developer


-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to