11.0-CURRENT -r300770 libc++ update vs. lang/powerpc64-xtoolchain-gcc: no go [self hosted powerpc64 context]

Mark Millard markmi at dsl-only.net
Thu May 26 23:53:15 UTC 2016


I do buildworld/buildkernel on a powerpc64 targeting itself via lang/powerpc64-xtoolchain-gcc (a.k.a. lang/powerpc64-gcc for the most part). [Getting that lang/powerpc64-gcc installed for self-hosted use does take some work-around activity.] I have buildworld build clang (but not use it). [I've been doing this with 11.0-CURRENT for a long time.]

Actually I use lang/gcc49 as the "system compiler" and lang/powerpc64-gcc as the self-hosting so-called "cross compiler". (I later list the src.conf content.) gcc4.2.1 is not installed.

Trying to go from:

> # uname -apKU
> FreeBSD FBSDG5C0 11.0-CURRENT FreeBSD 11.0-CURRENT #36 r300531M: Mon May 23 20:13:52 PDT 2016     root at FBSDG5C0:/usr/obj/xtoolchain/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODEBUG  powerpc powerpc64 1100111 1100111

(for which -r300531 built and installed fine this way) to -r300777 now fails with errors such as:

> --- lib/libc++__L ---
> In file included from /usr/src/lib/libc++/../../contrib/libc++/include/iterator:346:0,
>                  from /usr/src/lib/libc++/../../contrib/libc++/include/memory:606,
>                  from /usr/src/lib/libc++/../../contrib/libc++/include/algorithm:628,
>                  from /usr/src/lib/libc++/../../contrib/libc++/src/algorithm.cpp:10:
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:176:14: error: 'mbstate_t' was not declared in this scope
>  typedef fpos<mbstate_t>    streampos;
>               ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:176:23: error: template argument 1 is invalid
>  typedef fpos<mbstate_t>    streampos;
>                        ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:177:14: error: 'mbstate_t' was not declared in this scope
>  typedef fpos<mbstate_t>    wstreampos;
>               ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:177:23: error: template argument 1 is invalid
>  typedef fpos<mbstate_t>    wstreampos;
>                        ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:179:14: error: 'mbstate_t' was not declared in this scope
>  typedef fpos<mbstate_t>    u16streampos;
>               ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:179:23: error: template argument 1 is invalid
>  typedef fpos<mbstate_t>    u16streampos;
>                        ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:180:14: error: 'mbstate_t' was not declared in this scope
>  typedef fpos<mbstate_t>    u32streampos;
>               ^
> /usr/src/lib/libc++/../../contrib/libc++/include/iosfwd:180:23: error: template argument 1 is invalid
>  typedef fpos<mbstate_t>    u32streampos;
>                        ^

. . .

> --- lib/libc++__L ---
> In file included from /usr/src/lib/libc++/../../contrib/libc++/include/cmath:301:0,
>                  from /usr/src/lib/libc++/../../contrib/libc++/include/random:1638,
>                  from /usr/src/lib/libc++/../../contrib/libc++/src/algorithm.cpp:11:
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'float abs(float)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:646:53: error: 'fabsf' was not declared in this scope
>  abs(float __lcpp_x) _NOEXCEPT {return fabsf(__lcpp_x);}
>                                                      ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'double abs(double)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:650:53: error: 'fabs' was not declared in this scope
>  abs(double __lcpp_x) _NOEXCEPT {return fabs(__lcpp_x);}
>                                                      ^

. . .

> --- lib/libc++__L ---
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'long double abs(long double)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:654:59: error: 'fabsl' was not declared in this scope
>  abs(long double __lcpp_x) _NOEXCEPT {return fabsl(__lcpp_x);}
>                                                            ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'float acos(float)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:660:105: error: 'acosf' was not declared in this scope
>  inline _LIBCPP_INLINE_VISIBILITY float       acos(float __lcpp_x) _NOEXCEPT       {return acosf(__lcpp_x);}
>                                                                                                          ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'long double acos(long double)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:661:105: error: 'acosl' was not declared in this scope
>  inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);}
>                                                                                                          ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'typename std::__1::enable_if<std::__1::is_integral<_Tp>::value, double>::type acos(_A1)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:667:59: error: call of overloaded 'acos(double)' is ambiguous
>  acos(_A1 __lcpp_x) _NOEXCEPT {return acos((double)__lcpp_x);}
>                                                            ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:660:46: note: candidate: float acos(float)
>  inline _LIBCPP_INLINE_VISIBILITY float       acos(float __lcpp_x) _NOEXCEPT       {return acosf(__lcpp_x);}
>                                               ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:661:46: note: candidate: long double acos(long double)
>  inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);}
>                                               ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'float asin(float)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:672:105: error: 'asinf' was not declared in this scope
>  inline _LIBCPP_INLINE_VISIBILITY float       asin(float __lcpp_x) _NOEXCEPT       {return asinf(__lcpp_x);}
>                                                                                                          ^
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h: In function 'long double asin(long double)':
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:673:105: error: 'asinl' was not declared in this scope
>  inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __lcpp_x) _NOEXCEPT {return asinl(__lcpp_x);}
>                                                                                                          ^

. . .

