On Sa, Mai 29, 2010 at 18:18:17 (CEST), Jonas Smedegaard wrote:

>>>> IMHO an excellent reason to use a symbols file!
>>>
>>> Good idea.
>>
>>actually, not, this is a c++ lib.
>>
>> I know that dpkg-gensymbols in unstable supports c++ unmangled symbol
>> names, but I cannot figure out how to make it create templates with
>> unmangled symboles. I'm certainly not going to do this step by hand!
>>
>>Jonas, do you know how to do that?
>
> Not that I am expert on the subject, but a quick googling seems to
> indicate that filtering through c++filt (part of the binutils package)
> should do the trick.

Okay, for educational purposes, I've done this excercise. Find the
symbol file attached to this email, which I've generated on the basis of
the version in unstable.

On the basis of current master, I've generated a symbol diff, which I've
attached as well:

--- debian/libebml0.symbols (libebml0_0.8.0-1_i386)
+++ dpkg-gensymbolsv04RjB	2010-05-29 16:52:18.000000000 +0000
@@ -1,4 +1,54 @@
 libebml.so.0 libebml0 #MINVER#
+ _zn7libebml10ebmlmaster6removeern9__gnu_cxx17__normal_iteratorippns_11ebmlelementest6vectoris4_sais4_e...@base 0.8.0-1
+ _zn7libebml10ebmlmaster6removeerst16reverse_iteratorin9__gnu_cxx17__normal_iteratorippns_11ebmlelementest6vectoris5_sais5_ee...@base 0.8.0-1
+ _zn7libebml10ebmlstring15setdefaultvaluee...@base 0.8.0-1
+ _zn7libebml10ebmlstringaser...@base 0.8.0-1
+ _zn7libebml12emaxidlengthc...@base 0.8.0-1
+ _zn7libebml12emaxidlengthc...@base 0.8.0-1
+ _zn7libebml12ereadversionc...@base 0.8.0-1
+ _zn7libebml12ereadversionc...@base 0.8.0-1
+ _zn7libebml12ebmlsinteger14setdefaultsiz...@base 0.8.0-1
+ _zn7libebml12ebmluinteger14setdefaultsiz...@base 0.8.0-1
+ _zn7libebml12ebmluinteger15setdefaultvalu...@base 0.8.0-1
+ _zn7libebml13ebmlcallbacksc1epfrns_11ebmlelementeverkns_6ebmlidepkcrkns_19ebmlsemanticconte...@base 0.8.0-1
+ _zn7libebml13ebmlcallbacksc2epfrns_11ebmlelementeverkns_6ebmlidepkcrkns_19ebmlsemanticconte...@base 0.8.0-1
+ _zn7libebml14emaxsizelengthc...@base 0.8.0-1
+ _zn7libebml14emaxsizelengthc...@base 0.8.0-1
+ _zn7libebml15edoctypeversionc...@base 0.8.0-1
+ _zn7libebml15edoctypeversionc...@base 0.8.0-1
+ _zn7libebml17ebmlunicodestring15setdefaultvalueerns_9utfstri...@base 0.8.0-1
+ _zn7libebml18context_ebmlglob...@base 0.8.0-1
+ _zn7libebml19edoctypereadversionc...@base 0.8.0-1
+ _zn7libebml19edoctypereadversionc...@base 0.8.0-1
+ _zn7libebml8edoctypec...@base 0.8.0-1
+ _zn7libebml8edoctypec...@base 0.8.0-1
+ _zn7libebml8eversionc...@base 0.8.0-1
+ _zn7libebml8eversionc...@base 0.8.0-1
+ _zn7libebml9ebmldummy6creat...@base 0.8.0-1
+ _zn7libebml9ebmlfloat15setdefaultvalu...@base 0.8.0-1
+ _znk7libebml10ebmlbinary12validatesiz...@base 0.8.0-1
+ _znk7libebml10ebmlstring10defaultva...@base 0.8.0-1
+ _znk7libebml11ebmlelement13issmallerthanepk...@base 0.8.0-1
+ _znk7libebml12emaxidlength13createelemen...@base 0.8.0-1
+ _znk7libebml12ereadversion13createelemen...@base 0.8.0-1
+ _znk7libebml12ebmlsinteger13issmallerthanepkns_11ebmleleme...@base 0.8.0-1
+ _znk7libebml12ebmluinteger10defaultva...@base 0.8.0-1
+ _znk7libebml12ebmluinteger13issmallerthanepkns_11ebmleleme...@base 0.8.0-1
+ _znk7libebml14emaxsizelength13createelemen...@base 0.8.0-1
+ _znk7libebml15edoctypeversion13createelemen...@base 0.8.0-1
+ _znk7libebml17ebmlunicodestring10defaultva...@base 0.8.0-1
+ _znk7libebml19edoctypereadversion13createelemen...@base 0.8.0-1
+ _znk7libebml19ebmlsemanticcontext11getsemanti...@base 0.8.0-1
+ _znk7libebml8edoctype13createelemen...@base 0.8.0-1
+ _znk7libebml8eversion13createelemen...@base 0.8.0-1
+ _znk7libebml8ebmldate13issmallerthanepkns_11ebmleleme...@base 0.8.0-1
+ _znk7libebml8ebmlhead13createelemen...@base 0.8.0-1
+ _znk7libebml8ebmlvoid13createelemen...@base 0.8.0-1
+ _znk7libebml9ebmlcrc3213createelemen...@base 0.8.0-1
+ _znk7libebml9ebmldummy13createelemen...@base 0.8.0-1
+ _znk7libebml9ebmlfloat10defaultva...@base 0.8.0-1
+ _znk7libebml9ebmlfloat13issmallerthanepkns_11ebmleleme...@base 0.8.0-1
+ _znst6vectoripn7libebml11ebmlelementesais2_ee5eraseen9__gnu_cxx17__normal_iteratorips2_s4...@base 0.8.0-1
  (c++)"char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_construct<char*>(char*, char*, std::allocator<char> const&, std::forward_iterator_tag)@Base" 0.7.7~
  (c++)"libebml::ADbg::ADbg(int)@Base" 0.7.7~
  (c++)"libebml::ADbg::OutPut(char const*, ...) co...@base" 0.7.7~
