Bug 11969 - Multiple inclusion of tinyxml.o in rarian-sk-migrate
Summary: Multiple inclusion of tinyxml.o in rarian-sk-migrate
Status: NEW
Alias: None
Product: Rarian
Classification: Unclassified
Component: General (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Don Scorgie
QA Contact:
Depends on:
Reported: 2007-08-13 00:02 UTC by Daniel Macks
Modified: 2007-09-04 08:55 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Description Daniel Macks 2007-08-13 00:02:22 UTC
Building rarian-0.5.6 on OS X 10.3 (gcc3.3), I get many linker warnings:

g++-3.3 -g -O2 -o .libs/rarian-sk-migrate rarian-sk-migrate.o tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o rarian-reg-full.o -Wl,-bind_at_load  -L/sw/lib ../librarian/.libs/librarian.dylib
ld: warning multiple definitions of symbol TiXmlDeclaration::operator=(TiXmlDeclaration const&)
tinyxml.o definition of TiXmlDeclaration::operator=(TiXmlDeclaration const&) in section (__TEXT,__text)
../librarian/.libs/librarian.dylib(single module) definition of TiXmlDeclaration::operator=(TiXmlDeclaration const&)
ld: warning multiple definitions of symbol TiXmlDocument::LoadFile(TiXmlEncoding)
tinyxml.o definition of TiXmlDocument::LoadFile(TiXmlEncoding) in section (__TEXT,__text)
../librarian/.libs/librarian.dylib(single module) definition of TiXmlDocument::LoadFile(TiXmlEncoding)

and similar for many dozens of symbols in these two files. The issue is that tinyxml.o is linked into rarian-sk-migrate directly, but tinyxml.o is also linked into librarian which is linked into rarian-sk-migrate. Oh sure, it's the same object file, but linker doesn't know that:)

If tinyxml is embedded in librarian, no need to link it explicitly as well I don't think. OTOH, it looks like tinyxml is a self-contained convenience library but is also not really "part of" librarian or needing to be available in the public interface to librarian, in which case maybe its symbols should be downgraded to private in the ABI?

Taking a step back, this is a pretty entangled mess, and makes it possibly complicated to upgrade tinyxml in the future. Might be lots clearer (and pave the way for possible future use of an external tinyxml lib) to place tinyxml in its own subdir and roll it as a libtool convenience library.
Comment 1 Daniel Macks 2007-09-02 21:04:32 UTC
Er, I'm fairly sure I had several more comments here and patches...where did they go?
Comment 2 Daniel Macks 2007-09-04 08:55:36 UTC
My patch in Bug #12147 solves the symptoms here, and makes the ABI insensitive to future changes in use of tinyxml or other implementations. Would still be cleaner to encapsulate libtiny as a convenience lib, but that's up to developers because it is no longer visible to users or linkers.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.