svn commit: r268871 - in user/nwhitehorn/powerpcle: . contrib/binutils/bfd contrib/binutils/ld/emulparams gnu/lib/libgomp gnu/usr.bin/binutils gnu/usr.bin/binutils/as gnu/usr.bin/binutils/ld gnu/us...

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sat Jul 19 06:27:28 UTC 2014


Author: nwhitehorn
Date: Sat Jul 19 06:27:24 2014
New Revision: 268871
URL: http://svnweb.freebsd.org/changeset/base/268871

Log:
  Toolchain support. This gets important things like a little-endian libc
  built without issue.

Added:
  user/nwhitehorn/powerpcle/contrib/binutils/ld/emulparams/elf32lppc_fbsd.sh
     - copied, changed from r268870, user/nwhitehorn/powerpcle/contrib/binutils/ld/emulparams/elf32ppc_fbsd.sh
  user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/ld/Makefile.powerpcle
     - copied, changed from r268870, user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/ld/Makefile.powerpc
Modified:
  user/nwhitehorn/powerpcle/Makefile
  user/nwhitehorn/powerpcle/Makefile.inc1
  user/nwhitehorn/powerpcle/contrib/binutils/bfd/config.bfd
  user/nwhitehorn/powerpcle/gnu/lib/libgomp/Makefile
  user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/Makefile.inc0
  user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/as/Makefile
  user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/libbfd/Makefile.powerpc
  user/nwhitehorn/powerpcle/gnu/usr.bin/cc/Makefile.tgt
  user/nwhitehorn/powerpcle/gnu/usr.bin/cc/cc_tools/Makefile
  user/nwhitehorn/powerpcle/gnu/usr.bin/gdb/Makefile.inc
  user/nwhitehorn/powerpcle/lib/csu/powerpc64/Makefile
  user/nwhitehorn/powerpcle/lib/libkvm/Makefile
  user/nwhitehorn/powerpcle/share/mk/bsd.endian.mk
  user/nwhitehorn/powerpcle/share/mk/sys.mk
  user/nwhitehorn/powerpcle/sys/powerpc/powerpc/exec_machdep.c
  user/nwhitehorn/powerpcle/sys/sys/sysent.h
  user/nwhitehorn/powerpcle/usr.bin/xlint/Makefile.inc

Modified: user/nwhitehorn/powerpcle/Makefile
==============================================================================
--- user/nwhitehorn/powerpcle/Makefile	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/Makefile	Sat Jul 19 06:27:24 2014	(r268871)
@@ -367,7 +367,7 @@ kernel-toolchains:
 TARGETS?=amd64 arm i386 mips pc98 powerpc sparc64
 TARGET_ARCHES_arm?=	arm armeb armv6 armv6hf
 TARGET_ARCHES_mips?=	mipsel mips mips64el mips64 mipsn32
-TARGET_ARCHES_powerpc?=	powerpc powerpc64
+TARGET_ARCHES_powerpc?=	powerpc powerpc64 powerpcle
 TARGET_ARCHES_pc98?=	i386
 .for target in ${TARGETS}
 TARGET_ARCHES_${target}?= ${target}

Modified: user/nwhitehorn/powerpcle/Makefile.inc1
==============================================================================
--- user/nwhitehorn/powerpcle/Makefile.inc1	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/Makefile.inc1	Sat Jul 19 06:27:24 2014	(r268871)
@@ -140,7 +140,7 @@ SRCRELDATE!=	awk '/^\#define[[:space:]]*
 VERSION=	FreeBSD ${REVISION}-${BRANCH:C/-p[0-9]+$//} ${TARGET_ARCH} ${SRCRELDATE}
 .endif
 
-KNOWN_ARCHES?=	amd64 arm armeb/arm armv6/arm armv6hf/arm i386 i386/pc98 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64
+KNOWN_ARCHES?=	amd64 arm armeb/arm armv6/arm armv6hf/arm i386 i386/pc98 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc powerpcle/powerpc sparc64
 .if ${TARGET} == ${TARGET_ARCH}
 _t=		${TARGET}
 .else

Modified: user/nwhitehorn/powerpcle/contrib/binutils/bfd/config.bfd
==============================================================================
--- user/nwhitehorn/powerpcle/contrib/binutils/bfd/config.bfd	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/contrib/binutils/bfd/config.bfd	Sat Jul 19 06:27:24 2014	(r268871)
@@ -1105,7 +1105,8 @@ case "${targ}" in
     targ_selvecs="bfd_elf64_powerpcle_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec"
     want64=true
     ;;
-  powerpc64le-*-elf* | powerpcle-*-elf64*)
+  powerpc64le-*-elf* | powerpcle-*-elf64* | powerpc64le-*-linux* | \
+  powerpc64le-*-*bsd*)
     targ_defvec=bfd_elf64_powerpcle_vec
     targ_selvecs="bfd_elf64_powerpc_vec bfd_elf32_powerpcle_vec bfd_elf32_powerpc_vec rs6000coff_vec rs6000coff64_vec"
     want64=true
