Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Jun 2019 12:03:05 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        Justin Hibbits <jrh29@alumni.cwru.edu>
Cc:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   Re: FreeBSD/powerpc and FreeBSD/powerpcspe toolchain update
Message-ID:  <CE47F595-68EF-43A2-877B-61C1981AF9E7@yahoo.com>
In-Reply-To: <CAHSQbTBjZFb1dPk2FN=438i0FVtAKHYy-y22L%2BHFEDrTmd-9Aw@mail.gmail.com>
References:  <CAHSQbTBjZFb1dPk2FN=438i0FVtAKHYy-y22L%2BHFEDrTmd-9Aw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On 2019-Jun-24, at 19:40, Justin Hibbits <jrh29@alumni.cwru.edu> wrote:

> As of r349351 32-bit powerpc toolchains need to be rebuilt as part of
> buildworld, in order to take advantage of the new Secure Procedure
> Linkage Table (Secure-PLT) format.  This can be done by passing
> "WITHOUT_SYSTEM_TOOLCHAIN=3D" on the 'make buildworld' command line.
>=20
> Cross-building should work fine with no changes, as that already
> builds a new toolchain.  If building with an external toolchain, such
> as gcc8, add 'CFLAGS+=3D -msecure-plt' to /etc/src.conf to ensure the
> new PLT is used, otherwise it will default to BSS-PLT, which is fully
> compatible, but not as secure.  There is breakage intended at all, so
> please let me know if there are any problems.

My attempt to amd64->powerpc (32-bit) cross build from/to head -r349444
via system clang and lld got the following. This may not be a recent
change. It has been a long time since I tried lld, instead using
devel/powerpc64-binutils. ( devel/powerpc64-binutils now fails where
it used to work, but I sent a separate note out about that. )

--- agp.ko.full ---
ld: agp.kld(.text+0x37a4): R_PPC_PLTREL24 reloc against local symbol
agp.kld: could not read symbols: Bad value
*** [agp.ko.full] Error code 1

make[4]: stopped in /usr/src/sys/modules/agp
.ERROR_TARGET=3D'agp.ko.full'
=
.ERROR_META_FILE=3D'/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/pow=
erpc.powerpc/sys/GENERICvtsc-NODBG/modules/usr/src/sys/modules/agp/agp.ko.=
full.meta'
.MAKE.LEVEL=3D'4'
MAKEFILE=3D''
.MAKE.MODE=3D'meta missing-filemon=3Dyes missing-meta=3Dyes silent=3Dyes =
verbose'
_ERROR_CMD=3D'ld -m elf32ppc_fbsd -Bshareable -znotext --secure-plt -d =
-warn-common  -o agp.ko.full agp.kld;'
.CURDIR=3D'/usr/src/sys/modules/agp'
.MAKE=3D'make'
=
.OBJDIR=3D'/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/powerpc.powe=
rpc/sys/GENERICvtsc-NODBG/modules/usr/src/sys/modules/agp'
.TARGETS=3D'all'
DESTDIR=3D''
LD_LIBRARY_PATH=3D''
MACHINE=3D'powerpc'
MACHINE_ARCH=3D'powerpc'
=
MAKEOBJDIRPREFIX=3D'/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/pow=
erpc.powerpc/sys/GENERICvtsc-NODBG/modules'
MAKESYSPATH=3D'/usr/src/share/mk'
MAKE_VERSION=3D'20181221'
=
PATH=3D'/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/powerpc.powerpc=
/tmp/usr/sbin:/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/powerpc.p=
owerpc/tmp/usr/bin:/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/powe=
rpc.powerpc/tmp/legacy/usr/sbin:/usr/obj/powerpcvtsc_clang/powerpc.powerpc=
/usr/src/powerpc.powerpc/tmp/legacy/usr/bin:/usr/obj/powerpcvtsc_clang/pow=
erpc.powerpc/usr/src/powerpc.powerpc/tmp/legacy/bin::/sbin:/bin:/usr/sbin:=
/usr/bin'
SRCTOP=3D'/usr/src'
=
OBJTOP=3D'/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/powerpc.power=
pc/sys/GENERICvtsc-NODBG/modules/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.powerpc-clang-bootstrap.amd64-host =
/usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/src.sys.obj.mk =
/usr/src/share/mk/auto.obj.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/sys/modules/agp/Makefile =
/usr/src/share/mk/bsd.kmod.mk /usr/src/sys/conf/kmod.mk =
/usr/src/share/mk/bsd.init.mk /usr/src/share/mk/bsd.opts.mk =
/usr/src/share/mk/bsd.cpu.mk /usr/src/share/mk/local.init.mk =
/usr/src/share/mk/src.init.mk /usr/src/sys/modules/agp/../Makefile.inc =
/usr/src/share/mk/bsd.own.mk /usr/src/share/mk/bsd.compiler.mk =
/usr/src/share/mk/bsd.linker.mk /usr/src/sys/conf/kern.opts.mk =
/usr/src/sys/conf/config.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/sys/conf/kern.mk'
.PATH=3D'. /usr/src/sys/modules/agp /usr/src/sys/dev/agp =
/usr/obj/powerpcvtsc_clang/powerpc.powerpc/usr/src/powerpc.powerpc/sys/GEN=
ERICvtsc-NODBG'
1 error

