Martin Costabel wrote:
> Peter O'Gorman wrote:
> []
>> So the symbol is still there on 10.5, but is private extern? That is,
>> indeed, what nmedit is supposed to do. There are other issues with
>> nmedit on Leopard (it refuses to strip global coalesced symbols -
>> whatever they are) that mean that I will have to patch libtool.
> 
> The nmedit command leaves only one exported symbol, get_oplugin_info.
> This, when called from xmms after loading the plugin via dlopen(), would
> return a structure osx_op, which has osx_about as one of its members. At
> the call of get_oplugin_info(), there appears the undefined symbol error.
> 
> For all other plugins, this works, but they are built from the xmms
> package, and this has the old libtool and does not use nmedit. For these
> plugins, the corresponding *_op and *_about symbols are extern. Only the
> libOSX.so plugin is built separately with the xmms-coreaudio package and
> uses nmedit to turn them into private externs.
> 
>> I'll try to get around to building xmms.
>>
>> In the meantime, does something like this work for you in a patchscript
>> (sed script is all on one line)?
>>
>> sed -e "[EMAIL PROTECTED]@ -exported_symbols_list
>> \$output_objdir/\${libname}-symbols.expsym\'@g" < configure >
>> configure.new
>> mv configure.new configure
> 
> This doesn't match anything in configure. In fact, there are lines with
> nmedit in them, but they have a format that I don't understand at all,
> like:
> 
> module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e
> "s,^\(..*\),_&," < $export_symbols >
> $output_objdir/${libname}-symbols.expsym${_S_}$CC -bundle $archargs
> $allow_undefined_flag  -o $lib $libobjs
> $deplibs$compiler_flags${_S_}nmedit -s
> $output_objdir/${libname}-symbols.expsym ${lib}'
> 
> This is all one line and there is no space in front of nmedit. I don't
> know how this is transformed into three separate command lines later on,
> but it is.

Ah, ok. configure was built with apple's version of gnu libtool on tiger
or panther.

Change the sed to match ${_S_}nmedit instead of ~nmedit and it should
have some effect on the link line.

The symbols that are private extern should still be available to all the
objects in the library itself, so returning the address of osx_about
should work.

Peter
-- 
Peter O'Gorman
http://pogma.com

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel

Reply via email to