Mercurial > hg > CbC > CbC_gcc
comparison gcc/tsystem.h @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Get common system includes and various definitions and declarations | |
2 based on target macros. | |
3 Copyright (C) 2000, 2001, 2004, 2005, 2009 Free Software Foundation, Inc. | |
4 | |
5 This file is part of GCC. | |
6 | |
7 GCC is free software; you can redistribute it and/or modify it under | |
8 the terms of the GNU General Public License as published by the Free | |
9 Software Foundation; either version 3, or (at your option) any later | |
10 version. | |
11 | |
12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 Under Section 7 of GPL version 3, you are granted additional | |
18 permissions described in the GCC Runtime Library Exception, version | |
19 3.1, as published by the Free Software Foundation. | |
20 | |
21 You should have received a copy of the GNU General Public License and | |
22 a copy of the GCC Runtime Library Exception along with this program; | |
23 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
24 <http://www.gnu.org/licenses/>. */ | |
25 | |
26 #ifndef GCC_TSYSTEM_H | |
27 #define GCC_TSYSTEM_H | |
28 | |
29 /* System headers (e.g. stdio.h, stdlib.h, unistd.h) sometimes | |
30 indirectly include getopt.h. Our -I flags will cause gcc's gnu | |
31 getopt.h to be included, not the platform's copy. In the default | |
32 case, gnu getopt.h will provide us with a no-argument prototype | |
33 which will generate -Wstrict-prototypes warnings. None of the | |
34 target files actually use getopt, so it is safe to tell gnu | |
35 getopt.h we never need this prototype. */ | |
36 #ifndef HAVE_DECL_GETOPT | |
37 #define HAVE_DECL_GETOPT 1 | |
38 #endif | |
39 | |
40 /* We want everything from the glibc headers. */ | |
41 #define _GNU_SOURCE 1 | |
42 | |
43 /* GCC supplies these headers. */ | |
44 #include <stddef.h> | |
45 #include <float.h> | |
46 | |
47 #ifdef inhibit_libc | |
48 | |
49 #ifndef malloc | |
50 extern void *malloc (size_t); | |
51 #endif | |
52 | |
53 #ifndef free | |
54 extern void free (void *); | |
55 #endif | |
56 | |
57 #ifndef atexit | |
58 extern int atexit (void (*)(void)); | |
59 #endif | |
60 | |
61 #ifndef abort | |
62 extern void abort (void) __attribute__ ((__noreturn__)); | |
63 #endif | |
64 | |
65 #ifndef strlen | |
66 extern size_t strlen (const char *); | |
67 #endif | |
68 | |
69 #ifndef memcpy | |
70 extern void *memcpy (void *, const void *, size_t); | |
71 #endif | |
72 | |
73 #ifndef memset | |
74 extern void *memset (void *, int, size_t); | |
75 #endif | |
76 | |
77 #else /* ! inhibit_libc */ | |
78 /* We disable this when inhibit_libc, so that gcc can still be built without | |
79 needing header files first. */ | |
80 /* ??? This is not a good solution, since prototypes may be required in | |
81 some cases for correct code. */ | |
82 | |
83 /* GCC supplies this header. */ | |
84 #include <stdarg.h> | |
85 | |
86 /* All systems have this header. */ | |
87 #include <stdio.h> | |
88 | |
89 /* All systems have this header. */ | |
90 #include <sys/types.h> | |
91 | |
92 /* All systems have this header. */ | |
93 #include <errno.h> | |
94 | |
95 #ifndef errno | |
96 extern int errno; | |
97 #endif | |
98 | |
99 /* GCC (fixproto) guarantees these system headers exist. */ | |
100 #include <string.h> | |
101 #include <stdlib.h> | |
102 #include <unistd.h> | |
103 | |
104 /* GCC supplies this header. */ | |
105 #include <limits.h> | |
106 | |
107 /* GCC (fixproto) guarantees this system headers exists. */ | |
108 #include <time.h> | |
109 | |
110 #endif /* inhibit_libc */ | |
111 | |
112 /* Define a generic NULL if one hasn't already been defined. */ | |
113 #ifndef NULL | |
114 #define NULL 0 | |
115 #endif | |
116 | |
117 /* GCC always provides __builtin_alloca(x). */ | |
118 #undef alloca | |
119 #define alloca(x) __builtin_alloca(x) | |
120 | |
121 #ifdef ENABLE_RUNTIME_CHECKING | |
122 #define gcc_assert(EXPR) ((void)(!(EXPR) ? abort (), 0 : 0)) | |
123 #else | |
124 /* Include EXPR, so that unused variable warnings do not occur. */ | |
125 #define gcc_assert(EXPR) ((void)(0 && (EXPR))) | |
126 #endif | |
127 /* Use gcc_unreachable() to mark unreachable locations (like an | |
128 unreachable default case of a switch. Do not use gcc_assert(0). */ | |
129 #define gcc_unreachable() (abort ()) | |
130 | |
131 /* Filename handling macros. */ | |
132 #include "filenames.h" | |
133 | |
134 #endif /* ! GCC_TSYSTEM_H */ |