@@ -1154,7 +1155,8 @@ case "${targ}" in
     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
     ;;
   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
-  powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks*)
+  powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks* | \
+  powerpcle-*-*bsd*)
     targ_defvec=bfd_elf32_powerpcle_vec
     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"

Copied and modified: user/nwhitehorn/powerpcle/contrib/binutils/ld/emulparams/elf32lppc_fbsd.sh (from r268870, user/nwhitehorn/powerpcle/contrib/binutils/ld/emulparams/elf32ppc_fbsd.sh)
==============================================================================
--- user/nwhitehorn/powerpcle/contrib/binutils/ld/emulparams/elf32ppc_fbsd.sh	Sat Jul 19 06:19:28 2014	(r268870, copy source)
+++ user/nwhitehorn/powerpcle/contrib/binutils/ld/emulparams/elf32lppc_fbsd.sh	Sat Jul 19 06:27:24 2014	(r268871)
@@ -1,2 +1,2 @@
-. ${srcdir}/emulparams/elf32ppc.sh
+. ${srcdir}/emulparams/elf32lppc.sh
 . ${srcdir}/emulparams/elf_fbsd.sh

Modified: user/nwhitehorn/powerpcle/gnu/lib/libgomp/Makefile
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/lib/libgomp/Makefile	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/lib/libgomp/Makefile	Sat Jul 19 06:27:24 2014	(r268871)
@@ -24,7 +24,7 @@ VERSION_MAP=	${SRCDIR}/libgomp.map
 
 # Target-specific OpenMP configuration
 .if ${MACHINE_CPUARCH} == arm || ${MACHINE_CPUARCH} == i386 || \
-    ${MACHINE_ARCH} == powerpc || \
+    ${MACHINE_ARCH} == powerpc || ${MACHINE_ARCH} == powerpcle || \
     (${MACHINE_CPUARCH} == mips &&  ${MACHINE_ARCH:Mmips64*} == "")
 OMP_LOCK_ALIGN	=	4
 OMP_LOCK_KIND=		4

Modified: user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/Makefile.inc0
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/Makefile.inc0	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/Makefile.inc0	Sat Jul 19 06:27:24 2014	(r268871)
@@ -7,7 +7,7 @@
 VERSION=	"2.17.50 [FreeBSD] 2007-07-03"
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc(64)?(le)?/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif
@@ -30,7 +30,7 @@ RELSRC=	${RELTOP}/../../../contrib/binut
 SRCDIR=	${.CURDIR}/${RELSRC}
 
 .if ${TARGET_CPUARCH} == "arm" || ${TARGET_CPUARCH} == "i386" || \
-	${TARGET_ARCH} == "powerpc" || \
+	${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpcle" || \
 	(${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips64*} == "")
 CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=32
 .else

Modified: user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/as/Makefile
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/as/Makefile	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/as/Makefile	Sat Jul 19 06:27:24 2014	(r268871)
@@ -76,8 +76,11 @@ CFLAGS+= -DDEFAULT_ARCH=\"v9-64\"
 .else
 CFLAGS+= -DDEFAULT_ARCH=\"${BINUTILS_ARCH}\"
 .endif
-.if defined(TARGET_BIG_ENDIAN)
+.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \
+        (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el} == "")
 CFLAGS+= -DTARGET_BYTES_BIG_ENDIAN=1
