OLD | NEW |
1 {{+bindTo:partials.standard_nacl_article}} | 1 {{+bindTo:partials.standard_nacl_article}} |
2 | 2 |
3 <section id="pnacl-c-c-language-support"> | 3 <section id="pnacl-c-c-language-support"> |
4 <h1 id="pnacl-c-c-language-support">PNaCl C/C++ Language Support</h1> | 4 <h1 id="pnacl-c-c-language-support">PNaCl C/C++ Language Support</h1> |
5 <div class="contents local" id="contents" style="display: none"> | 5 <div class="contents local" id="contents" style="display: none"> |
6 <ul class="small-gap"> | 6 <ul class="small-gap"> |
7 <li><p class="first"><a class="reference internal" href="#source-language-suppor
t" id="id3">Source language support</a></p> | 7 <li><p class="first"><a class="reference internal" href="#source-language-suppor
t" id="id3">Source language support</a></p> |
8 <ul class="small-gap"> | 8 <ul class="small-gap"> |
9 <li><a class="reference internal" href="#versions" id="id4">Versions</a></li> | 9 <li><a class="reference internal" href="#versions" id="id4">Versions</a></li> |
10 <li><a class="reference internal" href="#preprocessor-definitions" id="id5">Prep
rocessor definitions</a></li> | 10 <li><a class="reference internal" href="#preprocessor-definitions" id="id5">Prep
rocessor definitions</a></li> |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 <span id="language-support-threading"></span><h2 id="threading"><span id="langua
ge-support-threading"></span>Threading</h2> | 157 <span id="language-support-threading"></span><h2 id="threading"><span id="langua
ge-support-threading"></span>Threading</h2> |
158 <p>Threading is explicitly supported through C11/C++11’s threading | 158 <p>Threading is explicitly supported through C11/C++11’s threading |
159 libraries as well as POSIX threads.</p> | 159 libraries as well as POSIX threads.</p> |
160 <p>Communication between threads should use atomic primitives as described | 160 <p>Communication between threads should use atomic primitives as described |
161 in <a class="reference internal" href="#id1">Memory Model and Atomics</a>.</p> | 161 in <a class="reference internal" href="#id1">Memory Model and Atomics</a>.</p> |
162 </section><section id="setjmp-and-longjmp"> | 162 </section><section id="setjmp-and-longjmp"> |
163 <h2 id="setjmp-and-longjmp"><code>setjmp</code> and <code>longjmp</code></h2> | 163 <h2 id="setjmp-and-longjmp"><code>setjmp</code> and <code>longjmp</code></h2> |
164 <p>PNaCl and NaCl support <code>setjmp</code> and <code>longjmp</code> without a
ny | 164 <p>PNaCl and NaCl support <code>setjmp</code> and <code>longjmp</code> without a
ny |
165 restrictions beyond C’s.</p> | 165 restrictions beyond C’s.</p> |
166 </section><section id="c-exception-handling"> | 166 </section><section id="c-exception-handling"> |
167 <h2 id="c-exception-handling">C++ Exception Handling</h2> | 167 <span id="exception-handling"></span><h2 id="c-exception-handling"><span id="exc
eption-handling"></span>C++ Exception Handling</h2> |
168 <p>PNaCl currently supports C++ exception handling through <code>setjmp()</code>
and | 168 <p>PNaCl currently supports C++ exception handling through <code>setjmp()</code>
and |
169 <code>longjmp()</code>, which can be enabled with the <code>--pnacl-exceptions=s
jlj</code> | 169 <code>longjmp()</code>, which can be enabled with the <code>--pnacl-exceptions=s
jlj</code> |
170 linker flag. Exceptions are disabled by default so that faster and | 170 linker flag. Exceptions are disabled by default so that faster and |
171 smaller code is generated, and <code>throw</code> statements are replaced with | 171 smaller code is generated, and <code>throw</code> statements are replaced with |
172 calls to <code>abort()</code>. The usual <code>-fno-exceptions</code> flag is al
so | 172 calls to <code>abort()</code>. The usual <code>-fno-exceptions</code> flag is al
so |
173 supported. PNaCl will support full zero-cost exception handling in the | 173 supported. PNaCl will support full zero-cost exception handling in the |
174 future.</p> | 174 future.</p> |
175 <p>NaCl supports full zero-cost C++ exception handling.</p> | 175 <p>NaCl supports full zero-cost C++ exception handling.</p> |
176 </section><section id="inline-assembly"> | 176 </section><section id="inline-assembly"> |
177 <h2 id="inline-assembly">Inline Assembly</h2> | 177 <h2 id="inline-assembly">Inline Assembly</h2> |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 <p>Neither PNaCl nor NaCl currently support asynchronous interruption | 434 <p>Neither PNaCl nor NaCl currently support asynchronous interruption |
435 or suspension of threads.</p> | 435 or suspension of threads.</p> |
436 </li> | 436 </li> |
437 </ul> | 437 </ul> |
438 <p>If PNaCl were to support either of these, the interaction of | 438 <p>If PNaCl were to support either of these, the interaction of |
439 <code>volatile</code> and atomics with same-thread signal handling would need | 439 <code>volatile</code> and atomics with same-thread signal handling would need |
440 to be carefully detailed.</p> | 440 to be carefully detailed.</p> |
441 </section></section></section> | 441 </section></section></section> |
442 | 442 |
443 {{/partials.standard_nacl_article}} | 443 {{/partials.standard_nacl_article}} |
OLD | NEW |