@@ -26,53 +76,53 @@
  (c++)"libebml::EDocTypeReadVersion::Generic() co...@base" 0.7.7~
  (c++)"libebml::EDocTypeReadVersion::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EDocTypeReadVersion::~EDocTypeReadVersion()@Base" 0.7.7~
- (c++)"libebml::edoctypereadversion_cont...@base" 0.7.7~
- (c++)"libebml::edoctypereadversion_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::edoctypereadversion_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::edoctypereadversion_th...@base" 0.7.7~
  (c++)"libebml::EDocTypeVersion::classin...@base" 0.7.7~
  (c++)"libebml::EDocTypeVersion::Clone() co...@base" 0.7.7~
  (c++)"libebml::EDocTypeVersion::Create()@Base" 0.7.7~
  (c++)"libebml::EDocTypeVersion::Generic() co...@base" 0.7.7~
  (c++)"libebml::EDocTypeVersion::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EDocTypeVersion::~EDocTypeVersion()@Base" 0.7.7~
- (c++)"libebml::edoctypeversion_cont...@base" 0.7.7~
- (c++)"libebml::edoctypeversion_th...@base" 0.7.7~
- (c++)"libebml::edoctype_cont...@base" 0.7.7~
- (c++)"libebml::edoctype_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::edoctypeversion_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::edoctypeversion_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::edoctype_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::edoctype_th...@base" 0.7.7~
  (c++)"libebml::EMaxIdLength::classin...@base" 0.7.7~
  (c++)"libebml::EMaxIdLength::Clone() co...@base" 0.7.7~
  (c++)"libebml::EMaxIdLength::Create()@Base" 0.7.7~
  (c++)"libebml::EMaxIdLength::Generic() co...@base" 0.7.7~
  (c++)"libebml::EMaxIdLength::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EMaxIdLength::~EMaxIdLength()@Base" 0.7.7~
- (c++)"libebml::emaxidlength_cont...@base" 0.7.7~
- (c++)"libebml::emaxidlength_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::emaxidlength_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::emaxidlength_th...@base" 0.7.7~
  (c++)"libebml::EMaxSizeLength::classin...@base" 0.7.7~
  (c++)"libebml::EMaxSizeLength::Clone() co...@base" 0.7.7~
  (c++)"libebml::EMaxSizeLength::Create()@Base" 0.7.7~
  (c++)"libebml::EMaxSizeLength::Generic() co...@base" 0.7.7~
  (c++)"libebml::EMaxSizeLength::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EMaxSizeLength::~EMaxSizeLength()@Base" 0.7.7~
