svn commit: r195670 - in projects/ppc64: . contrib/gcc/config/rs6000 gnu/usr.bin/binutils gnu/usr.bin/binutils/as gnu/usr.bin/binutils/as/ppc64-freebsd gnu/usr.bin/binutils/gdb gnu/usr.bin/binutils...

Nathan Whitehorn nwhitehorn at FreeBSD.org
Tue Jul 14 01:56:19 UTC 2009


Author: nwhitehorn
Date: Tue Jul 14 01:56:18 2009
New Revision: 195670
URL: http://svn.freebsd.org/changeset/base/195670

Log:
  Get the toolchain able to build 64-bit PowerPC FreeBSD binaries.
  
  Obtained from:	\\depot\projects\ppc-g5

Added:
  projects/ppc64/gnu/usr.bin/binutils/as/ppc64-freebsd/
     - copied from r195651, projects/ppc64/gnu/usr.bin/binutils/as/powerpc-freebsd/
  projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile.ppc64
     - copied, changed from r195651, projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile.powerpc
  projects/ppc64/gnu/usr.bin/binutils/ld/Makefile.ppc64
     - copied, changed from r195651, projects/ppc64/gnu/usr.bin/binutils/ld/Makefile.powerpc
  projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile.ppc64
  projects/ppc64/gnu/usr.bin/binutils/libopcodes/Makefile.ppc64
     - copied unchanged from r195651, projects/ppc64/gnu/usr.bin/binutils/libopcodes/Makefile.powerpc
Modified:
  projects/ppc64/Makefile.inc1
  projects/ppc64/contrib/gcc/config/rs6000/freebsd.h
  projects/ppc64/gnu/usr.bin/binutils/Makefile.inc0
  projects/ppc64/gnu/usr.bin/binutils/as/Makefile
  projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile
  projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile
  projects/ppc64/gnu/usr.bin/cc/Makefile.tgt
  projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile
  projects/ppc64/gnu/usr.bin/cc/include/Makefile
  projects/ppc64/share/mk/bsd.endian.mk

Modified: projects/ppc64/Makefile.inc1
==============================================================================
--- projects/ppc64/Makefile.inc1	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/Makefile.inc1	Tue Jul 14 01:56:18 2009	(r195670)
@@ -128,7 +128,7 @@ TARGET=		${TARGET_ARCH}
 TARGET?=	${MACHINE}
 TARGET_ARCH?=	${MACHINE_ARCH}
 
-KNOWN_ARCHES?=	amd64 arm i386 i386/pc98 ia64 mips powerpc sparc64 sparc64/sun4v
+KNOWN_ARCHES?=	amd64 arm i386 i386/pc98 ia64 mips powerpc ppc64 sparc64 sparc64/sun4v
 .if ${TARGET} == ${TARGET_ARCH}
 _t=		${TARGET}
 .else

Modified: projects/ppc64/contrib/gcc/config/rs6000/freebsd.h
==============================================================================
--- projects/ppc64/contrib/gcc/config/rs6000/freebsd.h	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/contrib/gcc/config/rs6000/freebsd.h	Tue Jul 14 01:56:18 2009	(r195670)
@@ -21,13 +21,86 @@
 
 /* Override the defaults, which exist to force the proper definition.  */
 
