C++ ABI Summary
HTML C++ C
Switch branches/tags
Nothing to show
Clone or download
rjmccall Merge pull request #50 from zygoloid/no-unique-address
Add layout rule for [[no_unique_address]] (C++20 P0840R2)
Latest commit 8db4972 Jun 21, 2018
Permalink
Failed to load latest commit information.
abi Most recent cxx-abi files. Aug 2, 2012
HP-exception-990818.pdf Most recent cxx-abi files. Aug 2, 2012
Intel-exception-990818.ppt Most recent cxx-abi files. Aug 2, 2012
MAINTAINERS Updated URLs in the README and MAINTAINERS files to reference the Git… Mar 14, 2017
MIPSCompactEH-2013 Rename old version of spec to MIPSCompactEH-2013. Dec 13, 2015
MIPSCompactEH.pdf Rename old version of spec to MIPSCompactEH-2013. Dec 13, 2015
README.md Improve the README with an extended discussion of the contribution pr… Mar 14, 2017
Sun-RTTI-990812.html Most recent cxx-abi files. Aug 2, 2012
abi-eh.html Fix "Itanium Software Conventions and Runtime Architecture Guide" url Jan 15, 2018
abi-examples.html Most recent cxx-abi files. Aug 2, 2012
abi-layout.html Corrected some references to the <template-param> grammar production … Apr 21, 2017
abi-mangling.html Update mangling prefix table. Aug 23, 2017
abi.html Fix placement of clause in merge. May 23, 2018
argument-destruction.pdf Most recent cxx-abi files. Aug 2, 2012
code.css Editorial: number things, mess around with the stylesheet. Aug 12, 2017
cxx-closed.html Most recent cxx-abi files. Aug 2, 2012
cxx-open.html Most recent cxx-abi files. Aug 2, 2012
cxx-vtable-ex.html Add missing field to data layout example and correct the size to incl… Oct 2, 2017
exceptions.pdf Most recent cxx-abi files. Aug 2, 2012
fingerprint.c Most recent cxx-abi files. Aug 2, 2012
fingerprint.h Most recent cxx-abi files. Aug 2, 2012
gcc-cxxabi.h Most recent cxx-abi files. Aug 2, 2012
gcc-tinfo.cc
gcc-tinfo.h Most recent cxx-abi files. Aug 2, 2012
gcc-tinfo2.cc Most recent cxx-abi files. Aug 2, 2012
gcc-typeinfo Most recent cxx-abi files. Aug 2, 2012
gcc-vec.cc
index.html Revise index.html. Mar 14, 2017
issues-C++-layout-ex.txt Most recent cxx-abi files. Aug 2, 2012
issues-C++-layout.html Most recent cxx-abi files. Aug 2, 2012
issues-C++.html Most recent cxx-abi files. Aug 2, 2012
prop-F3-interface.html Most recent cxx-abi files. Aug 2, 2012
small-table.css Most recent cxx-abi files. Aug 2, 2012
warning.gif Most recent cxx-abi files. Aug 2, 2012

README.md

The Itanium C++ ABI

This is the central repository for discussion and development of the Itanium C++ ABI specfication.

Change process

C++ is a compiled language, and binary compatibility between different compilations is a core goal of the Itanium C++ ABI. Many details of the ABI cannot be changed without breaking compatibility in some way, and we cannot accept proposals to make such changes. If you are hoping to, say, change the default dispatch algorithm for virtual functions on Linux, you're not going to make much headway here. That said, there are several major categories of proposal which we can accept:

  • Proposals that are clearly identified as being for "future ABIs". Not all projects demand the same level of rigor in binary compatibility, and sometimes there are clear opportunities for "breaks", such as when an operating system is ported to a new architecture. We are collecting recommendations for changes to make in such a future ABI.

  • Proposals to specify the implementation of new language features. New language features do not generally affect backward compatibility because they are usually not used in older code.

    (There are exceptions. Sometimes new language rules change the interpretation of old code, and new language features can be adopted in header declarations for old code. It is part of an ABI maintainer's job to evaluate the impact of such changes and provide guidance to the language committee.)

  • Proposals to fix a bug in the ABI. It sometimes happens that the ABI overlooks some possibility in a way that causes code to be miscompiled. (Most commonly, two declarations that the language considers different are mangled the same way because of missing information or ambiguities in the mangling grammar.) Proposals to fix such problems are generally welcome, although they must be designed carefully to minimize binary incompatibilities.

  • Editorial and organizational improvements. The ABI specification should, ideally, be a clear guide to implementers and a helpful reference for sophisticated users. Changes to clarify wordings, improve document structure, and so on are always welcome.

Non-editorial changes should be proposed by creating a new issue via the standard GitHub interface. The issue description should explain the problem and (if applicable) the proposed solution. The solution can be discussed in the comments. When, eventually, a pull request is submitted for the issue, it will be accepted after consensus has been reached and several weeks have passed to give all contributors an opportunity to comment. (Changes which have already been discussed on cxx-abi-dev and simply haven't been merged into the repository do not need to undergo this additional waiting period.)

Editorial changes should just be submitted as pull requests.

Additional documents hosted here