[Bug 212465] lang/gcc49: Fix build with libc++ 3.9.0

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Sep 7 21:29:45 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212465

            Bug ID: 212465
           Summary: lang/gcc49: Fix build with libc++ 3.9.0
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: gerald at FreeBSD.org
          Reporter: dim at FreeBSD.org
          Assignee: gerald at FreeBSD.org
             Flags: maintainer-feedback?(gerald at FreeBSD.org)

Created attachment 174492
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=174492&action=edit
Include <new> in gcc/system.h

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].

I propose to 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 it's less churn.

[1] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=217348
[2] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=232736

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list