Re: Link problems with xedit, may be Darwin-only(?)

Marc Aurele La France <[email protected]>
Newsgroups gmane.comp.xfree86.devel
Message-ID <[email protected]>
On Tue, 24 Apr 2007, SciFi wrote:
> On Tue, 24 Apr 2007 08:08:24 -0600, Marc Aurele La France wrote:
>> On Sun, 22 Apr 2007, SciFi wrote:
>>>> On Sat, 14 Apr 2007, Marc Aurele La France wrote:
>>>>> On Wed, 11 Apr 2007, SciFi wrote:

>>>>>> 4.  Link problems with xedit, may be Darwin-only(?)

>>>>> Possibly.

>>>>>> Build Log snip:

>>>>>> [...] -L../../../exports/lib   lsp.o -L. -llisp -Lmp -lmp -Lre -lre
>>>>>> -lm -L/usr/X11R6/lib
>>>>>> /usr/bin/ld: Undefined symbols:

>>>>> 	[...]

>>>>>> collect2: ld returned 1 exit status
>>>>>> [...]
>>>>>> <<<<

>>>>> I'd like to see the _complete_ command line that fails, not just the
>>>>> tail end of it.

>>>> Anything more on this?  Is this related to your GNU make upgrade?

>>> oh I just saw this ... having weather & connection problems etc.
>>> here...

>>> No ... as I mentioned I've seen this kind of problem with other
>>> projects albeit rarely.  I'd blame the Apple linker on such occasions
>>> for losing the symbols, whatever is causing it we have no idea.  The
>>> symbols _are_ there in the .a files. (IIRC the libdvdread project does
>>> this, too, and there are others, all usually fixed by including the .a
>>> files...)

>> One possibility here is that it is finding a libmp.dylib in a
>> LD_LIBRARY_PATH path, /lib, /usr/lib, or /usr/local/lib.  If so, then
>> the fix would be to #define ExtraLoadOptions to -Wl,-search_paths_first.

> Holy guacamole this is getting too strange.  Please bear with me,
> I really need to explain some things that are related to your
> reply.

> For background:  Even though Apple's current docs say they would
> honour LD_LIBRARY_PATH (probably due to their promise to be more
> Linux-friendly), in actuality we've never seen it work.  Instead
> we must set DYLD_LIBRARY_PATH for Darwin/OSX systems.

> Now to the meat of this issue:

> In my /usr/local/lib are the GNU MP 4.1.2 libraries named -- you
> guessed it -- libmp.a & libmp.dylib (plus symlinks to the
> versioned names).  AFAICT this is their latest version.  I need it
> for some other projects I think related to the FFT libs which
> again are needed for some other projects.  Talk about a naming
> clash.

> I could try putting /usr/X11R6/lib ahead of /usr/local/lib for the
> DYLD_ env just for starting X11 and tasks it spawns, but we then
> have a crazy problem if we include /usr/X11R6/lib AT ALL in that
> path string -- anywhere: late, early, first, middle, last -- it
> makes no difference.

> The biggest crazy problem is that this will disable the Macromedia
> Flash plugin for any & all web-browsers:
> 2007-04-02 05:36:26.495 firefox-bin[6726] CFLog (21): Error loading /Library/Internet Plug-Ins/Flash Player.plugin/Contents/MacOS/Flash Player:  error code 4, error number 0 (Symbol not found: _gluTessCallbackCFM
>  Referenced from: /System/Library/Frameworks/AGL.framework/Versions/A/AGL
>  Expected in: /usr/X11R6/lib/libGLU.dylib
> )

> Another crazy problem is that we see the console printing this
> message for _any-and-all_ tasks using that DYLD_ setting:
> dyld: warning DYLD_ setting caused circular dependency in /usr/X11R6/lib/libGL.dylib

> Some weeks ago I opened problem #5104136 at
> http://bug-report.apple.com/
> to log these interrelated issues with DYLD_LIBRARY_PATH and
> /usr/X11R6/lib.

> (By the nature of the 'free' ADC account, the bug-reports aren't
> made public, searchable, or otherwise sharable.  If you want I
> could c&p the discussion going on there.)

> What's even more strange is that I cannot find any file whatsoever
> *anywhere* with the string 'gluTessCallbackCFM' -- even in the
> calling libs (AGL Frameworks & Flash plugin files)!!!  (hmm I am
> assuming the symbol tables are not encoded with 16-bit ASCII/UTF
> like with some M$ stuff...)

> That happens with libGL[U].dylib coming from Apple's X11 on the
> Tiger install DVD with their updates from a few months ago.  It
> also happens with the _new_ libGL[U].dylib being built from
> current XFree86-cvs!!!

> The only way to fix this for real is to remove /usr/X11R6/lib from
> the DYLD_ path entirely.

> But I want my test env to be sure to use my newer builds of libs
> in /usr/local/lib no matter what.  (There are settings in each
> user's ~/.MacOSX/environment.plist that control these paths for
> the Finder and GUI stuff itself.  To get the system itself to find
> stuff there first, we set+export DYLD_ in the /etc/rc.common
> script which ought to propagate to all other boot tasks.  For the
> system GUI stuff, we edit root's ~/.MacOSX/environment.plist as
> well.  This way we get the whole ball of wax to use e.g. the
> latest iconv+intl libs and many many many others.)

> So my test env isn't going to be able to scan /usr/X11R6/lib at
> all until/unless Apple fix this bug.  But maybe that isn't the
> real problem with this particular xf86 build problem.  Do you
> think I should add '.' as the very first path to DYLD_ -- I don't
> think it is implicit?  (Right now I actually do have '.' as the
> very last path here.)

> Didn't mean to get so long with this post, but you brought up
> something related I needed to get out into the public for others
> to see anyway.  ;)

> I'll definitely try your patch, but I wonder if it will really
> affect the craziness going on here with DYLD_ -- but maybe with
> '.' added first might be a workaround for now.

> Thanks for slogging through this with me.  :)

Eh.  All I did was a fire-side read of the ld(1) man page.

Anyway, I've already committed a change for this.  You won't need to 
change anything.

Marc.

+----------------------------------+----------------------------------+
|  Marc Aurele La France           |  work:   1-780-492-9310          |
|  Academic Information and        |  fax:    1-780-492-1729          |
|    Communications Technologies   |  email:  [email protected]         |
|  352 General Services Building   +----------------------------------+
|  University of Alberta           |                                  |
|  Edmonton, Alberta               |    Standard disclaimers apply    |
|  T6G 2H1                         |                                  |
|  CANADA                          |                                  |
+----------------------------------+----------------------------------+
XFree86 developer and VP.  ATI driver and X server internals.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.