Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Oct 2017 21:46:01 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   powerpc64 /usr/bin/ld crashes during buildworld: ppc64_elf_tls_optimize gets signal 11
Message-ID:  <DCD0206D-54B2-4782-9534-C08139A36D23@dsl-only.net>

next in thread | raw e-mail | index | archive | help
Because of the following I've had to use
a ports binutils (such as
devel/powerpc64-binutils ) instead of the
system binutils in order to have a clang-based
powerpc64 world do a gcc 4.2.1 based "cross
build" (buildworld buildkernel).


This was from a clang-based buildworld buildkernel
powerpc64 FreeBSD context. It was an attempt to do a
gcc 4.2.1 "cross-compiler" based buildworld
buildkernel. It did not get very far before
(using one of several ld core files as an
example):

# /usr/libexec/gdb ld /var/crash/ld.26814.core=20
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you =
are
welcome to change it and/or distribute copies of it under certain =
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for =
details.
This GDB was configured as "powerpc64-marcel-freebsd"...
Core was generated by `/usr/bin/ld --eh-frame-hdr -Bstatic -o gperf.full =
/usr/lib/crt1.o /usr/lib/crti.'.
Program terminated with signal 11, Segmentation fault.
#0  0x000000001002e148 in ppc64_elf_tls_optimize (obfd=3D<value =
optimized out>, info=3D<value optimized out>) at =
/usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf6=
4-ppc.c:7172
7172			      for (ent =3D =
htab->tls_get_addr->elf.plt.plist;
(gdb) bt
#0  0x000000001002e148 in ppc64_elf_tls_optimize (obfd=3D<value =
optimized out>, info=3D<value optimized out>) at =
/usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf6=
4-ppc.c:7172
#1  0x0000000010001034 in ppc_before_allocation () at =
eelf64ppc_fbsd.c:204
#2  0x0000000010009be4 in ldemul_before_allocation () at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldemul.c:=
78
#3  0x0000000010017b00 in lang_process () at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldlang.c:=
5785
#4  0x0000000010021ce0 in main (argc=3D0, argv=3D<value optimized out>) =
at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldmain.c:=
459
#5  0x00000000100004a8 in _start (argc=3D0, argv=3D0x50a24fc0, =
env=3D0x50f3feb8, obj=3D<value optimized out>, cleanup=3D<value =
optimized out>, ps_strings=3D<value optimized out>)
    at /usr/src/lib/csu/powerpc64/crt1.c:94
Current language:  auto; currently minimal

The source is:

                  if (expecting_tls_get_addr)
                    {
                      struct plt_entry *ent;
                      for (ent =3D htab->tls_get_addr->elf.plt.plist;
                           ent !=3D NULL;
                           ent =3D ent->next)
                        if (ent->addend =3D=3D 0)
                          {
                            if (ent->plt.refcount > 0)
                              {
                                ent->plt.refcount -=3D 1;
                                expecting_tls_get_addr =3D 0;
                              }
                            break;
                          }
                    }

(gdb) print htab->tls_get_addr
$3 =3D (struct ppc_link_hash_entry *) 0x0

0x1002e124 <ppc64_elf_tls_optimize+1068>:	beq-    0x1002e4ec =
<ppc64_elf_tls_optimize+2036>
0x1002e128 <ppc64_elf_tls_optimize+1072>:	li      r3,18
0x1002e12c <ppc64_elf_tls_optimize+1076>:	li      r14,2
0x1002e130 <ppc64_elf_tls_optimize+1080>:	li      r28,0
0x1002e134 <ppc64_elf_tls_optimize+1084>:	cmpwi   r5,0
0x1002e138 <ppc64_elf_tls_optimize+1088>:	crnot   4*cr5+lt,eq
0x1002e13c <ppc64_elf_tls_optimize+1092>:	beq-    cr2,0x1002e198 =
<ppc64_elf_tls_optimize+1184>
0x1002e140 <ppc64_elf_tls_optimize+1096>:	bge-    cr5,0x1002e330 =
<ppc64_elf_tls_optimize+1592>
0x1002e144 <ppc64_elf_tls_optimize+1100>:	ld      r4,544(r22)
0x1002e148 <ppc64_elf_tls_optimize+1104>:	ld      r4,80(r4)
0x1002e14c <ppc64_elf_tls_optimize+1108>:	cmpldi  r4,0
0x1002e150 <ppc64_elf_tls_optimize+1112>:	beq-    0x1002e16c =
<ppc64_elf_tls_optimize+1140>

(gdb) info reg r5
r5             0x1	1

(I expect that means expecting_tls_get_addr=3D=3D1 .)

(gdb) info reg r4
r4             0x0	0


--- _bootstrap-tools-gnu/usr.bin/gperf ---
Building =
/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr/src/gnu/us=
r.bin/gperf/version.o
Building =
/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr/src/gnu/us=
r.bin/gperf/getline.o
Building =
/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr/src/gnu/us=
r.bin/gperf/hash.o
Building =
/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr/src/gnu/us=
r.bin/gperf/gperf.full
. . .
--- _bootstrap-tools-gnu/usr.bin/gperf ---
--- gperf.full ---
c++: error: unable to execute command: Segmentation fault (core dumped)
c++: error: linker command failed due to signal (use -v to see =
invocation)
*** [gperf.full] Error code 254

make[3]: stopped in /usr/src/gnu/usr.bin/gperf
.ERROR_TARGET=3D'gperf.full'
=
.ERROR_META_FILE=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/sr=
c/tmp/usr/src/gnu/usr.bin/gperf/gperf.full.meta'
.MAKE.LEVEL=3D'3'
MAKEFILE=3D''
.MAKE.MODE=3D'meta missing-filemon=3Dyes missing-meta=3Dyes silent=3Dyes =
verbose'
_ERROR_CMD=3D'c++ -O2 -pipe -g -Qunused-arguments =
-I/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy/usr/i=
nclude -I/usr/src/contrib/gperf/lib -I/usr/src/gnu/usr.bin/gperf =
-Wno-c++11-extensions  -static =
-L/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy/usr/l=
ib -o gperf.full  bool-array.o hash-table.o input.o keyword-list.o =
keyword.o main.o options.o output.o positions.o search.o version.o =
getline.o hash.o -legacy;'
.CURDIR=3D'/usr/src/gnu/usr.bin/gperf'
.MAKE=3D'make'
=
.OBJDIR=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr=
/src/gnu/usr.bin/gperf'
.TARGETS=3D'all'
DESTDIR=3D''
LD_LIBRARY_PATH=3D''
MACHINE=3D'powerpc'
MACHINE_ARCH=3D'powerpc64'
=
MAKEOBJDIRPREFIX=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/sr=
c/tmp'
MAKESYSPATH=3D'/usr/src/share/mk'
MAKE_VERSION=3D'20170720'
=
PATH=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy=
/usr/sbin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/lega=
cy/usr/bin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/leg=
acy/bin:/sbin:/bin:/usr/sbin:/usr/bin'
SRCTOP=3D'/usr/src'
=
OBJTOP=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr/=
src'
.MAKE.MAKEFILES=3D'/usr/src/share/mk/sys.mk =
/usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk =
/root/src.configs/src.conf.powerpc64-gcc421-bootstrap.powerpc64-host =
/usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/bsd.suffixes.mk =
/root/src.configs/make.conf /usr/src/share/mk/local.sys.mk =
/usr/src/share/mk/src.sys.mk /dev/null =
/usr/src/gnu/usr.bin/gperf/Makefile /usr/src/share/mk/bsd.own.mk =
/usr/src/share/mk/bsd.opts.mk /usr/src/share/mk/bsd.cpu.mk =
/usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.linker.mk =
/usr/src/tools/build/mk/bsd.prog.mk /usr/src/share/mk/bsd.prog.mk =
/usr/src/share/mk/bsd.init.mk /usr/src/share/mk/local.init.mk =
/usr/src/share/mk/src.init.mk /usr/src/gnu/usr.bin/gperf/../Makefile.inc =
/usr/src/gnu/usr.bin/gperf/../../Makefile.inc =
/usr/src/share/mk/bsd.libnames.mk /usr/src/share/mk/src.libnames.mk =
/usr/src/share/mk/src.opts.mk /usr/src/share/mk/bsd.nls.mk =
/usr/src/share/mk/bsd.confs.mk /usr/src/share/mk/bsd.files.mk =
/usr/src/share/mk/bsd.incs.mk /usr/src/share/mk/bsd.links.mk =
/usr/src/share/mk/bsd.dep.mk /usr/src/share/mk/bsd.clang-analyze.mk =
/usr/src/share/mk/bsd.obj.mk /usr/src/share/mk/bsd.subdir.mk =
/usr/src/share/mk/bsd.sys.mk /usr/src/tools/build/mk/Makefile.boot'
.PATH=3D'. /usr/src/gnu/usr.bin/gperf /usr/src/contrib/gperf/src =
/usr/src/contrib/gperf/lib /usr/src/contrib/gperf/doc'
1 error

make[3]: stopped in /usr/src/gnu/usr.bin/gperf
.ERROR_TARGET=3D'gperf.full'
=
.ERROR_META_FILE=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/sr=
c/tmp/usr/src/gnu/usr.bin/gperf/gperf.full.meta'
.MAKE.LEVEL=3D'3'
MAKEFILE=3D''
.MAKE.MODE=3D'meta missing-filemon=3Dyes missing-meta=3Dyes silent=3Dyes =
verbose'
_ERROR_CMD=3D'c++ -O2 -pipe -g -Qunused-arguments =
-I/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy/usr/i=
nclude -I/usr/src/contrib/gperf/lib -I/usr/src/gnu/usr.bin/gperf =
-Wno-c++11-extensions  -static =
-L/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy/usr/l=
ib -o gperf.full  bool-array.o hash-table.o input.o keyword-list.o =
keyword.o main.o options.o output.o positions.o search.o version.o =
getline.o hash.o -legacy;'
.CURDIR=3D'/usr/src/gnu/usr.bin/gperf'
.MAKE=3D'make'
=
.OBJDIR=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr=
/src/gnu/usr.bin/gperf'
.TARGETS=3D'all'
DESTDIR=3D''
LD_LIBRARY_PATH=3D''
MACHINE=3D'powerpc'
MACHINE_ARCH=3D'powerpc64'
=
MAKEOBJDIRPREFIX=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/sr=
c/tmp'
MAKESYSPATH=3D'/usr/src/share/mk'
MAKE_VERSION=3D'20170720'
=
PATH=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy=
/usr/sbin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/lega=
cy/usr/bin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/leg=
acy/bin:/sbin:/bin:/usr/sbin:/usr/bin'
SRCTOP=3D'/usr/src'
=
OBJTOP=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr/=
src'
.MAKE.MAKEFILES=3D'/usr/src/share/mk/sys.mk =
/usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk =
/root/src.configs/src.conf.powerpc64-gcc421-bootstrap.powerpc64-host =
/usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/bsd.suffixes.mk =
/root/src.configs/make.conf /usr/src/share/mk/local.sys.mk =
/usr/src/share/mk/src.sys.mk /dev/null =
/usr/src/gnu/usr.bin/gperf/Makefile /usr/src/share/mk/bsd.own.mk =
/usr/src/share/mk/bsd.opts.mk /usr/src/share/mk/bsd.cpu.mk =
/usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.linker.mk =
/usr/src/tools/build/mk/bsd.prog.mk /usr/src/share/mk/bsd.prog.mk =
/usr/src/share/mk/bsd.init.mk /usr/src/share/mk/local.init.mk =
/usr/src/share/mk/src.init.mk /usr/src/gnu/usr.bin/gperf/../Makefile.inc =
/usr/src/gnu/usr.bin/gperf/../../Makefile.inc =
/usr/src/share/mk/bsd.libnames.mk /usr/src/share/mk/src.libnames.mk =
/usr/src/share/mk/src.opts.mk /usr/src/share/mk/bsd.nls.mk =
/usr/src/share/mk/bsd.confs.mk /usr/src/share/mk/bsd.files.mk =
/usr/src/share/mk/bsd.incs.mk /usr/src/share/mk/bsd.links.mk =
/usr/src/share/mk/bsd.dep.mk /usr/src/share/mk/bsd.clang-analyze.mk =
/usr/src/share/mk/bsd.obj.mk /usr/src/share/mk/bsd.subdir.mk =
/usr/src/share/mk/bsd.sys.mk /usr/src/tools/build/mk/Makefile.boot'
.PATH=3D'. /usr/src/gnu/usr.bin/gperf /usr/src/contrib/gperf/src =
/usr/src/contrib/gperf/lib /usr/src/contrib/gperf/doc'
*** [_bootstrap-tools-gnu/usr.bin/gperf] Error code 2

make[2]: stopped in /usr/src
.ERROR_TARGET=3D'_bootstrap-tools-gnu/usr.bin/gperf'
.ERROR_META_FILE=3D''
.MAKE.LEVEL=3D'2'
MAKEFILE=3D''
.MAKE.MODE=3D'meta missing-filemon=3Dyes missing-meta=3Dyes silent=3Dyes =
verbose'
_ERROR_CMD=3D'.PHONY'
.CURDIR=3D'/usr/src'
.MAKE=3D'make'
=
.OBJDIR=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr=
/src'
.TARGETS=3D'bootstrap-tools'
DESTDIR=3D''
LD_LIBRARY_PATH=3D''
MACHINE=3D'powerpc'
MACHINE_ARCH=3D'powerpc64'
=
MAKEOBJDIRPREFIX=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/sr=
c/tmp'
MAKESYSPATH=3D'/usr/src/share/mk'
MAKE_VERSION=3D'20170720'
=
PATH=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy=
/usr/sbin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/lega=
cy/usr/bin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/leg=
acy/bin:/sbin:/bin:/usr/sbin:/usr/bin'
SRCTOP=3D'/usr/src'
=
OBJTOP=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/tmp/usr/src/usr/=
src'
.MAKE.MAKEFILES=3D'/usr/src/share/mk/sys.mk =
/usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk =
/root/src.configs/src.conf.powerpc64-gcc421-bootstrap.powerpc64-host =
/usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/bsd.suffixes.mk =
/root/src.configs/make.conf /usr/src/share/mk/local.sys.mk =
/usr/src/share/mk/src.sys.mk /dev/null /usr/src/Makefile.inc1 =
/usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.opts.mk =
/usr/src/share/mk/bsd.cpu.mk /usr/src/share/mk/bsd.linker.mk =
/usr/src/share/mk/src.opts.mk /usr/src/share/mk/bsd.own.mk =
/usr/src/Makefile.libcompat /usr/src/share/mk/bsd.subdir.mk =
/usr/src/share/mk/bsd.init.mk /usr/src/share/mk/local.init.mk =
/usr/src/share/mk/src.init.mk'
.PATH=3D'. /usr/src'
4 errors

make[2]: stopped in /usr/src
.ERROR_TARGET=3D'_bootstrap-tools-gnu/usr.bin/gperf'
.ERROR_META_FILE=3D''
.MAKE.LEVEL=3D'2'
MAKEFILE=3D''
.MAKE.MODE=3D'meta missing-filemon=3Dyes missing-meta=3Dyes silent=3Dyes =
verbose'
_ERROR_CMD=3D'.PHONY'
.CURDIR=3D'/usr/src'
.MAKE=3D'make'
=
.OBJDIR=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/usr=
/src'
.TARGETS=3D'bootstrap-tools'
DESTDIR=3D''
LD_LIBRARY_PATH=3D''
MACHINE=3D'powerpc'
MACHINE_ARCH=3D'powerpc64'
=
MAKEOBJDIRPREFIX=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/sr=
c/tmp'
MAKESYSPATH=3D'/usr/src/share/mk'
MAKE_VERSION=3D'20170720'
=
PATH=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/legacy=
/usr/sbin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/lega=
cy/usr/bin:/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/usr/src/tmp/leg=
acy/bin:/sbin:/bin:/usr/sbin:/usr/bin'
SRCTOP=3D'/usr/src'
=
OBJTOP=3D'/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64/tmp/usr/src/usr/=
src'
.MAKE.MAKEFILES=3D'/usr/src/share/mk/sys.mk =
/usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk =
/root/src.configs/src.conf.powerpc64-gcc421-bootstrap.powerpc64-host =
/usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/bsd.suffixes.mk =
/root/src.configs/make.conf /usr/src/share/mk/local.sys.mk =
/usr/src/share/mk/src.sys.mk /dev/null /usr/src/Makefile.inc1 =
/usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.opts.mk =
/usr/src/share/mk/bsd.cpu.mk /usr/src/share/mk/bsd.linker.mk =
/usr/src/share/mk/src.opts.mk /usr/src/share/mk/bsd.own.mk =
/usr/src/Makefile.libcompat /usr/src/share/mk/bsd.subdir.mk =
/usr/src/share/mk/bsd.init.mk /usr/src/share/mk/local.init.mk =
/usr/src/share/mk/src.init.mk'
.PATH=3D'. /usr/src'
*** [_bootstrap-tools] Error code 2



Other examples include:

Core was generated by `/usr/bin/ld --eh-frame-hdr -Bstatic -o =
make-roken.full /usr/lib/crt1.o /usr/lib/'.
Program terminated with signal 11, Segmentation fault.
#0  0x000000001002e148 in ppc64_elf_tls_optimize (obfd=3D<value =
optimized out>, info=3D<value optimized out>) at =
/usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf6=
4-ppc.c:7172
7172			      for (ent =3D =
htab->tls_get_addr->elf.plt.plist;
(gdb) bt
#0  0x000000001002e148 in ppc64_elf_tls_optimize (obfd=3D<value =
optimized out>, info=3D<value optimized out>) at =
/usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf6=
4-ppc.c:7172
#1  0x0000000010001034 in ppc_before_allocation () at =
eelf64ppc_fbsd.c:204
#2  0x0000000010009be4 in ldemul_before_allocation () at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldemul.c:=
78
#3  0x0000000010017b00 in lang_process () at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldlang.c:=
5785
#4  0x0000000010021ce0 in main (argc=3D0, argv=3D<value optimized out>) =
at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldmain.c:=
459
#5  0x00000000100004a8 in _start (argc=3D0, argv=3D0x50a22400, =
env=3D0x50bb3658, obj=3D<value optimized out>, cleanup=3D<value =
optimized out>, ps_strings=3D<value optimized out>)
    at /usr/src/lib/csu/powerpc64/crt1.c:94
