]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/gcc/config/rs6000/netbsd.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / gcc / config / rs6000 / netbsd.h
1 /* Definitions of target machine for GNU compiler,
2    for PowerPC NetBSD systems.
3    Copyright 2002, 2003 Free Software Foundation, Inc.
4    Contributed by Wasabi Systems, Inc.
5
6    This file is part of GCC.
7
8    GCC is free software; you can redistribute it and/or modify it
9    under the terms of the GNU General Public License as published
10    by the Free Software Foundation; either version 2, or (at your
11    option) any later version.
12
13    GCC is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with GCC; see the file COPYING.  If not, write to the
20    Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
21    MA 02110-1301, USA.  */
22
23 #undef  TARGET_OS_CPP_BUILTINS  /* FIXME: sysv4.h should not define this! */
24 #define TARGET_OS_CPP_BUILTINS()                \
25   do                                            \
26     {                                           \
27       NETBSD_OS_CPP_BUILTINS_ELF();             \
28       builtin_define ("__powerpc__");           \
29       builtin_assert ("cpu=powerpc");           \
30       builtin_assert ("machine=powerpc");       \
31     }                                           \
32   while (0)
33
34 /* Override the default from rs6000.h to avoid conflicts with macros
35    defined in NetBSD header files.  */
36
37 #undef  RS6000_CPU_CPP_ENDIAN_BUILTINS
38 #define RS6000_CPU_CPP_ENDIAN_BUILTINS()        \
39   do                                            \
40     {                                           \
41       if (BYTES_BIG_ENDIAN)                     \
42         {                                       \
43           builtin_define ("__BIG_ENDIAN__");    \
44           builtin_assert ("machine=bigendian"); \
45         }                                       \
46       else                                      \
47         {                                       \
48           builtin_define ("__LITTLE_ENDIAN__"); \
49           builtin_assert ("machine=littleendian"); \
50         }                                       \
51     }                                           \
52   while (0)
53
54 /* Make GCC agree with <machine/ansi.h>.  */
55
56 #undef  SIZE_TYPE
57 #define SIZE_TYPE "unsigned int"
58
59 #undef  PTRDIFF_TYPE
60 #define PTRDIFF_TYPE "int"
61
62 /* Undo the spec mess from sysv4.h, and just define the specs
63    the way NetBSD systems actually expect.  */
64
65 #undef  CPP_SPEC
66 #define CPP_SPEC NETBSD_CPP_SPEC
67
68 #undef  LINK_SPEC
69 #define LINK_SPEC \
70   "%{!msdata=none:%{G*}} %{msdata=none:-G0} \
71    %(netbsd_link_spec)"
72
73 #define NETBSD_ENTRY_POINT "_start"
74
75 #undef  STARTFILE_SPEC
76 #define STARTFILE_SPEC NETBSD_STARTFILE_SPEC
77
78 #undef  ENDFILE_SPEC
79 #define ENDFILE_SPEC \
80   "crtsavres%O%s %(netbsd_endfile_spec)"
81
82 #undef  LIB_SPEC
83 #define LIB_SPEC NETBSD_LIB_SPEC
84
85 #undef  SUBTARGET_EXTRA_SPECS
86 #define SUBTARGET_EXTRA_SPECS                                   \
87   { "netbsd_link_spec",         NETBSD_LINK_SPEC_ELF },         \
88   { "netbsd_entry_point",       NETBSD_ENTRY_POINT },           \
89   { "netbsd_endfile_spec",      NETBSD_ENDFILE_SPEC },
90
91
92 #undef  TARGET_VERSION
93 #define TARGET_VERSION fprintf (stderr, " (NetBSD/powerpc ELF)");