+.elif ${TARGET_ARCH} == "powerpcle" || ${TARGET_ARCH} == "powerpc64le"
+CFLAGS+= -DTARGET_BYTES_BIG_ENDIAN=0
 .endif
 CFLAGS+= -DTARGET_CPU=\"${BINUTILS_ARCH}\"
 CFLAGS+= -DTARGET_OS=\"${TARGET_OS}\"

Copied and modified: user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/ld/Makefile.powerpcle (from r268870, user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/ld/Makefile.powerpc)
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/ld/Makefile.powerpc	Sat Jul 19 06:19:28 2014	(r268870, copy source)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/ld/Makefile.powerpcle	Sat Jul 19 06:27:24 2014	(r268871)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 
-NATIVE_EMULATION=	elf32ppc_fbsd
+NATIVE_EMULATION=	elf32lppc_fbsd
 
 SRCS+=		e${NATIVE_EMULATION}.c
 CLEANFILES+=	e${NATIVE_EMULATION}.c

Modified: user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/libbfd/Makefile.powerpc
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/libbfd/Makefile.powerpc	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/binutils/libbfd/Makefile.powerpc	Sat Jul 19 06:27:24 2014	(r268871)
@@ -2,7 +2,11 @@
 
 ARCHS+=	rs6000
 
+.if ${TARGET_ARCH} == "powerpcle"
+DEFAULT_VECTOR=	bfd_elf32_powerpcle_vec
+.else
 DEFAULT_VECTOR=	bfd_elf32_powerpc_vec
+.endif
 
 SRCS+=	cpu-powerpc.c	\
 	cpu-rs6000.c	\
@@ -14,6 +18,6 @@ SRCS+=	cpu-powerpc.c	\
 	ppcboot.c	\
 	xcofflink.c
 
-VECS+=	${DEFAULT_VECTOR} \
+VECS+=	bfd_elf32_powerpc_vec \
 	bfd_elf32_powerpcle_vec	\
 	ppcboot_vec

Modified: user/nwhitehorn/powerpcle/gnu/usr.bin/cc/Makefile.tgt
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/cc/Makefile.tgt	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/cc/Makefile.tgt	Sat Jul 19 06:27:24 2014	(r268871)
@@ -4,7 +4,7 @@
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc(64)?(le)?/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif

Modified: user/nwhitehorn/powerpcle/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/cc/cc_tools/Makefile	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/cc/cc_tools/Makefile	Sat Jul 19 06:27:24 2014	(r268871)
@@ -55,6 +55,9 @@ TARGET_INC+=	${GCC_CPU}/aout.h
 TARGET_INC+=	${GCC_CPU}/bpabi.h
 .endif
 .endif
+.if ${TARGET_ARCH} == "powerpcle" || ${TARGET_ARCH} == "powerpc64le"
+TARGET_INC+=   ${GCC_CPU}/sysv4le.h
+.endif
 .if ${TARGET_ARCH} == "powerpc64"
 TARGET_INC+=	${GCC_CPU}/biarch64.h
 TARGET_INC+=    ${GCC_CPU}/default64.h

Modified: user/nwhitehorn/powerpcle/gnu/usr.bin/gdb/Makefile.inc
==============================================================================
--- user/nwhitehorn/powerpcle/gnu/usr.bin/gdb/Makefile.inc	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/gnu/usr.bin/gdb/Makefile.inc	Sat Jul 19 06:27:24 2014	(r268871)
@@ -22,7 +22,7 @@ LIBREADLINE=	${OBJ_ROOT}/../lib/libreadl
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc(le)?(64)?/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif

Modified: user/nwhitehorn/powerpcle/lib/csu/powerpc64/Makefile
==============================================================================
--- user/nwhitehorn/powerpcle/lib/csu/powerpc64/Makefile	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/lib/csu/powerpc64/Makefile	Sat Jul 19 06:27:24 2014	(r268871)
@@ -6,8 +6,7 @@ SRCS=		crt1.c crti.S crtn.S
 OBJS=		${SRCS:N*.h:R:S/$/.o/g}
 OBJS+=		Scrt1.o gcrt1.o
 CFLAGS+=	-I${.CURDIR}/../common \
-		-I${.CURDIR}/../../libc/include \
-		-mlongcall
+		-I${.CURDIR}/../../libc/include
 
 all: ${OBJS}
 