This was based on:

# more ~/src.configs/src.conf.powerpc-clang-bootstrap.amd64-host=20
TO_TYPE=3Dpowerpc
#
KERNCONF=3DGENERICvtsc-NODBG
TARGET=3D${TO_TYPE}
.if ${.MAKE.LEVEL} =3D=3D 0
TARGET_ARCH=3D${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITH_CROSS_COMPILER=3D
WITH_SYSTEM_COMPILER=3D
WITHOUT_SYSTEM_LINKER=3D
#
WITH_LIBCPLUSPLUS=3D
WITHOUT_LLD_BOOTSTRAP=3D
WITH_BINUTILS_BOOTSTRAP=3D
WITH_ELFTOOLCHAIN_BOOTSTRAP=3D
#Disables avoiding bootstrap: WITHOUT_LLVM_TARGET_ALL=3D
WITHOUT_LLVM_TARGET_AARCH64=3D
WITHOUT_LLVM_TARGET_ARM=3D
WITHOUT_LLVM_TARGET_MIPS=3D
WITH_LLVM_TARGET_POWERPC=3D
WITHOUT_LLVM_TARGET_SPARC=3D
WITHOUT_LLVM_TARGET_X86=3D
WITH_CLANG_BOOTSTRAP=3D
WITH_CLANG=3D
WITH_CLANG_IS_CC=3D
WITH_CLANG_FULL=3D
WITH_CLANG_EXTRAS=3D
WITHOUT_LLD=3D
WITH_BINTUILS=3D
# lldb requires missing atomic 8-byte operations for powerpc (non-64)
WITHOUT_LLDB=3D
#
WITH_BOOT=3D
WITHOUT_LIB32=3D
#
LOADER_DEFAULT_INTERP=3D4th
#
WITHOUT_GCC_BOOTSTRAP=3D
WITHOUT_GCC=3D
WITHOUT_GCC_IS_CC=3D
WITHOUT_GNUCXX=3D
#
NO_WERROR=3D
#
# Use WERROR to avoid stopping at the likes of:
# error: implicit conversion from 'int' to 'int8_t' (aka 'signed char') =
changes value from 128 to -128 [-Werror,-Wconstant-conversion]
WERROR=3D
MALLOC_PRODUCTION=3D
#
# Avoid stripping but do not control host -g status as well:
DEBUG_FLAGS+=3D
#
WITH_REPRODUCIBLE_BUILD=3D
WITH_DEBUG_FILES=3D



> I will submit ports updates for review in the next few days, so that
> ports can implicitly take advantage of secure-PLT as well.



=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CE47F595-68EF-43A2-877B-61C1981AF9E7>