Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Nov 2016 12:54:01 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r427110 - head/lang/gcc/files
Message-ID:  <201611251254.uAPCs1uH021739@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim (src committer)
Date: Fri Nov 25 12:54:01 2016
New Revision: 427110
URL: https://svnweb.freebsd.org/changeset/ports/427110

Log:
  Fix build of lang/gcc with libc++ 3.9.0, similar to r421625:
  
  While testing the clang390-import branch, I ran into the following
  errors building lang/gcc49:
  
  In file included from /wrkdirs/usr/ports/lang/gcc49/work/gcc-4.9.4/gcc/c/c-objc-common.c:33:
  In file included from /usr/include/c++/v1/new:70:
  /usr/include/c++/v1/exception:267:5: error: no member named 'fancy_abort' in namespace 'std::__1'; did you mean simply 'fancy_abort'?
      _VSTD::abort();
      ^~~~~~~
  /usr/include/c++/v1/__config:451:15: note: expanded from macro '_VSTD'
  #define _VSTD std::_LIBCPP_NAMESPACE
                ^
  /wrkdirs/usr/ports/lang/gcc49/work/gcc-4.9.4/gcc/system.h:685:13: note: 'fancy_abort' declared here
  extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
              ^
  1 error generated.
  
  What is happening here, is that the source file includes gcc/system.h,
  which defines abort to fancy_abort, and then the source file includes
  <new>, which attempts to call _VSTD::abort() (the _VSTD is a libc++
  alias for std::).  The macro definition then causes the above breakage.
  
  Newer gcc ports, such as gcc5 and gcc6 don't show this issue, because
  upstream gcc first added an include of <algorithm> (which indirectly
  includes <new>) in r217348 [1], and later even add a direct include of
  <new> in r232736 [2].
  
  Fix it for this version, by adding the direct include of <new> to
  gcc/system.h.  This makes the 'second' includes of <new> in some .c
  files superfluous, but at least they won't result in errors.
  
  [1] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=217348
  [2] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=232736
  
  Approved by:	portmgr (antoine)
  PR:		212465

Added:
  head/lang/gcc/files/patch-gcc_system.h
     - copied unchanged from r427090, head/lang/gcc49/files/patch-gcc_system.h

Copied: head/lang/gcc/files/patch-gcc_system.h (from r427090, head/lang/gcc49/files/patch-gcc_system.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/gcc/files/patch-gcc_system.h	Fri Nov 25 12:54:01 2016	(r427110, copy of r427090, head/lang/gcc49/files/patch-gcc_system.h)
@@ -0,0 +1,10 @@
+--- gcc/system.h.orig	2014-01-02 22:23:26 UTC
++++ gcc/system.h
+@@ -203,6 +203,7 @@ extern int errno;
+ 
+ #ifdef __cplusplus
+ # include <cstring>
++# include <new>
+ #endif
+ 
+ /* Some of glibc's string inlines cause warnings.  Plus we'd rather



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611251254.uAPCs1uH021739>