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
signature.asc
Description: This is a digitally signed message part