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)r...@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
signature.asc
Description: Digital signature

