summaryrefslogtreecommitdiffstats
path: root/libcxx/docs/DesignDocs
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2015-10-14 00:22:05 +0000
committerEric Fiselier <eric@efcs.ca>2015-10-14 00:22:05 +0000
commit29ada6d178890d843133fd67300b96427951086a (patch)
tree622a034b460d3d84e596ec995acf1e2e5d61d378 /libcxx/docs/DesignDocs
parentebd3f44f9349d3a8df956ed3e4d8229ac9c9248f (diff)
downloadbcm5719-llvm-29ada6d178890d843133fd67300b96427951086a.tar.gz
bcm5719-llvm-29ada6d178890d843133fd67300b96427951086a.zip
Use __config_site when building libc++. Also cleanup ABI versioning doc
llvm-svn: 250261
Diffstat (limited to 'libcxx/docs/DesignDocs')
-rw-r--r--libcxx/docs/DesignDocs/ABIVersioning.rst17
1 files changed, 17 insertions, 0 deletions
diff --git a/libcxx/docs/DesignDocs/ABIVersioning.rst b/libcxx/docs/DesignDocs/ABIVersioning.rst
new file mode 100644
index 00000000000..5960dd18610
--- /dev/null
+++ b/libcxx/docs/DesignDocs/ABIVersioning.rst
@@ -0,0 +1,17 @@
+
+====================
+Libc++ ABI stability
+====================
+
+Libc++ aims to preserve stable ABI to avoid subtle bugs when code built to the old ABI
+is linked with the code build to the new ABI. At the same time, libc++ allows ABI-breaking
+improvements and bugfixes for the scenarios when ABI change is not a issue.
+
+To support both cases, libc++ allows specifying the ABI version at the
+build time. The version is defined with a cmake option
+LIBCXX_ABI_VERSION. Another option LIBCXX_ABI_UNSTABLE can be used to
+include all present ABI breaking features. These options translate
+into C++ macro definitions _LIBCPP_ABI_VERSION, _LIBCPP_ABI_UNSTABLE.
+
+Any ABI-changing feature is placed under it's own macro, _LIBCPP_ABI_XXX, which is enabled
+based on the value of _LIBCPP_ABI_VERSION. _LIBCPP_ABI_UNSTABLE, if set, enables all features at once.
OpenPOWER on IntegriCloud