-#undef	CPP_OS_DEFAULT_SPEC
-#define CPP_OS_DEFAULT_SPEC "%(cpp_os_freebsd)"
+#ifdef IN_LIBGCC2
+#undef TARGET_64BIT
+#ifdef __ppc64__
+#define TARGET_64BIT 1
+#else
+#define TARGET_64BIT 0
+#endif
+#endif
+
+/* On 64-bit systems, use the AIX ABI like Linux and NetBSD */
+
+#undef	DEFAULT_ABI
+#define	DEFAULT_ABI (TARGET_64BIT ? ABI_AIX : ABI_V4)
+#undef	TARGET_AIX
+#define	TARGET_AIX TARGET_64BIT
+
+#undef  FBSD_TARGET_CPU_CPP_BUILTINS
+#define FBSD_TARGET_CPU_CPP_BUILTINS()		\
+  do						\
+    {						\
+      builtin_define ("__PPC__");		\
+      builtin_define ("__ppc__");		\
+      builtin_define ("__PowerPC__");		\
+      builtin_define ("__powerpc__");		\
+      if (TARGET_64BIT)				\
+	{					\
+	  builtin_define ("__LP64__");		\
+	  builtin_define ("__ppc64__");		\
+	  builtin_define ("__powerpc64__");	\
+	  builtin_define ("__arch64__");	\
+	  builtin_assert ("cpu=powerpc64");	\
+	  builtin_assert ("machine=powerpc64");	\
+	} else {				\
+	  builtin_assert ("cpu=powerpc");	\
+	  builtin_assert ("machine=powerpc");	\
+	}					\
+    }						\
+  while (0)
+
+#define INVALID_64BIT "-m%s not supported in this configuration"
+#define INVALID_32BIT INVALID_64BIT
+
+#undef	SUBSUBTARGET_OVERRIDE_OPTIONS
+#define	SUBSUBTARGET_OVERRIDE_OPTIONS				\
+  do								\
+    {								\
+      if (!rs6000_explicit_options.alignment)			\
+	rs6000_alignment_flags = MASK_ALIGN_NATURAL;		\
+      if (TARGET_64BIT)						\
+	{							\
+	  if (DEFAULT_ABI != ABI_AIX)				\
+	    {							\
+	      rs6000_current_abi = ABI_AIX;			\
+	      error (INVALID_64BIT, "call");			\
+	    }							\
+	  dot_symbols = !strcmp (rs6000_abi_name, "aixdesc");	\
+	  if (target_flags & MASK_RELOCATABLE)			\
+	    {							\
+	      target_flags &= ~MASK_RELOCATABLE;		\
+	      error (INVALID_64BIT, "relocatable");		\
+	    }							\
+	  if (target_flags & MASK_EABI)				\
+	    {							\
+	      target_flags &= ~MASK_EABI;			\
+	      error (INVALID_64BIT, "eabi");			\
+	    }							\
+	  if (target_flags & MASK_PROTOTYPE)			\
+	    {							\
+	      target_flags &= ~MASK_PROTOTYPE;			\
+	      error (INVALID_64BIT, "prototype");		\
+	    }							\
+	  if ((target_flags & MASK_POWERPC64) == 0)		\
+	    {							\
+	      target_flags |= MASK_POWERPC64;			\
+	      error ("64 bit CPU required");			\
+	    }							\
+	}							\
+    }								\
+  while (0)
 
-#undef	CPP_OS_FREEBSD_SPEC
-#define CPP_OS_FREEBSD_SPEC	"\
-  -D__PPC__ -D__ppc__ -D__PowerPC__ -D__powerpc__ \
-  -Acpu=powerpc -Amachine=powerpc "
 
 #undef	STARTFILE_DEFAULT_SPEC
 #define STARTFILE_DEFAULT_SPEC "%(startfile_freebsd)"
@@ -57,7 +130,10 @@
    c-common.c, and config/<arch>/<arch>.h.  */
 
 #undef  SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE	(TARGET_64BIT ? "long unsigned int" : "unsigned int")
+
+#undef  PTRDIFF_TYPE
+#define PTRDIFF_TYPE	(TARGET_64BIT ? "long int" : "int")
 
 /* rs6000.h gets this wrong for FreeBSD.  We use the GCC defaults instead.  */
 #undef WCHAR_TYPE

Modified: projects/ppc64/gnu/usr.bin/binutils/Makefile.inc0
==============================================================================
--- projects/ppc64/gnu/usr.bin/binutils/Makefile.inc0	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/binutils/Makefile.inc0	Tue Jul 14 01:56:18 2009	(r195670)
@@ -9,6 +9,8 @@ VERSION=	"2.15 [FreeBSD] 2004-05-23"
 TARGET_ARCH?=	${MACHINE_ARCH}
 .if ${TARGET_ARCH} == "amd64"
 BINUTILS_ARCH=x86_64
+.elif ${TARGET_ARCH} == "ppc64"
+BINUTILS_ARCH=powerpc64
 .else
 BINUTILS_ARCH=${TARGET_ARCH}
 .endif

