[OpenAFS-devel] symbol _error_message conflict on 10.3 (now des_init_mutex)

Dave Botsch botsch@cnf.cornell.edu
Wed, 21 Feb 2007 11:34:18 -0500


To sort of reply to my own message and ask another question...

I got ld to do the right thing by putting the -m before the -twolevel_namespace
flag (why does this matter? Who knows).

That, however, gives the infamous undefined symbols _des_init_mutex and
_des_random_mutex mentioned in
http://www.openafs.org/pipermail/openafs-devel/2005-May/012240.html

though, the discussion there seems to quickly migrate from apple to windows.

>From what I'm reading in that thread, it seems these mutexes are
declared but not defined/initialized hence the apple linker doesn't include
them in the library table of contents?

On Tue, Feb 20, 2007 at 05:18:39PM -0500, Dave Botsch wrote:
> I'm not sure it's an issue under 10.4 with the conflicts.
> 
> As far as 10.3...
> 
> supposedly the two linker flags you mention are the default for 10.3 and up
> (but I had tried putting them in there as other linker options, anyway), and
> still the multiple symbol definition gives an error and not a warning.
> 
> I'm looking back at the man page again for anything else and did find the -m
> option, though, the man page seems to be wrong about how to use this option.
> 
> On Tue, Feb 20, 2007 at 04:56:49PM -0500, Marcus Watts wrote:
> > ...
> > > what's more interesting is that under 10.4, stuff builds. It appears that using
> > > the 10.4SDK, xcode is able to do its two level namespace trick and just gives
> > > an ld warning that that symbol is there multiple times.
> > > 
> > > Under 10.3SDK, however, (even when building on a 10.4 box), it seems that this
> > > doesn't work, even if I specify the twolevel namespace linker option. So,
> > > something is different under 10.3, but what? Could it have something to do w.
> > > the way the afs libs or the kerberos framework is built under 10.3?
> > ...
> > 
> > sure, it's possible.
> > 	man ld
> > describes these:
> > 	env LD_TWOLEVEL_NAMESPACE=1
> > 	-twolevel_namespace
> > 	-multiply_defined warning
> > which will certainly modify that "two level namespace trick" so probably
> > affect the results.  There looks to be quite a few more related ld
> > options as well, which might possibly affect how libraries are built (and
> > hence explain the behavior you are seeing).  'otool' is at least capable
> > of printing the two-level namespace hints.
> > 
> > There's a pretty good chance that the object you built under 10.4 isn't
> > completely healthy.  Most likely, one set or the other of error messages
> > won't be visible - which set is visible may depend on which namespace
> > was visible to the routine calling error_message().  This may not
> > matter greatly to you - if you are getting link errors mainly or only
> > on of aklog, then you may not care because the distribution versions of
> > aklog don't usually try to lookup kerberos errors.
> > 
> > 				-Marcus Watts
> > 
> 
> -- 
> ********************************
> David William Botsch
> Programmer/Analyst
> CNF Computing
> botsch@cnf.cornell.edu
> ********************************
> _______________________________________________
> OpenAFS-devel mailing list
> OpenAFS-devel@openafs.org
> https://lists.openafs.org/mailman/listinfo/openafs-devel
> 

-- 
********************************
David William Botsch
Programmer/Analyst
CNF Computing
botsch@cnf.cornell.edu
********************************