> --- lib/libc++__L ---
> /usr/src/lib/libc++/../../contrib/libc++/include/math.h:673:46: note: candidate: long double asin(long double)
>  inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __lcpp_x) _NOEXCEPT {return asinl(__lcpp_x);}
>                                               ^

. . .

I'll not list it all: There is a lot.

Supporting details:

An example of the include paths in use (from -v) is:

> --- lib/libc++__L ---
> #include "..." search starts here:
> #include <...> search starts here:
>  /usr/src/lib/libc++/../../contrib/libc++/include
>  /usr/src/lib/libc++/../../contrib/libcxxrt
>  /usr/obj/xtoolchain/powerpc.powerpc64/usr/src/tmp/usr/include/c++/v1
>  /usr/obj/xtoolchain/powerpc.powerpc64/usr/src/tmp/usr/include
>  /usr/local/lib/gcc/powerpc64-portbld-freebsd11.0/5.3.0/include
>  /usr/local/lib/gcc/powerpc64-portbld-freebsd11.0/5.3.0/include-fixed
> End of search list.

# more ~/src.configs/make.conf 
CFLAGS.gcc+= -v

# more ~/src.configs/src.conf.powerpc64-xtoolchain.powerpc64-host 
TO_TYPE=powerpc64
TOOLS_TO_TYPE=${TO_TYPE}
FROM_TYPE=powerpc64
TOOLS_FROM_TYPE=${FROM_TYPE}
VERSION_CONTEXT=11.0
#
KERNCONF=GENERIC64vtsc-NODEBUG
TARGET=powerpc
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITHOUT_CROSS_COMPILER=
WITHOUT_SYSTEM_COMPILER=
#
WITH_LIBCPLUSPLUS=
WITH_BOOT=
#WITH_LIB32=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_LLDB=
#
# powerpc64 LIB32 builds via gcc 4.9 or later variants that I've tried
# but the LIB32 does not work [crtbeginS code problem(s)]
WITHOUT_LIB32=
WITHOUT_GCC=
WITHOUT_GNUCXX=
#
NO_WERROR=
MALLOC_PRODUCTION=
#CFLAGS+= -DELF_VERBOSE
#
WITH_DEBUG_FILES=
#
#
# For TO (so-called "cross") stages . . .
# So-called-cross via ${TO_TYPE}-xtoolchain-gcc/${TO_TYPE}-gcc. . .
# TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related bintutils. . .
#
CROSS_TOOLCHAIN=${TO_TYPE}-gcc
X_COMPILER_TYPE=gcc
CROSS_BINUTILS_PREFIX=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
.if ${.MAKE.LEVEL} == 0
XCC=/usr/local/bin/${TOOLS_TO_TYPE}-portbld-freebsd${VERSION_CONTEXT}-gcc
XCXX=/usr/local/bin/${TOOLS_TO_TYPE}-portbld-freebsd${VERSION_CONTEXT}-g++
XCPP=/usr/local/bin/${TOOLS_TO_TYPE}-portbld-freebsd${VERSION_CONTEXT}-cpp
.export XCC
.export XCXX
.export XCPP
XAS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
XAR=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
XLD=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
XNM=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm
XOBJCOPY=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy
XOBJDUMP=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump
XRANLIB=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib
XSIZE=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size
#NO-SUCH: XSTRINGS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings
XSTRINGS=/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings
.export XAS
.export XAR
.export XLD
.export XNM
.export XOBJCOPY
.export XOBJDUMP
.export XRANLIB
.export XSIZE
.export XSTRINGS
.endif
#
#
# For FROM (host) stages . . .
# From gccXY (such as gcc49 but not xtoolchain)
# TOOLS_FROM_TYPE's appropriate binutils. . .
#
.if ${.MAKE.LEVEL} == 0
CC=env C_INCLUDE_PATH=/usr/include /usr/local/bin/gcc49 -L/usr/lib
CXX=env C_INCLUDE_PATH=/usr/include CPLUS_INCLUDE_PATH=/usr/include/c++/v1 /usr/local/bin/g++49 -std=c++11 -nostdinc++ -L/usr/lib
CPP=/usr/local/bin/cpp49
.export CC
.export CXX
.export CPP
AS=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/as
AR=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/ar
LD=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/ld
NM=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/nm
OBJCOPY=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/objcopy
OBJDUMP=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/objdump
RANLIB=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/ranlib
SIZE=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/size
#NO-SUCH: STRINGS=/usr/local/${TOOLS_FROM_TYPE}-portbld-freebsd${VERSION_CONTEXT}/bin/strings
STRINGS=/usr/local/bin/strings
.export AS
.export AR
.export LD
.export NM
.export OBJCOPY
.export OBJDUMP
.export RANLIB
.export SIZE
.export STRINGS
.endif

# svnlite info /usr/src/
Path: /usr/src
Working Copy Root Path: /usr/src
URL: https://svn0.us-west.freebsd.org/base/head
Relative URL: ^/head
Repository Root: https://svn0.us-west.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 300777
Node Kind: directory
Schedule: normal
Last Changed Author: manu
Last Changed Rev: 300777
Last Changed Date: 2016-05-26 14:09:07 -0700 (Thu, 26 May 2016)


===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-toolchain mailing list