This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Results from Intel4s C++ ABI Testsuite


Mark Mitchell <mark@codesourcery.com> writes:
>> It seems that for true C++ binary compatibility all implementers must
>> agree on the type of size_t.  Was this overlooked?
>
>Sort of.
>
>As Richard says, this is pretty much a property of the OS.  If "int" and
>"long" are the same, you can interchange the two for binary compatibility
>purposes, but you'll never make your header files work right.
>
>And, of course, since "size_t" is just a typedef we can't mangle it
>specially, even if we wanted to.
>
>It is true that if my OS uses "long" and yours uses "int" -- but they
>are the same in all other ways -- then I can't mix and match C++ shared
>objects from our two systems.  I can still mix and match C++ shared
>objects from any one of those systems, even if I used different
>compilers to build them.

It seems to me (as a casual reader who does not use C++ much),
that the fact that "type safe linkage" is encoding the "name" of the 
type rather than the "type" is sub-optimal. If what was encoded
was "unsigned integer of 32-bits" then the two size_t-s would match.

The "loss" would be that programs that would work on that platform
- even though coded incorrectly - would link.
But catching long vs int confusion is better done before link time.

-- 
Nick Ing-Simmons
http://www.ni-s.u-net.com/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]