Current language:  auto; currently minimal


Core was generated by `/usr/bin/ld --eh-frame-hdr -Bstatic -o =
strfile.full /usr/lib/crt1.o /usr/lib/crt'.
Program terminated with signal 11, Segmentation fault.
#0  0x000000001002e148 in ppc64_elf_tls_optimize (obfd=3D<value =
optimized out>, info=3D<value optimized out>) at =
/usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf6=
4-ppc.c:7172
7172			      for (ent =3D =
htab->tls_get_addr->elf.plt.plist;
(gdb) bt
#0  0x000000001002e148 in ppc64_elf_tls_optimize (obfd=3D<value =
optimized out>, info=3D<value optimized out>) at =
/usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf6=
4-ppc.c:7172
#1  0x0000000010001034 in ppc_before_allocation () at =
eelf64ppc_fbsd.c:204
#2  0x0000000010009be4 in ldemul_before_allocation () at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldemul.c:=
78
#3  0x0000000010017b00 in lang_process () at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldlang.c:=
5785
#4  0x0000000010021ce0 in main (argc=3D0, argv=3D<value optimized out>) =
at =
/usr/src/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldmain.c:=
459
#5  0x00000000100004a8 in _start (argc=3D0, argv=3D0x50a222c0, =
env=3D0x50bdbfb8, obj=3D<value optimized out>, cleanup=3D<value =
optimized out>, ps_strings=3D<value optimized out>)
    at /usr/src/lib/csu/powerpc64/crt1.c:94
Current language:  auto; currently minimal


It appears that clang 5 outputs something
that the system ld does not expect, such that
htab->tls_get_addr=3D=3DNULL is involved when
expecting_tls_get_addr=3D=3D1 .


Details for the failing build's context:

# more =
~/sys_build_scripts.powerpc64-host/make_powerpc64vtsc_nodebug_gcc421_boots=
trap-powerpc64-host.sh=20
kldload -n filemon && \
script =
~/sys_typescripts/typescript_make_powerpc64vtsc_nodebug_gcc421_bootstrap-p=
owerpc64-host-$(date +%Y-%m-%d:%H:%M:%S) \
env __MAKE_CONF=3D"/root/src.configs/make.conf" \
SRCCONF=3D"/dev/null" =
SRC_ENV_CONF=3D"/root/src.configs/src.conf.powerpc64-gcc421-bootstrap.powe=
rpc64-host" \
WITH_META_MODE=3Dyes \
MAKEOBJDIRPREFIX=3D"/usr/obj/powerpc64vtsc_gcc421/powerpc.powerpc64" \
make $*

# more =
/root/src.configs/src.conf.powerpc64-gcc421-bootstrap.powerpc64-host
TO_TYPE=3Dpowerpc64
#
KERNCONF=3DGENERIC64vtsc-NODBG
TARGET=3Dpowerpc
.if ${.MAKE.LEVEL} =3D=3D 0
TARGET_ARCH=3D${TO_TYPE}
.export TARGET_ARCH
.endif
#
#WITH_CROSS_COMPILER=3D
WITH_SYSTEM_COMPILER=3D
#
WITHOUT_LIBCPLUSPLUS=3D
WITH_BINUTILS_BOOTSTRAP=3D
WITH_ELFTOOLCHAIN_BOOTSTRAP=3D
WITHOUT_CLANG_BOOTSTRAP=3D
WITHOUT_CLANG=3D
WITHOUT_CLANG_IS_CC=3D
WITHOUT_CLANG_FULL=3D
WITHOUT_CLANG_EXTRAS=3D
WITHOUT_LLD=3D
WITHOUT_LLDB=3D
#
WITH_BOOT=3D
WITH_LIB32=3D
#
WITH_GCC_BOOTSTRAP=3D
WITH_GCC=3D
WITH_GCC_IS_CC=3D
WITH_GNUCXX=3D
#
NO_WERROR=3D
#WERROR=3D
MALLOC_PRODUCTION=3D
#
WITH_REPRODUCIBLE_BUILD=3D
WITH_DEBUG_FILES=3D


Making it work means adding
(for example):

TOOLS_TO_TYPE=3D${TO_TYPE}
. . .
#
#
# 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=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
.if ${.MAKE.LEVEL} =3D=3D 0
#
CFLAGS.clang+=3D -B${CROSS_BINUTILS_PREFIX}
CXXFLAGS.clang+=3D -B${CROSS_BINUTILS_PREFIX}
.export CFLAGS.clang
.export CXXFLAGS.clang
AS=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
AR=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
NM=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm
OBJCOPY=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy
OBJDUMP=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump
RANLIB=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib
XSIZE=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size
#NO-SUCH: STRINGS=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings
STRINGS=3D/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings
.export AS
.export AR
.export NM
.export OBJCOPY
.export OBJDUMP
.export RANLIB
.export SIZE
.export STRINGS
LD=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
.export LD
.endif

As I remember, back in clang 4 days I did
not have to do such a thing (or it would
have been already be in place in my
environment for these experiments).

It may well be that 32-bit powerpc would
not have this issue.

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DCD0206D-54B2-4782-9534-C08139A36D23>