summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMarco Peereboom <marco@cvs.openbsd.org>2010-04-29 03:41:52 +0000
committerMarco Peereboom <marco@cvs.openbsd.org>2010-04-29 03:41:52 +0000
commit8b321c6cad4b0de5bba49c6d9e8c639884266eb1 (patch)
treed7094b3e849f4588b6ce9804b356a215deb36cca /gnu
parent52587c81cbc96d2547c5cdbc2095ad36bf1ad427 (diff)
Add the bits to compile a working powerpc kernel. This is a work in
progress. most of the smarts from drahn, ok drahn
Diffstat (limited to 'gnu')
-rw-r--r--gnu/gcc/gcc/config/openbsd.h1
-rw-r--r--gnu/gcc/gcc/config/rs6000/openbsd.h132
-rw-r--r--gnu/usr.bin/cc/cc_tools/Makefile5
-rw-r--r--gnu/usr.bin/cc/libgcc/Makefile10
4 files changed, 144 insertions, 4 deletions
diff --git a/gnu/gcc/gcc/config/openbsd.h b/gnu/gcc/gcc/config/openbsd.h
index c46e7fb5ea5..1f0d8df922b 100644
--- a/gnu/gcc/gcc/config/openbsd.h
+++ b/gnu/gcc/gcc/config/openbsd.h
@@ -209,7 +209,6 @@ along with GCC; see the file COPYING. If not see
#define TYPE_ASM_OP "\t.type\t"
#define SIZE_ASM_OP "\t.size\t"
#define SET_ASM_OP "\t.set\t"
-#define GLOBAL_ASM_OP "\t.globl\t"
/* The following macro defines the format used to output the second
operand of the .type assembler directive. */
diff --git a/gnu/gcc/gcc/config/rs6000/openbsd.h b/gnu/gcc/gcc/config/rs6000/openbsd.h
new file mode 100644
index 00000000000..25e92a18bec
--- /dev/null
+++ b/gnu/gcc/gcc/config/rs6000/openbsd.h
@@ -0,0 +1,132 @@
+/* Configuration file for an rs6000 OpenBSD target.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* XXX need to check ASM_WEAKEN_LABEL/ASM_GLOBALIZE_LABEL. */
+
+/* Run-time target specifications. */
+#undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ OPENBSD_OS_CPP_BUILTINS_ELF(); \
+ builtin_define ("__PPC"); \
+ builtin_define ("__PPC__"); \
+ builtin_define ("__powerpc"); \
+ builtin_define ("__powerpc__"); \
+ builtin_assert ("cpu=powerpc"); \
+ builtin_assert ("machine=powerpc"); \
+ } \
+ while (0)
+
+/* Override the default from rs6000.h to avoid conflicts with macros
+ defined in OpenBSD header files. */
+
+#undef RS6000_CPU_CPP_ENDIAN_BUILTINS
+#define RS6000_CPU_CPP_ENDIAN_BUILTINS() \
+ do \
+ { \
+ if (BYTES_BIG_ENDIAN) \
+ { \
+ builtin_define ("__BIG_ENDIAN__"); \
+ builtin_assert ("machine=bigendian"); \
+ } \
+ else \
+ { \
+ builtin_define ("__LITTLE_ENDIAN__"); \
+ builtin_assert ("machine=littleendian"); \
+ } \
+ } \
+ while (0)
+
+#undef CPP_OS_DEFAULT_SPEC
+#define CPP_OS_DEFAULT_SPEC "%(cpp_os_openbsd)"
+
+#undef LINKER_NAME
+#define LINKER_NAME "ld"
+
+#undef LINK_SPEC
+#define LINK_SPEC "%{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.so}} \
+ %{static:-static}}"
+
+#undef LIB_DEFAULT_SPEC
+#define LIB_DEFAULT_SPEC "%(lib_openbsd)"
+
+#undef STARTFILE_DEFAULT_SPEC
+#define STARTFILE_DEFAULT_SPEC "%(startfile_openbsd)"
+
+#undef ENDFILE_DEFAULT_SPEC
+#define ENDFILE_DEFAULT_SPEC "%(endfile_openbsd)"
+
+#undef LINK_START_DEFAULT_SPEC
+#define LINK_START_DEFAULT_SPEC "%(link_start_openbsd)"
+
+#undef LINK_OS_DEFAULT_SPEC
+#define LINK_OS_DEFAULT_SPEC "%(link_os_openbsd)"
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (PowerPC OpenBSD)");
+
+/* Default ABI to use */
+#undef RS6000_ABI_NAME
+#define RS6000_ABI_NAME "openbsd"
+
+/* Define this macro as a C expression for the initializer of an
+ array of string to tell the driver program which options are
+ defaults for this target and thus do not need to be handled
+ specially when using `MULTILIB_OPTIONS'.
+
+ Do not define this macro if `MULTILIB_OPTIONS' is not defined in
+ the target makefile fragment or if none of the options listed in
+ `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */
+
+#undef MULTILIB_DEFAULTS
+#define MULTILIB_DEFAULTS { "mbig", "mcall-openbsd" }
+
+/* collect2 support (Macros for initialization). */
+
+
+/* Don't tell collect2 we use COFF as we don't have (yet ?) a dynamic ld
+ library with the proper functions to handle this -> collect2 will
+ default to using nm. */
+#undef OBJECT_FORMAT_COFF
+
+/* Some code gets optimized incorrectly by move_movables() in loop.c */
+#define BROKEN_MOVE_MOVABLES_P
+
+/* This must agree with <machine/_types.h> */
+#undef SIZE_TYPE
+#define SIZE_TYPE "long unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "long int"
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+#undef TRAMPOLINE_SIZE
+#define TRAMPOLINE_SIZE 40
+
diff --git a/gnu/usr.bin/cc/cc_tools/Makefile b/gnu/usr.bin/cc/cc_tools/Makefile
index 5710dc5586f..ed8342a8abf 100644
--- a/gnu/usr.bin/cc/cc_tools/Makefile
+++ b/gnu/usr.bin/cc/cc_tools/Makefile
@@ -1,5 +1,5 @@
# $FreeBSD: src/gnu/usr.bin/cc/cc_tools/Makefile,v 1.88.8.1 2009/04/15 03:14:26 kensmith Exp $
-# $OpenBSD: Makefile,v 1.4 2010/04/25 21:04:27 kettenis Exp $
+# $OpenBSD: Makefile,v 1.5 2010/04/29 03:41:51 marco Exp $
.include <bsd.own.mk>
@@ -39,6 +39,9 @@ TARGET_INC+= elfos.h
TARGET_INC+= openbsd.h
TARGET_INC+= openbsd-libpthread.h
TARGET_INC+= openbsd-native.h
+.if ${TARGET_ARCH} == "powerpc"
+TARGET_INC+= freebsd-spec.h
+.endif
.if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64"
.if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h)
TARGET_INC+= ${GCC_CPU}/sysv4.h
diff --git a/gnu/usr.bin/cc/libgcc/Makefile b/gnu/usr.bin/cc/libgcc/Makefile
index 886434bcbe9..1f321a93ca1 100644
--- a/gnu/usr.bin/cc/libgcc/Makefile
+++ b/gnu/usr.bin/cc/libgcc/Makefile
@@ -1,5 +1,5 @@
# $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.58.8.1 2009/04/15 03:14:26 kensmith Exp $
-# $OpenBSD: Makefile,v 1.3 2010/04/25 21:04:27 kettenis Exp $
+# $OpenBSD: Makefile,v 1.4 2010/04/29 03:41:51 marco Exp $
.include <bsd.own.mk>
@@ -287,4 +287,10 @@ beforeinstall:
.include <bsd.lib.mk>
-.SUFFIXES: .vis .vo
+
+.SUFFIXES: .vis .vo .asm
+
+.if ${TARGET_ARCH} == "powerpc"
+.asm.o:
+ ${CC_T} ${${T}_CFLAGS} -xassembler-with-cpp -o ${.TARGET} ${.ALLSRC:M*.asm}
+.endif