Hi, Add entries for the default change in changes.html and porting_to.html. Passes the W3 validator.
Cheers, Wilco --- diff --git a/htdocs/gcc-10/changes.html b/htdocs/gcc-10/changes.html index e02966460450b7aad884b2d45190b9ecd8c7a5d8..304e1e8ccd38795104156e86b92062696fa5aa8b 100644 --- a/htdocs/gcc-10/changes.html +++ b/htdocs/gcc-10/changes.html @@ -102,6 +102,11 @@ a work-in-progress.</p> <li>In C2X mode, <code>-fno-fp-int-builtin-inexact</code> is enabled by default.</li> </ul></li> + + <li>GCC now defaults to <code>-fno-common</code>. In C, global variables with + multiple tentative definitions will result in linker errors. + Global variable accesses are also more efficient on various targets. + </li> </ul> <h3 id="cxx">C++</h3> diff --git a/htdocs/gcc-10/porting_to.html b/htdocs/gcc-10/porting_to.html index 3256e8a35d00ce1352c169a1c6df6d8f120889ee..e2c7e226a83b7720fe6ed40061cdddbc27659664 100644 --- a/htdocs/gcc-10/porting_to.html +++ b/htdocs/gcc-10/porting_to.html @@ -29,9 +29,25 @@ and provide solutions. Let us know if you have suggestions for improvements! <h2 id="cpp">Preprocessor issues</h2> --> -<!-- <h2 id="c">C language issues</h2> ---> + +<h3 id="complit">Default to <code>-fno-common</code></h3> + +<p> + A common mistake in C is omitting <code>extern</code> when declaring a global + variable in a header file. If the header is included by several files it + results in multiple definitions of the same variable. In previous GCC + versions this error is ignored. GCC 10 defaults to <code>-fno-common</code>, + which means a linker error will now be reported. + To fix this, use <code>extern</code> in header files when declaring global + variables, and ensure each global is defined in exactly one C file. + As a workaround, legacy C code can be compiled with <code>-fcommon</code>. +</p> + <pre><code> + int x; // tentative definition - avoid in header files + + extern int y; // correct declaration in a header file + </code></pre> <h2 id="fortran">Fortran language issues</h2>