- (c++)"libebml::emaxsizelength_cont...@base" 0.7.7~
- (c++)"libebml::emaxsizelength_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::emaxsizelength_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::emaxsizelength_th...@base" 0.7.7~
  (c++)"libebml::EReadVersion::classin...@base" 0.7.7~
  (c++)"libebml::EReadVersion::Clone() co...@base" 0.7.7~
  (c++)"libebml::EReadVersion::Create()@Base" 0.7.7~
  (c++)"libebml::EReadVersion::Generic() co...@base" 0.7.7~
  (c++)"libebml::EReadVersion::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EReadVersion::~EReadVersion()@Base" 0.7.7~
- (c++)"libebml::ereadversion_cont...@base" 0.7.7~
- (c++)"libebml::ereadversion_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::ereadversion_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::ereadversion_th...@base" 0.7.7~
  (c++)"libebml::EVersion::classin...@base" 0.7.7~
  (c++)"libebml::EVersion::Clone() co...@base" 0.7.7~
  (c++)"libebml::EVersion::Create()@Base" 0.7.7~
  (c++)"libebml::EVersion::Generic() co...@base" 0.7.7~
  (c++)"libebml::EVersion::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EVersion::~EVersion()@Base" 0.7.7~
- (c++)"libebml::eversion_cont...@base" 0.7.7~
- (c++)"libebml::eversion_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::eversion_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::eversion_th...@base" 0.7.7~
  (c++)"libebml::EbmlBinary::EbmlBinary()@Base" 0.7.7~
  (c++)"libebml::EbmlBinary::EbmlBinary(libebml::EbmlBinary const&)@Base" 0.7.7~
- (c++)"libebml::EbmlBinary::GetSize() co...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::EbmlBinary::GetSize() co...@base" 0.7.7~
  (c++)"libebml::EbmlBinary::IsDefaultValue() co...@base" 0.7.7~
  (c++)"libebml::EbmlBinary::ReadData(libebml::IOCallback&, libebml::ScopeMode)@Base" 0.7.7~
  (c++)"libebml::EbmlBinary::RenderData(libebml::IOCallback&, bool, bool)@Base" 0.7.7~
@@ -98,7 +148,7 @@
  (c++)"libebml::EbmlCrc32::m_...@base" 0.7.7~
  (c++)"libebml::EbmlCrc32::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EbmlCrc32::~EbmlCrc32()@Base" 0.7.7~
- (c++)"libebml::ebmlcrc32_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::ebmlcrc32_th...@base" 0.7.7~
  (c++)"libebml::EbmlDate::EbmlDate(libebml::EbmlDate const&)@Base" 0.7.7~
  (c++)"libebml::EbmlDate::IsDefaultValue() co...@base" 0.7.7~
  (c++)"libebml::EbmlDate::ReadData(libebml::IOCallback&, libebml::ScopeMode)@Base" 0.7.7~
@@ -113,7 +163,7 @@
  (c++)"libebml::EbmlDummy::Generic() co...@base" 0.7.7~
  (c++)"libebml::EbmlDummy::IsDefaultValue() co...@base" 0.7.7~
  (c++)"libebml::EbmlDummy::IsDummy() co...@base" 0.7.7~
- (c++)"libebml::EbmlDummy::ValidateSize() co...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::EbmlDummy::ValidateSize() co...@base" 0.7.7~
  (c++)"libebml::EbmlDummy::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EbmlDummy::~EbmlDummy()@Base" 0.7.7~
  (c++)"libebml::EbmlElement::CompareElements(libebml::EbmlElement const*, libebml::EbmlElement const*)@Base" 0.7.7~
@@ -136,7 +186,7 @@
  (c++)"libebml::EbmlElement::SetSizeInfinite(bool)@Base" 0.7.7~
  (c++)"libebml::EbmlElement::SkipData(libebml::EbmlStream&, libebml::EbmlSemanticContext const&, libebml::EbmlElement*, bool)@Base" 0.7.7~
  (c++)"libebml::EbmlElement::VoidMe(libebml::IOCallback&, bool)@Base" 0.7.7~