Modified: projects/ppc64/gnu/usr.bin/binutils/as/Makefile
==============================================================================
--- projects/ppc64/gnu/usr.bin/binutils/as/Makefile	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/binutils/as/Makefile	Tue Jul 14 01:56:18 2009	(r195670)
@@ -26,7 +26,7 @@ SRCS+=	itbl-ops.c itbl-parse.y itbl-lex.
 
 .if ${TARGET_ARCH} == "amd64"
 SRCS+=	tc-i386.c
-.elif ${TARGET_ARCH} == "powerpc"
+.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "ppc64"
 SRCS+=	tc-ppc.c
 .elif ${TARGET_ARCH} == "sparc64"
 # change back to tc-sparc.c when new binutils is imported

Modified: projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile
==============================================================================
--- projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile	Tue Jul 14 01:56:18 2009	(r195670)
@@ -12,6 +12,8 @@ GDBDIR= ${.CURDIR}/../../../../contrib/g
 GDB_CPU=	sparc
 .elif ${TARGET_ARCH} == "amd64"
 GDB_CPU=	i386
+.elif ${TARGET_ARCH} == "ppc64"
+GDB_CPU=        powerpc
 .else
 GDB_CPU=	${TARGET_ARCH}
 .endif

Copied and modified: projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile.ppc64 (from r195651, projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile.powerpc)
==============================================================================
--- projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile.powerpc	Mon Jul 13 01:37:48 2009	(r195651, copy source)
+++ projects/ppc64/gnu/usr.bin/binutils/gdb/Makefile.ppc64	Tue Jul 14 01:56:18 2009	(r195670)
@@ -2,4 +2,4 @@
 
 XSRCS+=	ppcnbsd-nat.c ppc-tdep.c \
 	core-regset.c
-CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf32_powerpc_vec
+CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf64_powerpc_vec

Copied and modified: projects/ppc64/gnu/usr.bin/binutils/ld/Makefile.ppc64 (from r195651, projects/ppc64/gnu/usr.bin/binutils/ld/Makefile.powerpc)
==============================================================================
--- projects/ppc64/gnu/usr.bin/binutils/ld/Makefile.powerpc	Mon Jul 13 01:37:48 2009	(r195651, copy source)
+++ projects/ppc64/gnu/usr.bin/binutils/ld/Makefile.ppc64	Tue Jul 14 01:56:18 2009	(r195670)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 
-NATIVE_EMULATION=	elf32ppc
+NATIVE_EMULATION=	elf64ppc
 
 SRCS+=		e${NATIVE_EMULATION}.c
 CLEANFILES+=	e${NATIVE_EMULATION}.c

Modified: projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile
==============================================================================
--- projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile	Tue Jul 14 01:56:18 2009	(r195670)
@@ -25,6 +25,8 @@ SELARCH=
 SELARCH= &bfd_i386_arch
 .elif ${TARGET_ARCH} == "sparc64"
 SELARCH= &bfd_sparc_arch
+.elif ${TARGET_ARCH} == "ppc64"
+SELARCH= &bfd_powerpc_arch
 .else
 .for _a in ${ARCHS}
 .if ${SELARCH} == ""

Added: projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile.ppc64
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/ppc64/gnu/usr.bin/binutils/libbfd/Makefile.ppc64	Tue Jul 14 01:56:18 2009	(r195670)
@@ -0,0 +1,25 @@
+# $FreeBSD: src/gnu/usr.bin/binutils/libbfd/Makefile.powerpc,v 1.9 2006/08/24 02:36:21 marcel Exp $
+
+ARCHS+=	rs6000
+
+DEFAULT_VECTOR=	bfd_elf64_powerpc_vec
+
+SRCS+=	cpu-powerpc.c	\
+	cpu-rs6000.c	\
+	elf32.c		\
+	elf32-gen.c	\
+	elf32-ppc.c	\
+	elf32-target.h	\
+	elflink.c	\
+	elf64.c		\
+	elf64-gen.c	\
+	elf64-ppc.c	\
+	elf64-target.h	\
+	elflink.c	\
+	ppcboot.c	\
+	xcofflink.c
+
+VECS+=	${DEFAULT_VECTOR} \
+	bfd_elf64_powerpcle_vec	\
+	bfd_elf32_powerpc_vec \
+	bfd_elf32_powerpcle_vec 

