1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
/* XXX */
/*
* This file was derived from source obtained from NetBSD/Alpha which
* is publicly available for ftp. The patch was developed by cgd@netbsd.org
* during the time he worked at CMU. He claims that CMU own this patch
* to gcc and that they have not (and will not) release the patch for
* incorporation in FSF sources. We are supposedly able to use the patch,
* but we are not allowed to forward it back to FSF for inclusion in
* their source releases.
*
* This all has me (jb@freebsd.org) confused because (a) I see no copyright
* messages that tell me that use is restricted; and (b) I expected that
* the patch was originally developed from other files which are subject
* to GPL.
*
* Use of this file is restricted until its CMU ownership is tested.
*/
#include "alpha/alpha.h"
#include "alpha/elf.h"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
/* Look for the include files in the system-defined places. */
#undef GPLUSPLUS_INCLUDE_DIR
#define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
#undef GCC_INCLUDE_DIR
#define GCC_INCLUDE_DIR "/usr/include"
#undef INCLUDE_DEFAULTS
#define INCLUDE_DEFAULTS \
{ \
{ GPLUSPLUS_INCLUDE_DIR, 1, 1 }, \
{ GCC_INCLUDE_DIR, 0, 0 }, \
{ 0, 0, 0 } \
}
/* Under FreeBSD, the normal location of the `ld' and `as' programs is the
/usr/bin directory. */
#undef MD_EXEC_PREFIX
#define MD_EXEC_PREFIX "/usr/bin/"
/* Under FreeBSD, the normal location of the various *crt*.o files is the
/usr/lib directory. */
#undef MD_STARTFILE_PREFIX
#define MD_STARTFILE_PREFIX "/usr/lib/"
/* Provide a CPP_SPEC appropriate for FreeBSD. Current we just deal with
the GCC option `-posix'. */
#undef CPP_SPEC
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
/* Provide an ASM_SPEC appropriate for FreeBSD. */
#undef ASM_SPEC
#define ASM_SPEC " %|"
#undef ASM_FINAL_SPEC
/* 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)); /* at */
/* Show that we need a GP when profiling. */
#define TARGET_PROFILING_NEEDS_GP
#define bsd4_4
#undef HAS_INIT_SECTION
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)");
#undef SDB_DEBUGGING_INFO
#define SDB_DEBUGGING_INFO
#undef DBS_DEBUGGING_INFO
#define DBX_DEBUGGING_INFO
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE \
((len > 1 && !strncmp (str, "gsdb", len)) ? SDB_DEBUG : DBX_DEBUG)
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -D__alpha -D__alpha__ -D__ELF__ -D__FreeBSD__=3 -Asystem(unix) -Asystem(FreeBSD) -Acpu(alpha) -Amachine(alpha)"
#undef LINK_SPEC
#define LINK_SPEC "-m elf64alpha \
%{O*:-O3} %{!O*:-O1} \
%{assert*} \
%{shared:-shared} \
%{!shared: \
-dc -dp \
%{!nostdlib:%{!r*:%{!e*:-e _start}}} \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
%{static:-static}}"
/* 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}}} \
%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
the file which provides part of the support for getting C++
file-scope static object deconstructed after exiting `main' */
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{!shared:crtend.o%s} %{shared:crtendS.o%s}"
/* Handle #pragma weak and #pragma pack. */
#define HANDLE_SYSV_PRAGMA
#undef SET_ASM_OP
#define SET_ASM_OP ".set"
|