- (c++)"libebml::EbmlElement::operator<(libebml::EbmlElement const&) co...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::EbmlElement::operator<(libebml::EbmlElement const&) co...@base" 0.7.7~
  (c++)"libebml::EbmlElement::~EbmlElement()@Base" 0.7.7~
  (c++)"libebml::EbmlFloat::EbmlFloat(double, libebml::EbmlFloat::Precision)@Base" 0.7.7~
  (c++)"libebml::EbmlFloat::EbmlFloat(libebml::EbmlFloat const&)@Base" 0.7.7~
@@ -155,7 +205,7 @@
  (c++)"libebml::EbmlHead::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EbmlHead::~EbmlHead()@Base" 0.7.7~
  (c++)"libebml::ebmlhead_cont...@base" 0.7.7~
- (c++)"libebml::ebmlhead_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::ebmlhead_th...@base" 0.7.7~
  (c++)"libebml::EbmlMaster::AddNewElt(libebml::EbmlCallbacks const&)@Base" 0.7.7~
  (c++)"libebml::EbmlMaster::CheckMandatory() co...@base" 0.7.7~
  (c++)"libebml::EbmlMaster::EbmlMaster(libebml::EbmlMaster const&)@Base" 0.7.7~
@@ -205,7 +255,7 @@
  (c++)"libebml::EbmlString::RenderData(libebml::IOCallback&, bool, bool)@Base" 0.7.7~
  (c++)"libebml::EbmlString::UpdateSize(bool, bool)@Base" 0.7.7~
  (c++)"libebml::EbmlString::ValidateSize() co...@base" 0.7.7~
- (c++)"libebml::EbmlString::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::EbmlString::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.7.7~
  (c++)"libebml::EbmlString::~EbmlString()@Base" 0.7.7~
  (c++)"libebml::EbmlUInteger::EbmlUInteger()@Base" 0.7.7~
  (c++)"libebml::EbmlUInteger::EbmlUInteger(libebml::EbmlUInteger const&)@Base" 0.7.7~
@@ -234,11 +284,11 @@
  (c++)"libebml::EbmlVoid::Overwrite(libebml::EbmlElement const&, libebml::IOCallback&, bool, bool)@Base" 0.7.7~
  (c++)"libebml::EbmlVoid::RenderData(libebml::IOCallback&, bool, bool)@Base" 0.7.7~
  (c++)"libebml::EbmlVoid::ReplaceWith(libebml::EbmlElement&, libebml::IOCallback&, bool, bool)@Base" 0.7.7~
- (c++)"libebml::EbmlVoid::ValidateSize() co...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::EbmlVoid::ValidateSize() co...@base" 0.7.7~
  (c++)"libebml::EbmlVoid::operator libebml::EbmlId const&() co...@base" 0.7.7~
  (c++)"libebml::EbmlVoid::~EbmlVoid()@Base" 0.7.7~
- (c++)"libebml::ebmlvoid_cont...@base" 0.7.7~
- (c++)"libebml::ebmlvoid_th...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::ebmlvoid_cont...@base" 0.7.7~
+#MISSING: 0.8.0-1# (c++)"libebml::ebmlvoid_th...@base" 0.7.7~
  (c++)"libebml::GetEbmlGlobal_Context()@Base" 0.7.7~
  (c++)"libebml::IOCallback::readFully(void*, unsigned int)@Base" 0.7.7~
  (c++)"libebml::IOCallback::writeFully(void const*, unsigned int)@Base" 0.7.7~
There are indeed quite some symbols missing. Unless we want to ignore
the issue and just upload anyway, we now need to check if these symbols
were intended to be used by external applications or not. Depending on
the answer for each symbol, the solution is:

 - fix libebml to reintroduce the symbols
 - ignore the issue
 - fix applications to not use the symbols

Anyone volunteering to discuss the list with upstream?

I'd prefer not to do so myself, because I'm currently working pretty
hard on getting ffmpeg 0.6 out of the door.

Attachment: libebml0.symbols
Description: Binary data


as a general remark to symbols files with c++: I feel this is still too
much manual work. The generation of the first set could be made much
easier. I'll try to avoid doing that for future C++ libraries.

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4
_______________________________________________
pkg-multimedia-maintainers mailing list
pkg-multimedia-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/pkg-multimedia-maintainers

Reply via email to