Patchwork [wwwdocs] gcc-4.6/porting_to.html

login
register
mail settings
Submitter Gerald Pfeifer
Date Oct. 11, 2011, 4:49 a.m.
Message ID <alpine.LNX.2.00.1110102230240.4588@gerinyyl.fvgr>
Download mbox | patch
Permalink /patch/118861/
State New
Headers show

Comments

Gerald Pfeifer - Oct. 11, 2011, 4:49 a.m.
Hi Benjamin,

On Wed, 16 Mar 2011, Benjamin Kosnik wrote:
> Needs some more work, here's a rough draft.

I realized this one hasn't made it in, but is really nice.  I made a 
number of minor edits (typos, markup, simplifying headings,... among 
others).  What do you think -- should we include this?

Many users still won't have GCC 4.6 deployed yet, so I think it's
still worth it.

What do you think?

Gerald
Benjamin Kosnik - Oct. 11, 2011, 10:12 p.m.
> I realized this one hasn't made it in, but is really nice.  I made a 
> number of minor edits (typos, markup, simplifying headings,... among 
> others).  What do you think -- should we include this?
> 
> Many users still won't have GCC 4.6 deployed yet, so I think it's
> still worth it.
> 
> What do you think?

Ouch. I see this is not in, and I though I checked in the draft months
ago. 

Please check this in immediately!!!

-benjamin

Patch

Index: porting_to.html
===================================================================
RCS file: porting_to.html
diff -N porting_to.html
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ porting_to.html	11 Oct 2011 04:47:14 -0000
@@ -0,0 +1,142 @@ 
+<html>
+
+<head>
+<title>Porting to GCC 4.6</title>
+</head>
+
+<body>
+<h1>Porting to GCC 4.6</h1>
+
+<p>
+The GCC 4.6 release series differs from previous GCC releases in more
+than the usual list of
+<a href="http://gcc.gnu.org/gcc-4.6/changes.html">changes</a>. Some of
+these are a result of bug fixing, and some old behaviors have been
+intentionally changed in order to support new standards, or relaxed
+instandards-conforming ways to facilitate compilation or runtime
+performance.  Some of these changes are not visible to the naked eye
+and will not cause problems when updating from older versions.
+</p>
+
+<p>
+However, some of these changes are visible, and can cause grief to
+users porting to GCC 4.6. This document is an effort to identify major
+issues and provide clear solutions in a quick and easily searched
+manner. Additions and suggestions for improvement are welcome.
+</p>
+
+<h2>C language issues</h2>
+
+<h3>New warnings for unused variables and parameters</h3>
+
+<p>
+The behavior of <code>-Wall</code> has changed and now includes the
+new warning flags <code>-Wunused-but-set-variable</code> and
+(with <code>-Wall
+-Wextra</code>) <code>-Wunused-but-set-parameter</code>. This may
+result in new warnings in code that compiled cleanly with previous
+versions of GCC.
+</p>
+
+<p>
+For example,
+<pre>
+  void fn (void)
+  {
+    int foo;
+    foo = bar ();  /* foo is never used.  */
+  }
+</pre>
+Gives the following diagnostic:
+<pre>
+warning: variable "foo" set but not used [-Wunused-but-set-variable]
+</pre>
+</p>
+low</code> flag
+with <code>-Werror</code> and optimization flags above <code>-O2</code>
+may result in compile errors when using glibc optimizations
+for <code>strcmp</code>.
+</p>
+
+<p>
+For example,
+<pre>
+#include <string.h>
+void do_rm_rf (const char *p) { if (strcmp (p, "/") == 0) return; }
+</pre>
+Results in the following diagnostic:
+<pre>
+error: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C1 +- C2 [-Werror=strict-overflow]
+</pre>
+</p>
+
+<p>
+To work around this, use <code>-D__NO_STRING_INLINES</code>.
+</p>
+
+<h2>C++ language issues</h2>
+
+<h3>Header dependency changes</h3>
+
+<p>
+Many of the standard C++ library include files have been edited to no
+longer include &lt;cstddef&gt; to get <code>namespace std</code>
+-scoped versions of <code>size_t</code> and <code>ptrdiff_t</code>. 
+</p>
+
+<p>
+As such, C++ programs that used the macros <code>NULL</code>
+or <code>offsetof</code> without including &lt;cstddef&gt; will no
+longer compile. The diagnostic produced is similar to:
+</p>
+
+<pre>
+error: 'ptrdiff_t' does not name a type
+</pre>
+
+<pre>
+error: 'size_t' has not been declared
+</pre>
+
+<pre>
+error: 'NULL' was not declared in this scope
+</pre>
+
+<pre>
+error: there are no arguments to 'offsetof' that depend on a template
+parameter, so a declaration of 'offsetof' must be available
+</pre>
+
+<p>
+Fixing this issue is easy: just include &lt;cstddef&gt;.
+</p>
+
+<!-- 
+<h3>Java issues</h3>
+-->
+
+<h3>Links</h3>
+
+<p>
+Jakub Jelinek,
+ <a href="http://lists.fedoraproject.org/pipermail/devel/2011-February/148523.html">GCC
+4.6 related common package rebuild failures (was Re: mass rebuild status)</a>
+</p>
+
+<p>
+Matthias Klose,
+<a href="http://lists.debian.org/debian-devel-announce/2011/02/msg00012.html">prepare
+to fix build failures with new GCC versions</a>
+</p>
+
+<p>
+Jim Meyering,
+ <a href="http://lists.fedoraproject.org/pipermail/devel/2011-March/149355.html">gcc-4.6.0-0.12.fc15.x86_64 breaks strcmp?</a>
+</p>
+
+<!-- ==================================================================== -->
+
+</body>
+</html>
+  
+