OLD | NEW |
1 ============================ | 1 ============================ |
2 PNaCl C/C++ Language Support | 2 PNaCl C/C++ Language Support |
3 ============================ | 3 ============================ |
4 | 4 |
5 .. contents:: | 5 .. contents:: |
6 :local: | 6 :local: |
7 :backlinks: none | 7 :backlinks: none |
8 :depth: 3 | 8 :depth: 3 |
9 | 9 |
10 Source language support | 10 Source language support |
11 ======================= | 11 ======================= |
12 | 12 |
13 The currently supported languages are C and C++. The PNaCl toolchain is | 13 The currently supported languages are C and C++. The PNaCl toolchain is |
14 based on Clang 3.3, which fully supports C++11 and most of C11. A | 14 based on recent Clang, which fully supports C++11 and most of C11. A |
15 detailed status of the language support is available `here | 15 detailed status of the language support is available `here |
16 <http://clang.llvm.org/cxx_status.html>`_. | 16 <http://clang.llvm.org/cxx_status.html>`_. |
17 | 17 |
18 For information on using languages other than C/C++, see the :ref:`FAQ | 18 For information on using languages other than C/C++, see the :ref:`FAQ |
19 section on other languages <other_languages>`. | 19 section on other languages <other_languages>`. |
20 | 20 |
21 As for the standard libraries, the PNaCl toolchain is currently based on | 21 As for the standard libraries, the PNaCl toolchain is currently based on |
22 ``libc++``, and the ``newlib`` standard C library (version is available | 22 ``libc++``, and the ``newlib`` standard C library. ``libstdc++`` is also |
23 through the macro ``NEWLIB_VERSION``). ``libstdc++`` is also supported | 23 supported but its use is discouraged; see :ref:`building_cpp_libraries` |
24 but its use is discouraged; see :ref:`building_cpp_libraries` for more | 24 for more details. |
25 details. | 25 |
| 26 Versions |
| 27 -------- |
| 28 |
| 29 Version information can be obtained: |
| 30 |
| 31 * Clang/LLVM: run ``pnacl-clang -v``. |
| 32 * ``newlib``: use the ``_NEWLIB_VERSION`` macro. |
| 33 * ``libc++``: use the ``_LIBCPP_VERSION`` macro. |
| 34 * ``libstdc++``: use the ``_GLIBCXX_VERSION`` macro. |
26 | 35 |
27 Preprocessor definitions | 36 Preprocessor definitions |
28 ------------------------ | 37 ------------------------ |
29 | 38 |
30 When compiling C/C++ code, the PNaCl toolchain defines the ``__pnacl__`` | 39 When compiling C/C++ code, the PNaCl toolchain defines the ``__pnacl__`` |
31 macro. In addition, ``__native_client__`` is defined for compatibility | 40 macro. In addition, ``__native_client__`` is defined for compatibility |
32 with other NaCl toolchains. | 41 with other NaCl toolchains. |
33 | 42 |
34 .. _memory_model_and_atomics: | 43 .. _memory_model_and_atomics: |
35 | 44 |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 A similar feature is **thread suspension**: The ability to | 288 A similar feature is **thread suspension**: The ability to |
280 asynchronously suspend and resume a thread and inspect or modify its | 289 asynchronously suspend and resume a thread and inspect or modify its |
281 execution state (such as register state). | 290 execution state (such as register state). |
282 | 291 |
283 Neither PNaCl nor NaCl currently support asynchronous interruption | 292 Neither PNaCl nor NaCl currently support asynchronous interruption |
284 or suspension of threads. | 293 or suspension of threads. |
285 | 294 |
286 If PNaCl were to support either of these, the interaction of | 295 If PNaCl were to support either of these, the interaction of |
287 ``volatile`` and atomics with same-thread signal handling would need | 296 ``volatile`` and atomics with same-thread signal handling would need |
288 to be carefully detailed. | 297 to be carefully detailed. |
OLD | NEW |