libcpp PATCH to avoid deprecated copy assignment

Gerald Pfeifer gerald@pfeifer.com
Tue May 22 01:42:00 GMT 2018


Hi Jason,

I'm afraid this change

  2018-05-17  Jason Merrill  <jason@redhat.com>

        * line-map.c (linemap_init): Use placement new.
        * system.h: #include <new>.

broke bootstrap on systems using libc++ instead of libstdc++ (such 
as newer versions of FreeBSD, reported on FreeBSD 11 but could also
be noticable on Darwin):

  gmake[3]: Entering directory '/scratch/tmp/gerald/OBJ-0522-0110/build-x86_64-unknown-freebsd11.2/libcpp'
  c++ -std=gnu++98  -I/scratch/tmp/gerald/gcc-HEAD/libcpp -I. 
  -I/scratch/tmp/gerald/gcc-HEAD/libcpp/../include
  -I/scratch/tmp/gerald/gcc-HEAD/libcpp/include  
  -g -O2 -W -Wall -Wno-narrowing -Wwrite-strings -Wmissing-format-attribute 
  -pedantic -Wno-long-long  -fno-exceptions -fno-rtti
  -I/scratch/tmp/gerald/gcc-HEAD/libcpp -I. 
  -I/scratch/tmp/gerald/gcc-HEAD/libcpp/../include 
  -I/scratch/tmp/gerald/gcc-HEAD/libcpp/include   -c -o charset.o 
  -MT charset.o -MMD -MP -MF .deps/charset.Tpo
  /scratch/tmp/gerald/gcc-HEAD/libcpp/charset.c
  In file included from /scratch/tmp/gerald/gcc-HEAD/libcpp/charset.c:21:/scratch/tmp/gerald/gcc-HEAD/libcpp/system.h:435:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]
  #define true 1
          ^
  /scratch/tmp/gerald/gcc-HEAD/libcpp/system.h:436:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]
  #define false 0
          ^
  In file included from /scratch/tmp/gerald/gcc-HEAD/libcpp/charset.c:21:
  In file included from /scratch/tmp/gerald/gcc-HEAD/libcpp/system.h:442:
  In file included from /usr/include/c++/v1/new:91:
  /usr/include/c++/v1/exception:180:5: error: no member named 'fancy_abort' in namespace 'std::__1'; did you mean simply 'fancy_abort'?
      _VSTD::abort();
      ^~~~~~~
  /usr/include/c++/v1/__config:447:15: note: expanded from macro '_VSTD'
  #define _VSTD std::_LIBCPP_NAMESPACE
                ^
  /scratch/tmp/gerald/gcc-HEAD/libcpp/system.h:399:13: note: 'fancy_abort' declared here
      extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
                  ^


The problem appears to be the added #include <new>; we had a similar
situation last October, cf. the thread starting at

  https://gcc.gnu.org/ml/gcc-patches/2017-10/threads.html#01478

Simply adding #include <memory> before #include <new> does not help
in this case, though; I just tried that.

Gerald



More information about the Gcc-patches mailing list