[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: how to check for binary compability?



In <[🔎] 20090526113058.GA5633@resivo.wgnet.de>, Jonas Meurer wrote:
>On 25/05/2009 Russ Allbery wrote:
>> Jonas Meurer <jonas@freesources.org> writes:
>> > -_ZN8DwStringixEm
>
>i don't understand that one at all. I cannot find anything with the
>string 'ZN8DwStringixEm' in either kdepim or kdelibs sources.

It wouldn't.  It is a C++ mangled symbol.  Entries in the symbol table must be 
distinct is name only, but C++ functions do not.  Therefore any function with 
C++ linkage generates a symbol based on more than it's name.

>> The new version of the library is no longer exporting its internal
>> portability functions.  This is good -- libraries should not export
>> unrelated symbols.  However, if any of its dependencies happened to
>> depend on those internal symbols (using the versions provided by the
>> library lazily rather than providing their own), you would break them.
>
>lurker is the only package that depends on mimelib1 in debian, and that
>one clearly doesn't use private symbols from mimelib1. We cannot know
>about custom software though.

That's okay (at least for these symbols).  They shouldn't have been exported 
in the first place.  Custom software that depends on getting these symbols 
from mimelib1 is already incorrect, it just happens to work for now.

It should be mentioned in the Changelog (or maybe Debian.NEWS; I'm not sure.)

>> More concerning is the last symbol removal, which indicates that the
>> library has removed:
>>
>>     DwString::operator[](unsigned long)
>DwString::operator is defined in mimelib/mimelib/string.h, and no change
>was made to that header file at all.

'DwString::operator' isn't defined anywhere.  "operator" is a C++ keyword used 
for operator overloading.  It is always followed by some operator punctuation 
(e.g.: +, -, [], (), =) to indicate which operator is being overloaded.  The 
function in question is 'DwString::operator[]' specifically the overload that 
takes an 'unsigned long' as an argument (and based on the rules of operator 
overloading, has to be a member function of DwString.)

You diff doesn't show this change, so I'm not exactly sure why the function is 
no longer exported (or present).
-- 
Boyd Stephen Smith Jr.                   ,= ,-_-. =.
bss@iguanasuicide.net                   ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy         `-'(. .)`-'
http://iguanasuicide.net/                    \_/

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: