[ -r321493 installworld's use of "head" during lib32 installation is still
true for amd64 -> powerpc64 cross builds that uses devel/powerpc64-binutils
for ld: that ld is also used . LOCAL_ITOOLS adding head is still a
workaround.]

On 2017-Jul-5, at 12:36 PM, Bryan Drewery <bdrewery at FreeBSD.org> wrote:

> On 6/29/17 6:21 PM, Mark Millard wrote:
>> [I found where the tools are listed that are copied,
>> the list that is missing head.]
>> 
>> On 2017-Jun-29, at 3:33 PM, Mark Millard <markmi at dsl-only.net> wrote:
>> 
>>> [This is a clang targetting powerpc64 context from my
>>> experimentation efforts, not the normal gcc 4.2.1 context
>>> for powerpc64.]
>>> 
>>> I break out the PATH into lines below to make it easier to scan.
>>> See the later "sh: head: not found" line and the even later ls
>>> of the directory with the x86-64 program directory in use: no
>>> "head" is present to find.
>>> 
>>> --- install32 ---
>>> cd /usr/src/lib; MACHINE=powerpc MACHINE_ARCH=powerpc 
>>> MAKEOBJDIRPREFIX=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/world32
>>> PATH=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/sbin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/bin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/bin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/sbin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/bin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/sbin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/bin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/bin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/sbin
>>> :/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/bin
>>> :/tmp/install.7ljKosWa
>>> SYSROOT=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
>>>  LIBDIR=/usr/lib32 SHLIBDIR=/usr/lib32 DTRACE="dtrace" make 
>>> LD="/usr/local/powerpc64-freebsd/bin/ld -m elf32ppc_fbsd" 
>>> OBJCOPY="/usr/local/powerpc64-freebsd/bin/objcopy" 
>>> NM="/usr/local/powerpc64-freebsd/bin/nm" -DCOMPAT_32BIT CC="cc -target 
>>> powerpc64-unknown-freebsd12.0 
>>> --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp
>>>  -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT -mcpu=powerpc -m32  
>>> -L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32
>>>   
>>> --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
>>>   -B/usr/local/powerpc64-freebsd/bin/ 
>>> -B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32"
>>>  CXX="c++  -target powerpc64-unknown-freebsd12.0 
>>> --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp
>>>  -B/usr/local/powerpc64-freebsd/bin/  -DCOMPAT_32BIT -mcpu=powerpc -m32 
  -L/
>>> usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32
>>>   
>>> --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
>>>   -B/usr/local/powerpc64-freebsd/bin/ 
>>> -B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32"
>>>  CPP="cpp -target powerpc64-unknown-freebsd12.0 
>>> --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp
>>>  -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT -mcpu=powerpc -m32  
>>> -L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32
>>>   
>>> --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
>>>   -B/usr/local/powerpc64-freebsd/bin/ 
>>> -B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32"
>>>  -DNO_CPU_CFLAGS MK_CTF=no -DNO_LINT MK_TESTS=no MK_MAN=no MK_HTML=no  
>>> MK_TOOLCHAIN=no   -DLIBRARIES_ONLY install
>>> sh: head: not found
>>> make[4]: "/usr/src/share/mk/bsd.linker.mk" line 47: Unable to determine 
>>> linker type from XLD=/usr/local/powerpc64-freebsd/bin/ld
>>> *** [install32] Error code 1
>>> 
>>> # ls -lT /tmp/install.7ljKosWa/
>>> total 6151
>>> -r-xr-xr-x    1 root  wheel    12592 Jun 29 14:02:46 2017 [
>>> -r-xr-xr-x    1 root  wheel   207320 Jun 29 14:02:46 2017 awk
>>> -r-xr-xr-x    1 root  wheel     8456 Jun 29 14:02:46 2017 cap_mkdb
>>> -r-xr-xr-x    1 root  wheel    13272 Jun 29 14:02:46 2017 cat
>>> . . .
>>> -r-xr-xr-x    1 root  wheel    57632 Jun 29 14:02:46 2017 find
>>> -r-xr-xr-x    1 root  wheel    99064 Jun 29 14:02:46 2017 grep
>>> -r-xr-xr-x    1 root  wheel    13360 Jun 29 14:02:46 2017 id
>>> . . .
>>> 
>>> So there is no "head" to find. Below uses "find" instead
>>> to confirm the x86-64 ELF status:
>>> 
>>> # file /tmp/install.7ljKosWa/find
>>> /tmp/install.7ljKosWa/find: ELF 64-bit LSB executable, x86-64, version 1 
>>> (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for 
>>> FreeBSD 12.0 (1200036), FreeBSD-style, stripped
>>> 
>>> 
>>> 
>>> From /usr/src/share/mk/bsd.linker.mk :
>>> 
>>> .if ${ld} == "LD" || (${ld} == "XLD" && ${XLD} != ${LD})
>>> .if !defined(${X_}LINKER_TYPE) || !defined(${X_}LINKER_VERSION)
>>> _ld_version!=   ${${ld}} --version 2>/dev/null | head -n 1 || echo none
>>> .if ${_ld_version} == "none"
>>> .error Unable to determine linker type from ${ld}=${${ld}}
>>> .endif
>>> 
>>> 
>>> Trying the failing line interactively (no PATH
>>> like above though):
>>> 
>>> # /usr/local/powerpc64-freebsd/bin/ld --version 2>/dev/null | head -n 1 || 
>>> echo none
>>> GNU ld (GNU Binutils) 2.28
>>> 
>>> So /tmp/install.7ljKosWa/ just needed a copy of head
>>> in addition to what it already had.
>> 
>> In /usr/src/Makefile.inc1 :
>> 
>> ITOOLS= [ awk cap_mkdb cat chflags chmod chown cmp cp \
>>        date echo egrep find grep id install ${_install-info} \
>>        ln make mkdir mtree mv pwd_mkdb \
>>        rm sed services_mkdb sh strip sysctl test true uname wc ${_zoneinfo} \
>>        ${LOCAL_ITOOLS}
>> 
>> does not list "head" as a tool.
>> 
>> But I can externally add it via LOCAL_ITOOLS use.
>> 
> 
> This change should not be needed.  We don't want to be running 'ld'
> during installworld.  The changes I made around this time should already
> cover the problem.  Is it still occurring on a more recent
> buildworld+installworld, without the ITOOLS change?

[Note: historically lld and the system ld do not work
overall for powerpc64 targeting. Thus the use of
devel/powerpc64-bintuils and its ld. ]

First the error text then the Build Context
follow.

See the text:

sh: head: not found
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 45: warning: 
"(/usr/local/powerpc64-freebsd/bin/ld --version || echo none) | head -n 1" 
returned non-zero status
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 56: warning: Unknown linker 
from XLD=/usr/local/powerpc64-freebsd/bin/ld: , defaulting to bfd

in the later example. But first a clue about how
many times the problem happens:

# grep "head: not found" 
/root/sys_typescripts/typescript_make_powerpc64vtsc_nodebug_clang_altbinutils-amd64-host-2017-07-26:01:58:10
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found

Those are for:

--- install32 ---
--- realinstall_subdir_libunbound ---
--- realinstall_subdir_libdialog ---
--- realinstall_subdir_libzpool ---
--- _libinstall ---
--- realinstall_subdir_libgssapi_krb5 ---
--- _installlinks ---

One of the examples:

--- realinstall_subdir_libgssapi_krb5 ---
install  -o root -g wheel -m 444    libgssapi_krb5.so.10.debug 
/usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils/usr/lib/debug/usr/lib32/
install -l rs  libgssapi_krb5.so.10 
/usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils/usr/lib32/libgssapi_krb5.so
cd /usr/src/libexec/rtld-elf;  PROG=ld-elf32.so.1 MACHINE=powerpc 
MACHINE_ARCH=powerpc 
MAKEOBJDIRPREFIX=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/world32
 
PATH=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/sr
 c/tmp/usr/bin:/tmp/install.n3WUdktD 
SYSROOT=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
 LIBDIR=/usr/lib32 SHLIBDIR=/usr/lib32 DTRACE="dtrace" make 
LD="/usr/local/powerpc64-freebsd/bin/ld -m elf32ppc_fbsd" 
OBJCOPY="/usr/local/powerpc64-freebsd/bin/objcopy" 
NM="/usr/local/powerpc64-freebsd/bin/nm" -DCOMPAT_32BIT CC="cc -target 
powerpc64-unknown-freebsd12.0 
--sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp
 -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT -mcpu=powerpc -m32  
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32
  
--sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
  -B/usr/local/powerpc64-freebsd/bin/ 
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32"
 CXX="c++  -target powerpc64-unknown-freebsd12.0 
--sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp
 -B/usr/local/powerpc64-freebsd/bin/  -
 DCOMPAT_32BIT -mcpu=powerpc -m32  
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32
  
--sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
  -B/usr/local/powerpc64-freebsd/bin/ 
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32"
 CPP="cpp -target powerpc64-unknown-freebsd12.0 
--sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp
 -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT -mcpu=powerpc -m32  
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32
  
--sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32
  -B/usr/local/powerpc64-freebsd/bin/ 
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/usr/lib32"
 -DNO_CPU_CFLAGS MK_CTF=no -DNO_LINT MK_TESTS=no MK_MAN=no MK_HTML=no  
MK_TOOLCHAIN=no   -DLIBRARIES_ONLY install
sh: head: not found
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 45: warning: 
"(/usr/local/powerpc64-freebsd/bin/ld --version || echo none) | head -n 1" 
returned non-zero status
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 56: warning: Unknown linker 
from XLD=/usr/local/powerpc64-freebsd/bin/ld: , defaulting to bfd




Build Context:

~/sys_build_scripts.amd64-host/make_powerpc64vtsc_nodebug_clang_altbinutils-amd64-host.sh
 -j8 installworld 
DESTDIR=/usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils

# more 
~/sys_build_scripts.amd64-host/make_powerpc64vtsc_nodebug_clang_altbinutils-amd64-host.sh
kldload -n filemon && \
script 
~/sys_typescripts/typescript_make_powerpc64vtsc_nodebug_clang_altbinutils-amd64-host-$(date
 +%Y-%m-%d:%H:%M:%S) \
env __MAKE_CONF="/root/src.configs/make.conf" SRCCONF="/dev/null" 
SRC_ENV_CONF="/root/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-host"
 \
WITH_META_MODE=yes \
MAKEOBJDIRPREFIX="/usr/obj/powerpc64vtsc_clang_altbinutils" \

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

# more 
/root/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-host
TO_TYPE=powerpc64
TOOLS_TO_TYPE=${TO_TYPE}
VERSION_CONTEXT=12.0
#
KERNCONF=GENERIC64vtsc-NODBG
TARGET=powerpc
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITH_CROSS_COMPILER=
WITHOUT_SYSTEM_COMPILER=
#
WITH_LIBCPLUSPLUS=
WITHOUT_BINUTILS_BOOTSTRAP=
WITH_ELFTOOLCHAIN_BOOTSTRAP=
WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITHOUT_LLD_BOOTSTRAP=
WITH_LLD=
WITHOUT_LLD_IS_LD=
WITH_LLDB=
#
WITH_BOOT=
WITH_LIB32=
#
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
MALLOC_PRODUCTION=
#
# Avoid converts between pointers to integer types with different sign 
[-Werror,-Wpointer-sign]
# and such from blocking the build.
WERROR=
#
WITH_REPRODUCIBLE_BUILD=
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 binutils. . .
#
CROSS_BINUTILS_PREFIX=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
.if ${.MAKE.LEVEL} == 0
#
# Note: The WITH_CROSS_COMPILER picks up the CROSS_BINUTILS_PREFIX
#       binding automatically.
#
XAS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
XAR=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
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 XNM
.export XOBJCOPY
.export XOBJDUMP
.export XRANLIB
.export XSIZE
.export XSTRINGS
XLD=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
.export XLD
.endif


Note: clang 5 still does not produce code that handles
thrown C++ exceptions for powerpc64: SIGSEGV results.
Still I can build a useful world and kernel for
powerpc64 based on how little throws C++ exceptions.
I experiment with such things.

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

_______________________________________________
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"

Reply via email to