Copied: projects/ppc64/gnu/usr.bin/binutils/libopcodes/Makefile.ppc64 (from r195651, projects/ppc64/gnu/usr.bin/binutils/libopcodes/Makefile.powerpc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/ppc64/gnu/usr.bin/binutils/libopcodes/Makefile.ppc64	Tue Jul 14 01:56:18 2009	(r195670, copy of r195651, projects/ppc64/gnu/usr.bin/binutils/libopcodes/Makefile.powerpc)
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+SRCS+=	ppc-dis.c ppc-opc.c
+CFLAGS+= -DARCH_powerpc -DARCH_rs6000

Modified: projects/ppc64/gnu/usr.bin/cc/Makefile.tgt
==============================================================================
--- projects/ppc64/gnu/usr.bin/cc/Makefile.tgt	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/cc/Makefile.tgt	Tue Jul 14 01:56:18 2009	(r195670)
@@ -4,7 +4,7 @@ TARGET_ARCH?=	${MACHINE_ARCH}
 
 .if ${TARGET_ARCH} == "amd64"
 GCC_CPU=	i386
-.elif ${TARGET_ARCH} == "powerpc"
+.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "ppc64"
 GCC_CPU=	rs6000
 .elif ${TARGET_ARCH} == "sparc64"
 GCC_CPU=	sparc
@@ -21,3 +21,7 @@ TARGET_CPU_DEFAULT= 16
 .if ${TARGET_ARCH} == "sparc64"
 TARGET_CPU_DEFAULT= TARGET_CPU_ultrasparc
 .endif
+.if ${TARGET_ARCH} == "ppc64"
+TARGET_CPU_DEFAULT= \"powerpc64\"
+.endif
+

Modified: projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile	Tue Jul 14 01:56:18 2009	(r195670)
@@ -56,6 +56,9 @@ TARGET_INC+=	${GCC_CPU}/freebsd.h
 .if ${TARGET_ARCH} == "amd64"
 TARGET_INC+=	${GCC_CPU}/freebsd64.h
 .endif
+.if ${TARGET_ARCH} == "ppc64"
+TARGET_INC+=    ${GCC_CPU}/default64.h
+.endif
 .if ${TARGET_ARCH} == "arm"
 TARGET_INC+=	${GCC_CPU}/arm.h
 .endif
@@ -171,7 +174,7 @@ OPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/
 OPT_FILES+=	${.CURDIR}/${GCC_CPU}-freebsd.opt
 .endif
 
-.if ${TARGET_ARCH} == "powerpc"
+.if ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "ppc64"
 OPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/sysv4.opt
 .endif
 

Modified: projects/ppc64/gnu/usr.bin/cc/include/Makefile
==============================================================================
--- projects/ppc64/gnu/usr.bin/cc/include/Makefile	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/gnu/usr.bin/cc/include/Makefile	Tue Jul 14 01:56:18 2009	(r195670)
@@ -10,7 +10,7 @@ INCS=	emmintrin.h mmintrin.h pmmintrin.h
 INCS=	ia64intrin.h
 .elif ${TARGET_ARCH} == "arm"
 INCS=	mmintrin.h
-.elif ${TARGET_ARCH} == "powerpc"
+.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "ppc64"
 INCS=	ppc-asm.h altivec.h spe.h
 .endif
 

Modified: projects/ppc64/share/mk/bsd.endian.mk
==============================================================================
--- projects/ppc64/share/mk/bsd.endian.mk	Mon Jul 13 23:03:44 2009	(r195669)
+++ projects/ppc64/share/mk/bsd.endian.mk	Tue Jul 14 01:56:18 2009	(r195670)
@@ -7,6 +7,7 @@
     (${MACHINE_ARCH} == "mips" && !defined(TARGET_BIG_ENDIAN))
 TARGET_ENDIANNESS= 1234
 .elif ${MACHINE_ARCH} == "powerpc" || \
+    ${MACHINE_ARCH} == "ppc64" || \
     ${MACHINE_ARCH} == "sparc64" || \
     ${MACHINE_ARCH} == "arm" || \
     ${MACHINE_ARCH} == "mips"


More information about the svn-src-projects mailing list