This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] new FreeBSD/alpha support
- To: gcc-patches at gcc dot gnu dot org
- Subject: Re: [PATCH] new FreeBSD/alpha support
- From: "David O'Brien" <obrien at FreeBSD dot org>
- Date: Sun, 5 Nov 2000 16:05:44 -0800
- Organization: The NUXI BSD group
- References: <20001004224341.A50778@dragon.nuxi.com>
- Reply-To: obrien at FreeBSD dot org
On Wed, Oct 04, 2000 at 10:43:41PM -0700, David O'Brien wrote:
> This patch set adds new architectural support for FreeBSD running on the
> DEC Alpha. This a first step, to get the compiler itself bootstrapping
> (and useful for cross-compilers). I'm working on some remaining test
> suite failures for C++.
Latest patchset appended. I believe all issues have been taken care of.
Permission to apply?
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v
retrieving revision 1.8156
diff -u -r1.8156 ChangeLog
--- ChangeLog 2000/11/05 10:35:28 1.8156
+++ ChangeLog 2000/11/06 00:04:32
@@ -1,3 +1,10 @@
+2000-11-05 David O'Brien <obrien@dragon.nuxi.com>
+
+ * config/alpha/freebsd.h: New file -- FreeBSD/alpha architecture file.
+ * POTFILES.in: Add config/alpha/freebsd.h
+ * configure.in: Add alpha*-freebsd support.
+ * configure: Regenerate.
+
2000-11-05 Joseph S. Myers <jsm28@cam.ac.uk>
* Makefile.in: Remove all targets related to building
Index: configure.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/configure.in,v
retrieving revision 1.442
diff -u -r1.442 configure.in
--- configure.in 2000/11/05 10:35:30 1.442
+++ configure.in 2000/11/06 00:04:32
@@ -799,6 +799,21 @@
thread_file='posix'
fi
;;
+ alpha*-*-freebsd*)
+ tm_file="${tm_file} freebsd.h alpha/elf.h alpha/freebsd.h"
+ target_cpu_default="MASK_GAS"
+ tmake_file="t-freebsd alpha/t-crtbe alpha/t-alpha alpha/t-ieee"
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+ xmake_file=none
+ gas=yes gnu_ld=yes
+ stabs=yes
+ case x${enable_threads} in
+ xyes | xpthreads | xposix)
+ thread_file='posix'
+ tmake_file="${tmake_file} t-freebsd-thread"
+ ;;
+ esac
+ ;;
alpha*-*-netbsd*)
tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsd-elf.h"
target_cpu_default="MASK_GAS"
Index: config/alpha/freebsd.h
===================================================================
RCS file: freebsd.h
diff -N freebsd.h
--- /dev/null Tue May 5 13:32:27 1998
+++ freebsd.h Sun Nov 5 16:04:32 2000
@@ -0,0 +1,102 @@
+/* Definitions for DEC Alpha/AXP running FreeBSD using the ELF format
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by BSDi, written by David O'Brien <obrien@FreeBSD.org>
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES \
+ "-D__ELF__ -Dunix -D__FreeBSD__ -Asystem(unix) -Asystem(bsd) -Asystem(FreeBSD)"
+
+/* Provide a CPP_SPEC appropriate for FreeBSD/alpha. Besides the dealing with
+ the GCC option `-posix', and PIC issues as on all FreeBSD platforms, we must
+ deal with the Alpha's FP issues. */
+
+#undef CPP_SPEC
+#define CPP_SPEC "%(cpp_cpu) \
+ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \
+ %{posix:-D_POSIX_SOURCE} \
+ %{mieee:-D_IEEE_FP} \
+ %{mieee-with-inexact:-D_IEEE_FP -D_IEEE_FP_INEXACT}"
+
+#undef LINK_SPEC
+#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
+ %{p:%e`-p' not supported; use `-pg' and gprof(1)} \
+ %{Wl,*:%*} \
+ %{assert*} %{R*} %{rpath*} %{defsym*} \
+ %{shared:-Bshareable %{h*} %{soname*}} \
+ %{symbolic:-Bsymbolic} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
+ %{static:-Bstatic}}"
+
+/* Provide an ASM_SPEC appropriate for a FreeBSD/Alpha target. This differs
+ from the generic FreeBSD ASM_SPEC in that no special handling of PIC is
+ necessary on the Alpha. */
+/* Per Richard Henderson <rth@cygnus.com>, it is better to use the `.arch'
+ directive in the assembly file. alpha/elf.h gives us this in
+ "ASM_FILE_START".
+#undef ASM_SPEC
+#define ASM_SPEC " %| %{mcpu=*:-m%*}"
+*/
+
+
+/************************[ Target stuff ]***********************************/
+
+/* Define the actual types of some ANSI-mandated types.
+ Needs to agree with <machine/ansi.h>. GCC defaults come from c-decl.c,
+ c-common.c, and config/<arch>/<arch>.h. */
+
+/* alpha.h gets this wrong for FreeBSD. We use the GCC defaults instead. */
+#undef WCHAR_TYPE
+
+#undef WCHAR_UNSIGNED
+#define WCHAR_UNSIGNED 0
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)");
+
+#define TARGET_ELF 1
+
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS)
+
+#undef HAS_INIT_SECTION
+
+/* Output assembler code to FILE to increment profiler label # LABELNO
+ for profiling a function entry. Under FreeBSD/Alpha, the assembler does
+ nothing special with -pg. */
+
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+ fputs ("\tjsr $28,_mcount\n", (FILE))
+
+/* Show that we need a GP when profiling. */
+#undef TARGET_PROFILING_NEEDS_GP
+#define TARGET_PROFILING_NEEDS_GP 1
+
+/* This is the char to use for continuation (in case we need to turn
+ continuation back on). */
+
+#undef DBX_CONTIN_CHAR
+#define DBX_CONTIN_CHAR '?'
Index: po/ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/gcc/po/ChangeLog,v
retrieving revision 1.34
diff -u -r1.34 ChangeLog
--- ChangeLog 2000/10/22 11:02:11 1.34
+++ ChangeLog 2000/11/06 00:04:33
@@ -1,3 +1,7 @@
+2000-11-05 David O'Brien <obrien@dragon.nuxi.com>
+
+ * POTFILES.in: Add config/alpha/freebsd.h
+
2000-10-21 Geoffrey Keating <geoffk@cygnus.com>
* POTFILES.in: Add config/i386/netware.h and config/netware.h.
Index: po/POTFILES.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/po/POTFILES.in,v
retrieving revision 1.34
diff -u -r1.34 POTFILES.in
--- POTFILES.in 2000/10/28 17:59:06 1.34
+++ POTFILES.in 2000/11/06 00:04:33
@@ -86,6 +86,7 @@
config/alpha/alpha.h
config/alpha/alpha32.h
config/alpha/elf.h
+config/alpha/freebsd.h
config/alpha/linux-ecoff.h
config/alpha/linux-elf.h
config/alpha/linux.h