Hacker News new | ask | show | jobs
by ArbitraryLimits 4724 days ago
It seems like C++'s lack of an ABI would bite you way before any issues with libc++. (Or is there one now? I'm getting old.)
2 comments

C++ has an ABI that almost all vendors actively work towards conformance to called the Itanium C++ ABI (yes, it applies to other architectures too):

  This document was developed jointly by an informal
  industry coalition consisting of (in alphabetical order)
  CodeSourcery, Compaq, EDG, HP, IBM, Intel, Red Hat, and
  SGI. Additional contributions were provided by a variety of
  individuals.
  ...
  In general, this document is written as a generic
  specification, to be usable by C++ implementations on a
  variety of architectures.
http://refspecs.linux-foundation.org/cxxabi-1.83.html
In practice all of the compilers have arrived at a common ABI for each platform.
Technically C doesn't have a standard ABI either. Compilers just tend to use similar symbol names.
True, what many perceive as the C ABI is actually the OS ABI.

As most OSs tend to be written mostly in C, it is natural that C ABI == OS ABI.

In the few cases where the OS was written in other languages, like the mainframe systems, the early 80's OS done in Pascal dialects (Mac OS), Modula-2 (Lillith), Assembly (MS-DOS/CP-M) and many others to list here, there was no C ABI to speak of.

That isn't true. IBM and Oracle's compiler do not share a compatible ABI with g++ or clang. Oracle is adopting the common ABI in Studio 13 and that's a pretty big deal.