On 11/29/19, Wilco Dijkstra <wilco.dijks...@arm.com> wrote: > Hi Martin, > >> I've noticed quite significant package failures caused by the revision. > > How significant? Is it mostly the common mistake of forgetting extern? > >> Would you please consider documenting this change in porting_to.html >> (and in changes.html) for GCC 10 release? > > Sure, I already had a patch for changes.html - I've added an initial > porting_to as well:
Thanks for the initial porting_to page; there was a Fortran change on changes.html that I was hoping could have an entry on the porting_to page as well: Mismatches between actual and dummy argument lists in a single file are now rejected with an error. Use the new option -fallow-argument-mismatch to turn these errors into warnings; this option is implied with -std=legacy. -Wargument-mismatch has been removed. Fortran people, are there any changes needed to make that part more suitable for the porting_to page? > > [wwwdocs] Document -fcommon default change > > Add an entry for the default change. Passes the W3 validator. > > -- > diff --git a/htdocs/gcc-10/changes.html b/htdocs/gcc-10/changes.html > index > f0f0d312171a54afede176f06ce76f9c8abaebc4..980e4e591781d04aa888ba5988981006bd30dd1f > 100644 > --- a/htdocs/gcc-10/changes.html > +++ b/htdocs/gcc-10/changes.html > @@ -47,6 +47,13 @@ a work-in-progress.</p> > > <!-- .................................................................. > --> > <h2 id="general">General Improvements</h2> > +<p>The following GCC command line options have been introduced or > improved.</p> > +<ul> > + <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> > > <p>The following built-in functions have been introduced.</p> > <ul> > diff --git a/htdocs/gcc-10/porting_to.html b/htdocs/gcc-10/porting_to.html > new file mode 100644 > index > 0000000000000000000000000000000000000000..2e652f6aa4bd3259a316af0c72ab7eb96bab53b7 > --- /dev/null > +++ b/htdocs/gcc-10/porting_to.html > @@ -0,0 +1,65 @@ > +<!DOCTYPE html> > +<html lang="en"> > + > +<head> > +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> > +<title>Porting to GCC 10</title> > +<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" > /> > +</head> > + > +<body> > +<h1>Porting to GCC 10</h1> > + > +<p> > +The GCC 10 release series differs from previous GCC releases in > +<a href="changes.html">a number of ways</a>. Some of these are a result > +of bug fixing, and some old behaviors have been intentionally changed > +to support new standards, or relaxed in standards-conforming ways to > +facilitate compilation or run-time performance. > +</p> > + > +<p> > +Some of these changes are user visible and can cause grief when > +porting to GCC 10. This document is an effort to identify common issues > +and provide solutions. Let us know if you have suggestions for > improvements! > +</p> > + > + > +<!-- > +<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="cxx">C++ language issues</h2> > +--> > + > +<!-- > +<h2 id="fortran">Fortran language issues</h2> > +--> > + > +<!-- > +<h2 id="links">Links</h2> > +--> > + > +</body> > +</html> > >