Modified: user/nwhitehorn/powerpcle/lib/libkvm/Makefile
==============================================================================
--- user/nwhitehorn/powerpcle/lib/libkvm/Makefile	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/lib/libkvm/Makefile	Sat Jul 19 06:27:24 2014	(r268871)
@@ -3,7 +3,7 @@
 
 .if defined(TARGET_ARCH) && !defined(COMPAT_32BIT)
 KVM_XARCH=${TARGET_ARCH}
-KVM_XCPUARCH=${KVM_XARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
+KVM_XCPUARCH=${KVM_XARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc(64)?(le)?/powerpc/}
 .else
 KVM_XARCH=${MACHINE_ARCH}
 KVM_XCPUARCH=${MACHINE_CPUARCH}

Modified: user/nwhitehorn/powerpcle/share/mk/bsd.endian.mk
==============================================================================
--- user/nwhitehorn/powerpcle/share/mk/bsd.endian.mk	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/share/mk/bsd.endian.mk	Sat Jul 19 06:27:24 2014	(r268871)
@@ -5,6 +5,7 @@
     ${MACHINE_ARCH} == "arm"  || \
     ${MACHINE_ARCH} == "armv6"  || \
     ${MACHINE_ARCH} == "armv6hf"  || \
+    ${MACHINE_ARCH:Mpowerpc*le} != "" || \
     ${MACHINE_ARCH:Mmips*el} != ""
 TARGET_ENDIANNESS= 1234
 .elif ${MACHINE_ARCH} == "powerpc" || \

Modified: user/nwhitehorn/powerpcle/share/mk/sys.mk
==============================================================================
--- user/nwhitehorn/powerpcle/share/mk/sys.mk	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/share/mk/sys.mk	Sat Jul 19 06:27:24 2014	(r268871)
@@ -13,7 +13,7 @@ unix		?=	We run FreeBSD, not UNIX.
 # and/or endian.  This is called MACHINE_CPU in NetBSD, but that's used
 # for something different in FreeBSD.
 #
-MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
+MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc(64)?(le)?/powerpc/}
 .endif
 
 # If the special target .POSIX appears (without prerequisites or

Modified: user/nwhitehorn/powerpcle/sys/powerpc/powerpc/exec_machdep.c
==============================================================================
--- user/nwhitehorn/powerpcle/sys/powerpc/powerpc/exec_machdep.c	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/sys/powerpc/powerpc/exec_machdep.c	Sat Jul 19 06:27:24 2014	(r268871)
@@ -1033,6 +1033,8 @@ cpu_set_upcall_kse(struct thread *td, vo
 		tf->srr1 = PSL_SF | PSL_USERSET | PSL_FE_DFLT;
 	    #endif
 	}
+	if (SV_PROC_FLAG(td->td_proc, SV_LE))
+		tf->srr1 |= PSL_LE;
 
 	#ifdef __powerpc64__
 	if (mfmsr() & PSL_HV)

Modified: user/nwhitehorn/powerpcle/sys/sys/sysent.h
==============================================================================
--- user/nwhitehorn/powerpcle/sys/sys/sysent.h	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/sys/sys/sysent.h	Sat Jul 19 06:27:24 2014	(r268871)
@@ -134,6 +134,8 @@ struct sysentvec {
 
 #define	SV_ILP32	0x000100
 #define	SV_LP64		0x000200
+#define	SV_BE		0x000400
+#define	SV_LE		0x000800
 #define	SV_IA32		0x004000
 #define	SV_AOUT		0x008000
 #define	SV_SHP		0x010000

Modified: user/nwhitehorn/powerpcle/usr.bin/xlint/Makefile.inc
==============================================================================
--- user/nwhitehorn/powerpcle/usr.bin/xlint/Makefile.inc	Sat Jul 19 06:19:28 2014	(r268870)
+++ user/nwhitehorn/powerpcle/usr.bin/xlint/Makefile.inc	Sat Jul 19 06:27:24 2014	(r268871)
@@ -8,7 +8,7 @@ WARNS?=		0
 # These assignments duplicate much of the functionality of
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=	${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/}
+TARGET_CPUARCH=	${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc(64)?(le)?/powerpc/}
 .else
 TARGET_CPUARCH=	${MACHINE_CPUARCH}
 TARGET_ARCH=	${MACHINE_ARCH}


More information about the svn-src-user mailing list