From 0fa225054816dd11afab4f819a3833d2ee6f2cd1 Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Sat, 31 Jan 2015 19:16:51 +0000 Subject: [PATCH] Build the powerpc64 kernel as a position-independent executable. At startup, it processes its own ELF relocations and can be loaded and run in place at any physical/virtual address. NB: This requires an updated loader to boot! Relnotes: yes --- UPDATING | 5 +++++ sys/conf/Makefile.powerpc | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/UPDATING b/UPDATING index c4e7ee8c4c67..6d1988e99040 100644 --- a/UPDATING +++ b/UPDATING @@ -31,6 +31,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20150131: + The powerpc64 kernel has been changed to a position-independent + executable. This can only be booted with a new version of loader(8), + so make sure to update both world and kernel before rebooting. + 20150118: Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix only release, no new features have been added. Please see the 20141231 diff --git a/sys/conf/Makefile.powerpc b/sys/conf/Makefile.powerpc index 015efc60ae9c..e2d51577158e 100644 --- a/sys/conf/Makefile.powerpc +++ b/sys/conf/Makefile.powerpc @@ -37,6 +37,11 @@ INCLUDES+= -I$S/contrib/libfdt CFLAGS+= -msoft-float -Wa,-many +.if ${MACHINE_ARCH} == "powerpc64" +CFLAGS+= -fPIC +LDFLAGS+= -pie +.endif + .if !empty(DDB_ENABLED) CFLAGS+= -fno-omit-frame-pointer .endif