This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [PATCH] new FreeBSD/alpha support


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]