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

Re: Shared libraries, dependencies and symbols files



On Tue, 2007-10-02 at 00:06 -0700, Steve Langasek wrote:
> On Tue, Oct 02, 2007 at 08:32:40AM +0200, Michael Koch wrote:
> > On Tue, Oct 02, 2007 at 12:21:31AM +0100, Ben Hutchings wrote:
> > > 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
> 
> > That was exactly what I was referring to. Sorry for being unclear.
> 
> Oh, yes, ok.
> 
> > Is it a common problem that APIs use some 32-bit data types on 32-bit
> > archs/userland and 64-bit data types on 64-bit archs?
> 
> Well, on a 32-bit arch, a long is a 32-bit type; on a 64-bit arch, a long is
> a 64-bit type.  And AIUI, on 32-bit archs a "long" is called an "int" in C++
> symbol-mangling.

Symbol name mangling represents the language's types, not the machine's
types.  You can overload a function on a parameter that can be int or
long, for example, regardless of whether those are implemented as the
same machine type.  However, type aliases are dereferenced, as we see
here.

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: