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

Re: Shared libraries, dependencies and symbols files



On Mon, 2007-10-01 at 14:38 -0700, Steve Langasek wrote:
> On Mon, Oct 01, 2007 at 09:18:22PM +0200, Michael Koch wrote:
> > On Mon, Oct 01, 2007 at 05:47:34PM +0200, Raphael Hertzog wrote:
> > > Hello,
> 
> > > since library maintainers will soon have the possibilty to use
> > > symbol-based dependencies (instead of shlibs) I setup a system
> > > to keep up-to-date ready-to-use symbols files using Mole:
> > > http://qa.debian.org/cgi-bin/mole/seedsymbols
> 
> > I dont know how common that is but I maintain for example some libraries
> > that exports different APIs on 32-bit userland and 64-bit userland
> > ([1] and [2], I haven't looked for more).
> 
> > What do you recommend for such a case? Using debian/package.symbols and
> > overriding all 64-bit archs with debian/package.symbols.$ARCH?
> 
> diff -u <(c++filt libskstream-0.3-4_i386) <(c++filt libskstream-0.3-4_amd64)
<snip>

c++filt takes symbol names as arguments, not filenames.  The actual
differences are:

diff -u <(c++filt <libskstream-0.3-4_i386) <(c++filt <libskstream-0.3-4_amd64)
--- /dev/fd/63  2007-10-02 00:18:19.443429499 +0100
+++ /dev/fd/62  2007-10-02 00:18:19.443429499 +0100
@@ -107,7 +107,7 @@
  dgram_socket_stream::~dgram_socket_stream()@Base 0.3.6-2
  dgram_socket_stream::~dgram_socket_stream()@Base 0.3.6-2
  socketbuf::sync()@Base 0.3.6-2
- socketbuf::setbuf(char*, int)@Base 0.3.6-2
+ socketbuf::setbuf(char*, long)@Base 0.3.6-2
  socketbuf::setSocket(int)@Base 0.3.6-2
  socketbuf::socketbuf(int, char*, int)@Base 0.3.6-2
  socketbuf::socketbuf(int, unsigned int, unsigned int)@Base 0.3.6-2
@@ -125,29 +125,29 @@
  basic_socket_stream::getSocket() const@Base 0.3.6-2
  construction vtable for basic_socket_stream-in-raw_socket_stream@Base 0.3.6-2
  construction vtable for dgram_socket_stream-in-raw_socket_stream@Base 0.3.6-2
- construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-raw_socket_stream@Base 0.3.6-2  construction vtable for std::basic_iostream<char, std::char_traits<char> >-in-raw_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_istream<char, std::char_traits<char> >-in-raw_socket_stream@Base 0.3.6-2+ construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-raw_socket_stream@Base 0.3.6-2  construction vtable for basic_socket_stream-in-tcp_socket_stream@Base 0.3.6-2
- construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-tcp_socket_stream@Base 0.3.6-2  construction vtable for std::basic_iostream<char, std::char_traits<char> >-in-tcp_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_istream<char, std::char_traits<char> >-in-tcp_socket_stream@Base 0.3.6-2+ construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-tcp_socket_stream@Base 0.3.6-2  construction vtable for basic_socket_stream-in-udp_socket_stream@Base 0.3.6-2
  construction vtable for dgram_socket_stream-in-udp_socket_stream@Base 0.3.6-2
- construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-udp_socket_stream@Base 0.3.6-2  construction vtable for std::basic_iostream<char, std::char_traits<char> >-in-udp_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_istream<char, std::char_traits<char> >-in-udp_socket_stream@Base 0.3.6-2+ construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-udp_socket_stream@Base 0.3.6-2  construction vtable for basic_socket_stream-in-unix_socket_stream@Base 0.3.6-2
- construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-unix_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_iostream<char, std::char_traits<char> >-in-unix_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_istream<char, std::char_traits<char> >-in-unix_socket_stream@Base 0.3.6-2
- construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-basic_socket_stream@Base 0.3.6-2
+ construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-unix_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_iostream<char, std::char_traits<char> >-in-basic_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_istream<char, std::char_traits<char> >-in-basic_socket_stream@Base 0.3.6-2
+ construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-basic_socket_stream@Base 0.3.6-2
  construction vtable for basic_socket_stream-in-dgram_socket_stream@Base 0.3.6-2
- construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-dgram_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_iostream<char, std::char_traits<char> >-in-dgram_socket_stream@Base 0.3.6-2
  construction vtable for std::basic_istream<char, std::char_traits<char> >-in-dgram_socket_stream@Base 0.3.6-2
+ construction vtable for std::basic_ostream<char, std::char_traits<char> >-in-dgram_socket_stream@Base 0.3.6-2
  typeinfo for basic_socket@Base 0.3.6-2
  typeinfo for dgram_socketbuf@Base 0.3.6-2
  typeinfo for ip_socket_server@Base 0.3.6-2

However, if we sort *after* demangling, the differences turn out to be smaller:

diff -u <(c++filt <libskstream-0.3-4_i386 | sort) <(c++filt <libskstream-0.3-4_amd64 | sort)
--- /dev/fd/63  2007-10-02 00:19:14.445928644 +0100
+++ /dev/fd/62  2007-10-02 00:19:14.445928644 +0100
@@ -102,7 +102,7 @@
  raw_socket_stream::raw_socket_stream(FreeSockets::IP_Protocol)@Base 0.3.6-2
  raw_socket_stream::setBroadcast(bool)@Base 0.3.6-2
  raw_socket_stream::setProtocol(FreeSockets::IP_Protocol)@Base 0.3.6-2
- socketbuf::setbuf(char*, int)@Base 0.3.6-2
+ socketbuf::setbuf(char*, long)@Base 0.3.6-2
  socketbuf::setSocket(int)@Base 0.3.6-2
  socketbuf::~socketbuf()@Base 0.3.6-2
  socketbuf::~socketbuf()@Base 0.3.6-2

Ben.

-- 
Ben Hutchings
I'm always amazed by the number of people who take up solipsism because
they heard someone else explain it. - E*Borg on alt.fan.pratchett

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


Reply to: