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

Re: Dependencies on shared libs, news and difference between archs



Raphael Hertzog wrote:
[snip]
> 2/ Second example, libconfig0 has a supplementary symbols
> _PROCEDURE_LINKAGE_TABLE_ on sparc and alpha. I don't know where it comes from.
> Is this a internal symbols that I missed?
> On powerpc it has _SDA_BASE_ and _SDA2_BASE_. Same question as above.
> On amd64 it has lost the "_DYNAMIC" symbol. Same question as above.

The symbols for PLT and dynamic section are magic for the dynamic loader,
they aren't relevant WRT shared library dependencies. I guess the same
applies to the powerpc SDA symbols.

> Quick googling led me to believe that I can/should exclude all those. If
> someone can confirm, it would be great.
> 
> 3/ Third example, libgci0/0.9.5.dfsg-2 on mipsel has a "0x62" global symbol:
> 009b6870 g    D  *ABS*  009b6170              0x62
> It also has a 0x63 symbol but this one is marked local so is already discarded.
> 009b4cb0 l    D  *ABS*  009b6580              0x63
> I have no idea where they come from and what they're used for. Can someone
> from debian-mips enlighten me?

Looks like a corrupted symbol table.

> 4/ Fourth example, libgarlic2006 on alpha has many supplementary symbols ending
> in "___elabs". No idea what the root difference is.
> 
> 5/ Fifth example, it looks like 64 bits ports tend to have differences in common
> like on libneon2.6 where various functions suffixed by "64" disappear on those
> arches (ne_get_range64, ne_set_request_body_fd64, ne_set_request_body_provider64).

64bit ports tend to handle 64bit offsets in their interface functions, so
they don't need special versions for e.g. LFS.

> If you want to investigate a bit more on differences, you can grab that file:
> http://users.alioth.debian.org/~hertzog/comparison.tar.bz2 (139 Mb)
> the "result-compare" contain the information about differences on all packages.
> You can then lookup the difference manually by diffing files in result/sid/*.symbols.*
> 
> 
> About C++ libraries
> -------------------
> 
> Can anyone explain me why there's randomness in symbol mangling?  If I compare
> the symbols file of gnunet-qt for example I get differences like this between
> i386 and alpha:
> @@ -67,10 +67,10 @@
>   _ZTV13GPluginLoader@Base 0.7.1-1
>   _ZTV6GEvent@Base 0.7.1-1
>   _ZTV7GPlugin@Base 0.7.1-1
> - _ZThn8_N11GTextEditorD0Ev@Base 0.7.1-1
> - _ZThn8_N11GTextEditorD1Ev@Base 0.7.1-1
> - _ZThn8_N7GPluginD0Ev@Base 0.7.1-1
> - _ZThn8_N7GPluginD1Ev@Base 0.7.1-1
> + _ZThn16_N11GTextEditorD0Ev@Base 0.7.1-1
> + _ZThn16_N11GTextEditorD1Ev@Base 0.7.1-1
> + _ZThn16_N7GPluginD0Ev@Base 0.7.1-1
> + _ZThn16_N7GPluginD1Ev@Base 0.7.1-1
>  libgnunetqtmodule_about.so.1 gnunet-qt #MINVER#
>   _ZN11Ui_WndAbout7setupUiEP7QWidget@Base 0.7.1-1
>   _ZN12GAboutPlugin11linkHandlerERK4QUrl@Base 0.7.1-1
> 
> But if you check what it refers too, they refer to the same symbol:
> $ c++filt _ZThn8_N11GTextEditorD0Ev
> non-virtual thunk to GTextEditor::~GTextEditor()
> $ c++filt _ZThn16_N11GTextEditorD0Ev
> non-virtual thunk to GTextEditor::~GTextEditor()
> 
> And if I convert the symbols files with c++filt then both files are identical.

Different object/vtable layout, see
http://www.codesourcery.com/cxx-abi/abi.html#mangling


Thiemo



Reply to: