Recent changes have been trying to make things like powerpc64-xtoolchain-gcc/powerpc64-gcc work better for buildworld/buildkernel. I happen to do this on a powerpc64 context so the "cross build" is actually self-hosted. No gcc 4.2.1 is present and clang 3.8.0 and before have code generation problems for powerpc64 and powerpc so I avoid it for system builds, including for stage 3. (Also, clang for powerpc64 does not support building libstand: no soft-float support.) As of my last test (-r297465) buildworld's stage 3 failed from implicit use of /usr/local/include materials unless I renamed various files there. In part this is because of my using gcc49 tools for CC and for CXX while using the powerpc64-gcc tools only for XCC and XCXX. Is there a standard or recommended way to configure things to avoid such issues? Should powerpc64-gcc use be forced for CC and CXX as well as XCC and XCXX? Should there be xtoolchain usage notes about avoiding /usr/local/include name conflicts and/or about how to assign CC/CXX/XCC/XCXX? As long as I use gcc49 tools for CC and CXX I still must do things like renaming files in /usr/local/include to avoid them interfering with system headers: > # find /usr/local/include/ -name 'renamed*' -print > /usr/local/include/renamed_dwarf.h > /usr/local/include/atf-c/renamed_defs.h > /usr/local/include/renamed_iconv.h > /usr/local/include/renamed_libdwarf.h > /usr/local/include/renamed_histedit.h I use the likes of: > # diff -rq /usr/include /usr/local/include | grep "^Files " to find what to rename for the duration of the system builds. An example of what happens without the renames is below but I first note the use of the name dwarf_errmsg in /usr/include vs. in /usr/local/include (shown after the .h file rename but the build was with the normal file name): > # find /usr/include/ -exec grep dwarf_errmsg {} \; -print > #define dwarf_errmsg(error) dwarf_errmsg_(&error) > const char *dwarf_errmsg_(Dwarf_Error *); > /usr/include/libdwarf.h > # find /usr/local/include/ -exec grep dwarf_errmsg {} \; -print > char* dwarf_errmsg(Dwarf_Error /*error*/); > /usr/local/include/renamed_libdwarf.h > # So dwarf_errmsg is from /usr/local/include and dwarf_errmsg_ is from /usr/include . The failure shows references to dwarf_errmsg instead of dwarf_errmsg_ --and dwarf_errmsg being undefined (dwarf_errno has similar issues): > -------------------------------------------------------------- > >>> stage 3: cross tools > -------------------------------------------------------------- > . . . > --- ctfconvert.full --- > /usr/local/bin/gcc49 -O2 -pipe -I/usr/src/cddl/usr.bin/ctfconvert/../../../sys/cddl/compat/opensolaris -I/usr/src/cddl/usr.bin/ctfconvert/../../../cddl/compat/opensolaris/include -I/usr/src/cddl/usr.b > in/ctfconvert/../../../cddl/contrib/opensolaris -I/usr/src/cddl/usr.bin/ctfconvert/../../../sys/cddl/contrib/opensolaris -I/usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/head -I/us > r/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/common -I/usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt -I/usr/src/cddl/usr.bin/ctfconvert/. > ./../../sys/cddl/contrib/opensolaris/uts/common -DNEED_SOLARIS_BOOLEAN -g -std=gnu99 -I/usr/obj/xtoolchain/powerpc.powerpc64/usr/src/tmp/legacy/usr/include -static -L/usr/obj/xtoolchain/powerpc.power > pc64/usr/src/tmp/legacy/usr/lib -o ctfconvert.full alist.o ctf.o ctfconvert.o dwarf.o fixup_tdescs.o hash.o iidesc.o input.o list.o memory.o merge.o output.o st_parse.o stabs.o stack.o strtab.o symbol > .o tdata.o traverse.o util.o -ldwarf -lelf -lelf -lz -lpthread -legacy > dwarf.o: In function `die_off': > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:270: undefined reference to `dwarf_errmsg' > dwarf.o: In function `die_sibling': > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:288: undefined reference to `dwarf_errmsg' > dwarf.o: In function `die_child': > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:305: undefined reference to `dwarf_errmsg' > dwarf.o: In function `die_tag': > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:319: undefined reference to `dwarf_errmsg' > dwarf.o: In function `die_unsigned': > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:370: undefined reference to `dwarf_errmsg' > dwarf.o:/usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:418: more undefined references to `dwarf_errmsg' follow > dwarf.o: In function `dw_read': > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1963: undefined reference to `dwarf_errno' > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1971: undefined reference to `dwarf_errmsg' > /usr/src/cddl/usr.bin/ctfconvert/../../../cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1977: undefined reference to `dwarf_errmsg' > collect2: error: ld returned 1 exit status > *** [ctfconvert.full] Error code 1 [Note: I have been able to remove some of my local workarounds as things have been cleaned up recently. This area is just not one of them. Getting powerpc64-gcc installed on a powerpc64 environment is one of those things needing work arounds. amd64 building powerpc64-gcc has no such issues (true cross compiler context: TARGET_ARCH=powerpc64 not matching the host OS).] Context details: > # 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: 297465 > Node Kind: directory > Schedule: normal > Last Changed Author: trasz > Last Changed Rev: 297465 > Last Changed Date: 2016-03-31 10:32:28 -0700 (Thu, 31 Mar 2016) > # freesd-version -ku; uname -aKU > su: freesd-version: not found > FreeBSD FBSDG5C0 11.0-CURRENT FreeBSD 11.0-CURRENT #24 r297048M: Sat Mar 19 06:12:57 PDT 2016 root_at_FBSDG5C0:/usr/obj/xtoolchain/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODEBUG powerpc 1100103 1100103 > Script started on Thu Mar 31 11:11:06 2016 > Command: env __MAKE_CONF=/root/src.configs/make.conf SRC_ENV_CONF=/root/src.configs/src.conf.powerpc64-xtoolchain.powerpc64-host MAKEOBJDIRPREFIX=/usr/obj/xtoolchain/powerpc.powerpc64 make -j 5 buildworld buildkernel The make.conf is empty. The src.conf is: > 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= > # > WITH_FAST_DEPEND= > WITH_LIBCPLUSPLUS= > WITH_BOOT= > WITH_CLANG= > WITH_CLANG_IS_CC= > WITH_CLANG_FULL= > WITH_LLDB= > # > # LIB32 builds but does not work via gcc variants last I tried (crtbeginS code problem) > WITHOUT_LIB32= > WITHOUT_GCC= > WITHOUT_GNUCXX= > # > NO_WERROR= > MALLOC_PRODUCTION= > # > WITH_DEBUG_FILES= > # > # 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/ > #CFLAGS+=-v > .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 > # > # > # From gcc49 > # > .if ${.MAKE.LEVEL} == 0 > CC=/usr/local/bin/gcc49 > CXX=/usr/local/bin/g++49 > CPP=/usr/local/bin/cpp49 > .export CC > .export CXX > .export CPP > .endif > # > # > # TOOLS_FROM_TYPE's appropriate binutils... > # > .if ${.MAKE.LEVEL} == 0 > 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 === Mark Millard markmi at dsl-only.netReceived on Thu Mar 31 2016 - 19:30:12 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:03 UTC