John Wolfe wrote:
Thank you very much.  The clearly is the problem.

Our present build has these functions exported as weak symbols from numerous shared objects. I had hastily (and incorrectly) jumped
to the conclusion that the .map files were controlling function
ordering within a library.  We had intended to use the USLC
"fur" tool to specify optimal function ordering or code block
re-ordering within a function once profiling information was
available.

Obviously we now need to revist all 500_ *.map files.

Are all getCppuType() and cppu_detail_getUnoType() functions
to be local to each shared object?

Yes. The two ways of generating these functions with cppumaker break the One Definition Rule, so these functions' scope has to be treated very carefully (and, all in all, the design is rather broken here).

What is the guidelines for when a "global" version of the functions
can be used - presumably the "light" versions after bootstrap?

After bootstrap, it would be harmless for either version to be used anywhere.

Or, is there a specific list of shared objects which must use
a local "comprehensive" version of the functions?

Only indirectly, grep for BOOTSTRAP_SERVICE in makefiles.

-Stephan

Thanks again,

-- John

Stephan Bergmann wrote:
John Wolfe wrote:
[...]

Error: File /u/oo-jlw/build/cppuhelper/source/implbase_ex.cxx, Line 252:
 cannot get type description for type
 "com.sun.star.lang.XMultiServiceFactory"!

Conceivably, this could be expected on initial startup or even at all startups ???

Or, is this an indication that some static initialization has
not been accomplished or not done correctly?

The types.rdb is not read (mmap'ed) in until later.


Information about UNO types (functions getCppuType and, lately added, cppu_detail_getUnoType) can be generated in two ways by cppumaker: either "comprehensive," including all the necessary data in the function body, or "light," just pointing to the information in types.rdb. Some shared libraries that are used during soffice bootstrap use the comprehensive way (as types.rdb is not yet mmapped, as you observed), while all other shared libraries use the light way.

Now, I suspect that you have trouble with symbol exports, that multiple shared libraries (or probably the soffice.bin executable as well) export say the XMultiServiceFactory getCppuType function (some the comprehensive, some the light version), and some bootstrap library that exports the comprehensive version nevertheless uses the light version exported from somewhere else. The MacIntel port had a similar problem.

-Stephan

[...]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to