summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2002-05-07 23:28:45 +0000
committerobrien <obrien@FreeBSD.org>2002-05-07 23:28:45 +0000
commit3c0c83176102700daccbd554604e5b5efd759a38 (patch)
tree43e8a8d97aa2bad0310842732d182a1c5fedcc01 /contrib
parent86f528a4ae3d73b85653e62e055ad54639c702f0 (diff)
downloadFreeBSD-src-3c0c83176102700daccbd554604e5b5efd759a38.zip
FreeBSD-src-3c0c83176102700daccbd554604e5b5efd759a38.tar.gz
Alpha MD bits for Gcc 3.1.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/gcc/config/alpha/freebsd.h152
1 files changed, 37 insertions, 115 deletions
diff --git a/contrib/gcc/config/alpha/freebsd.h b/contrib/gcc/config/alpha/freebsd.h
index 1584f42..d8f71f0 100644
--- a/contrib/gcc/config/alpha/freebsd.h
+++ b/contrib/gcc/config/alpha/freebsd.h
@@ -1,6 +1,6 @@
-/* Definitions for DEC AXP Alpha running FreeBSD using the ELF format
- Copyright (C) 2000 Free Software Foundation, Inc.
- Contributed by David O'Brien <obrien@FreeBSD.org>
+/* Definitions for DEC Alpha/AXP running FreeBSD using the ELF format
+ Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+ Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
This file is part of GNU CC.
@@ -16,26 +16,26 @@ 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. */
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
-/* This is used on Alpha platforms that use the ELF format.
- This was taken from the NetBSD configuration, and modified
- for FreeBSD/Alpha by Hidetoshi Shimokawa <simokawa@FreeBSD.ORG> */
/* $FreeBSD$ */
-/* Names to predefine in the preprocessor for this target machine.
- XXX FreeBSD, by convention, shouldn't do __alpha, but lots of applications
- expect it because that's what OSF/1 does. */
+/* 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_PREDEFINES
-#define CPP_PREDEFINES \
- "-D__alpha__ -D__alpha -Acpu(alpha) -Amachine(alpha)" \
- FBSD_CPP_PREDEFINES
+#undef CPP_SPEC
+#define CPP_SPEC "%(cpp_cpu) %(cpp_subtarget) -D__ELF__ \
+ %{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 \
+#undef LINK_SPEC
+#define LINK_SPEC "%{G*} %{relax:-relax} \
%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
%{Wl,*:%*} \
%{assert*} %{R*} %{rpath*} %{defsym*} \
@@ -47,31 +47,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{!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. */
+/* We now have to provide a STARTFILE_SPEC because of a moronic pigheaded
+ Linuxism(glibc'ism) that was added to alpha/elf.h. */
-#undef ASM_SPEC
-#define ASM_SPEC " %| %{mcpu=*:-m%*}"
-
-#undef ASM_FINAL_SPEC
-
-/* Provide a STARTFILE_SPEC for FreeBSD that is compatible with the
- non-aout version used on i386. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
-/* Provide a ENDFILE_SPEC appropriate for ELF. Here we tack on the
- magical crtend.o file which provides part of the support for
- getting C++ file-scope static object constructed before entering
- `main', followed by a normal ELF "finalizer" file, `crtn.o'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+ #undef STARTFILE_SPEC
+ #define STARTFILE_SPEC \
+ "%{!shared: \
+ %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\
+ crti.o%s %{shared:crtbeginS.o%s}%{!shared:crtbegin.o%s}"
/************************[ Target stuff ]***********************************/
@@ -83,6 +66,12 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* 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
+
/* Handle cross-compilation on 32-bits machines (such as i386) for 64-bits
machines (Alpha in this case). */
@@ -98,14 +87,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* This is the pseudo-op used to generate a 64-bit word of data with a
specific value in some section. */
-#undef INT_ASM_OP
-#define INT_ASM_OP ".quad"
-
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (FreeBSD/Alpha ELF)");
+#define TARGET_ELF 1
#define TARGET_AOUT (0)
-#define TARGET_ELF (1)
#define TARGET_UNDERSCORES (0)
#undef OBJECT_FORMAT_COFF
@@ -118,7 +104,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Show that we need a GP when profiling. */
#undef TARGET_PROFILING_NEEDS_GP
-#define TARGET_PROFILING_NEEDS_GP
+#define TARGET_PROFILING_NEEDS_GP 1
/* We always use gas here, so we don't worry about ECOFF assembler problems. */
#undef TARGET_GAS
@@ -127,76 +113,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/************************[ Assembler stuff ]********************************/
-/* This is how to begin an assembly language file.
- ELF also needs a .version. */
-
-#undef ASM_FILE_START
-#define ASM_FILE_START(FILE) \
- { \
- alpha_write_verstamp (FILE); \
- output_file_directive ((FILE), main_input_filename); \
- fprintf ((FILE), "\t.version\t\"01.01\"\n"); \
- fprintf ((FILE), "\t.set noat\n"); \
- }
-
-extern void output_file_directive ();
-extern void alpha_output_lineno ();
-
-#undef ASM_OUTPUT_SOURCE_LINE
-#define ASM_OUTPUT_SOURCE_LINE(STREAM, LINE) \
- alpha_output_lineno ((STREAM), (LINE))
-
-/* Switch into a generic section.
- This is currently only used to support section attributes.
-
- We make the section read-only and executable for a function decl,
- read-only for a const data decl, and writable for a non-const data decl. */
-#undef ASM_OUTPUT_SECTION_NAME
-#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC) \
- fprintf ((FILE), ".section\t%s,\"%s\",@progbits\n", (NAME), \
- (DECL) && TREE_CODE (DECL) == FUNCTION_DECL ? "ax" : \
- (DECL) && DECL_READONLY_SECTION ((DECL), (RELOC)) ? "a" : "aw")
-
-/* A C statement or statements to switch to the appropriate
- section for output of DECL. DECL is either a `VAR_DECL' node
- or a constant of some sort. RELOC indicates whether forming
- the initial value of DECL requires link-time relocations. */
-
-#undef SELECT_SECTION
-#define SELECT_SECTION(DECL, RELOC) \
- { \
- if (TREE_CODE (DECL) == STRING_CST) \
- { \
- if (! flag_writable_strings) \
- const_section (); \
- else \
- data_section (); \
- } \
- else if (TREE_CODE (DECL) == VAR_DECL) \
- { \
- if ((flag_pic && (RELOC)) \
- || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \
- || !DECL_INITIAL (DECL) \
- || (DECL_INITIAL (DECL) != error_mark_node \
- && !TREE_CONSTANT (DECL_INITIAL (DECL)))) \
- data_section (); \
- else \
- const_section (); \
- } \
- else \
- const_section (); \
- }
-
-/* This is how we tell the assembler that two symbols have the same value. */
-
-#undef ASM_OUTPUT_DEF
-#define ASM_OUTPUT_DEF(FILE,NAME1,NAME2) \
- do { \
- assemble_name((FILE), (NAME1)); \
- fputs(" = ", (FILE)); \
- assemble_name((FILE), (NAME2)); \
- fputc('\n', (FILE)); \
- } while (0)
/************************[ Debugger stuff ]*********************************/
@@ -206,3 +122,9 @@ extern void alpha_output_lineno ();
#undef DBX_CONTIN_CHAR
#define DBX_CONTIN_CHAR '?'
+
+/* Don't default to pcc-struct-return, we want to retain compatibility with
+ older FreeBSD releases AND pcc-struct-return may not be reentrant. */
+
+#undef DEFAULT_PCC_STRUCT_RETURN
+#define DEFAULT_PCC_STRUCT_RETURN 0
OpenPOWER on IntegriCloud