Hey Jan, thanks a lot for the detailed analysis :-) On 26/05/2009 Jan C. Nordholz wrote: > >>> [_ZN8DwStringixEj] > > that symbol is defined in mimelib/mimelib/string.h as > > ] inline char& DwString::operator [] (size_t aPos) > > It is pulled in by mimelib/param.cpp because of > > ] void DwParameter::Parse() > ] { > ] [...] > ] if (len > 2 && mValue[0] == '\'' && mValue[len-1] == '\'') { > ] [...] > (mValue is a DwString member of class DwParameter) > > But g++ doesn't really inline inline header functions (sic): > > [...] > > Instead, it makes them weak global symbols: > > ] (LENNY)root@apocatequil:/BUILD/kdepim-3.5.9/mimelib# nm -D ../obj-i486-linux-gnu/mimelib/.libs/libmimelib.so | grep ixEj > ] 000299c0 W _ZN8DwStringixEj > > However, this does not depend on the application of your patch. In fact, I get > this weak symbol with and without your 1.1.2 diff... What environment did you > compile your standalone libmimelib in (e.g. do you pass '-finline' to g++)? You can find the current version of my packages at http://people.debian.org/~mejo/mimelib1/. I built the packages in a up-to-date amd64 debian/sid pbuilder environment. As you can see in the build log at mimelib1_1.1.4-1_amd64.build, no -finline is passed to g++. > Regarding the original question: Anyone who would like to use that function > would have to include <mimelib/string.h> anyway, so dropping the symbol from > the library (however you managed to do that) should be safe. great, so I don't need to bump the soname just because the private symbol was removed. so only one question remains for me: do I need to bump the soname or at least provide a symbols file for added library symbols? or can I simply ignore them as well? the final diff of 'objdump -T /usr/lib/libmimelib.so.1 | grep \\.text | cut -b62-' from 1.1.2_kde to my 1.1.4 packages is: +_Z17delete_rep_safelyP11DwStringRep +_Z17new_rep_referenceP11DwStringRep +_Z8mem_copyPKcmPc +_ZN13DwFieldParserD1Ev +_ZN14DwEntityParserD1Ev +_ZN8DwBinhexD0Ev +_ZN8DwBinhexD1Ev +_ZN8DwBinhexD2Ev +_ZN8DwString2atEm +_ZNK8DwString2atEm -_ZN8DwStringixEm -mkstemps -strlcat -strlcpy as you can see, I have patched mimelib 1.1.2 further with some patches from kde, but these only add new symbols and don't remove any. greetings, jonas
Attachment:
signature.asc
Description: Digital signature