xref: /openbsd/gnu/gcc/gcc/config/alpha/vms.h (revision 404b540a)
1*404b540aSrobert /* Output variables, constants and external declarations, for GNU compiler.
2*404b540aSrobert    Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2004, 2005
3*404b540aSrobert    Free Software Foundation, Inc.
4*404b540aSrobert 
5*404b540aSrobert This file is part of GCC.
6*404b540aSrobert 
7*404b540aSrobert GCC is free software; you can redistribute it and/or modify
8*404b540aSrobert it under the terms of the GNU General Public License as published by
9*404b540aSrobert the Free Software Foundation; either version 2, or (at your option)
10*404b540aSrobert any later version.
11*404b540aSrobert 
12*404b540aSrobert GCC is distributed in the hope that it will be useful,
13*404b540aSrobert but WITHOUT ANY WARRANTY; without even the implied warranty of
14*404b540aSrobert MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*404b540aSrobert GNU General Public License for more details.
16*404b540aSrobert 
17*404b540aSrobert You should have received a copy of the GNU General Public License
18*404b540aSrobert along with GCC; see the file COPYING.  If not, write to
19*404b540aSrobert the Free Software Foundation, 51 Franklin Street, Fifth Floor,
20*404b540aSrobert Boston, MA 02110-1301, USA.  */
21*404b540aSrobert 
22*404b540aSrobert #define TARGET_OBJECT_SUFFIX ".obj"
23*404b540aSrobert #define TARGET_EXECUTABLE_SUFFIX ".exe"
24*404b540aSrobert 
25*404b540aSrobert /* This enables certain macros in alpha.h, which will make an indirect
26*404b540aSrobert    reference to an external symbol an invalid address.  This needs to be
27*404b540aSrobert    defined before we include alpha.h, since it determines which macros
28*404b540aSrobert    are used for GO_IF_*.  */
29*404b540aSrobert 
30*404b540aSrobert #define NO_EXTERNAL_INDIRECT_ADDRESS
31*404b540aSrobert 
32*404b540aSrobert #define TARGET_OS_CPP_BUILTINS()		\
33*404b540aSrobert     do {					\
34*404b540aSrobert 	builtin_define_std ("vms");		\
35*404b540aSrobert 	builtin_define_std ("VMS");		\
36*404b540aSrobert 	builtin_define ("__ALPHA");		\
37*404b540aSrobert 	builtin_assert ("system=vms");		\
38*404b540aSrobert 	if (TARGET_FLOAT_VAX)			\
39*404b540aSrobert 	  builtin_define ("__G_FLOAT");		\
40*404b540aSrobert 	else					\
41*404b540aSrobert 	  builtin_define ("__IEEE_FLOAT");	\
42*404b540aSrobert     } while (0)
43*404b540aSrobert 
44*404b540aSrobert #undef TARGET_DEFAULT
45*404b540aSrobert #define TARGET_DEFAULT (MASK_FPREGS|MASK_GAS)
46*404b540aSrobert #undef TARGET_ABI_OPEN_VMS
47*404b540aSrobert #define TARGET_ABI_OPEN_VMS 1
48*404b540aSrobert 
49*404b540aSrobert #undef TARGET_NAME
50*404b540aSrobert #define TARGET_NAME "OpenVMS/Alpha"
51*404b540aSrobert #undef TARGET_VERSION
52*404b540aSrobert #define TARGET_VERSION fprintf (stderr, " (%s)", TARGET_NAME);
53*404b540aSrobert 
54*404b540aSrobert #undef PCC_STATIC_STRUCT_RETURN
55*404b540aSrobert 
56*404b540aSrobert /* "long" is 32 bits, but 64 bits for Ada.  */
57*404b540aSrobert #undef LONG_TYPE_SIZE
58*404b540aSrobert #define LONG_TYPE_SIZE 32
59*404b540aSrobert #define ADA_LONG_TYPE_SIZE 64
60*404b540aSrobert 
61*404b540aSrobert /* Pointer is 32 bits but the hardware has 64-bit addresses, sign extended.  */
62*404b540aSrobert #undef POINTER_SIZE
63*404b540aSrobert #define POINTER_SIZE 32
64*404b540aSrobert #define POINTERS_EXTEND_UNSIGNED 0
65*404b540aSrobert 
66*404b540aSrobert #define MAX_OFILE_ALIGNMENT 524288  /* 8 x 2^16 by DEC Ada Test CD40VRA */
67*404b540aSrobert 
68*404b540aSrobert #undef FIXED_REGISTERS
69*404b540aSrobert #define FIXED_REGISTERS  \
70*404b540aSrobert  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
71*404b540aSrobert   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, \
72*404b540aSrobert   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
73*404b540aSrobert   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }
74*404b540aSrobert 
75*404b540aSrobert #undef CALL_USED_REGISTERS
76*404b540aSrobert #define CALL_USED_REGISTERS  \
77*404b540aSrobert  {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
78*404b540aSrobert   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
79*404b540aSrobert   1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, \
80*404b540aSrobert   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
81*404b540aSrobert 
82*404b540aSrobert /* List the order in which to allocate registers.  Each register must be
83*404b540aSrobert    listed once, even those in FIXED_REGISTERS.
84*404b540aSrobert 
85*404b540aSrobert    We allocate in the following order:
86*404b540aSrobert    $f1			(nonsaved floating-point register)
87*404b540aSrobert    $f10-$f15		(likewise)
88*404b540aSrobert    $f22-$f30		(likewise)
89*404b540aSrobert    $f21-$f16		(likewise, but input args)
90*404b540aSrobert    $f0			(nonsaved, but return value)
91*404b540aSrobert    $f2-$f9		(saved floating-point registers)
92*404b540aSrobert    $1			(nonsaved integer registers)
93*404b540aSrobert    $22-$25		(likewise)
94*404b540aSrobert    $28			(likewise)
95*404b540aSrobert    $0			(likewise, but return value)
96*404b540aSrobert    $21-$16		(likewise, but input args)
97*404b540aSrobert    $27			(procedure value in OSF, nonsaved in NT)
98*404b540aSrobert    $2-$8		(saved integer registers)
99*404b540aSrobert    $9-$14		(saved integer registers)
100*404b540aSrobert    $26			(return PC)
101*404b540aSrobert    $15			(frame pointer)
102*404b540aSrobert    $29			(global pointer)
103*404b540aSrobert    $30, $31, $f31	(stack pointer and always zero/ap & fp)  */
104*404b540aSrobert 
105*404b540aSrobert #undef REG_ALLOC_ORDER
106*404b540aSrobert #define REG_ALLOC_ORDER		\
107*404b540aSrobert   {33,					\
108*404b540aSrobert    42, 43, 44, 45, 46, 47,		\
109*404b540aSrobert    54, 55, 56, 57, 58, 59, 60, 61, 62,	\
110*404b540aSrobert    53, 52, 51, 50, 49, 48,		\
111*404b540aSrobert    32,					\
112*404b540aSrobert    34, 35, 36, 37, 38, 39, 40, 41,	\
113*404b540aSrobert    1,					\
114*404b540aSrobert    22, 23, 24, 25,			\
115*404b540aSrobert    28,					\
116*404b540aSrobert    0,					\
117*404b540aSrobert    21, 20, 19, 18, 17, 16,		\
118*404b540aSrobert    27,					\
119*404b540aSrobert    2, 3, 4, 5, 6, 7, 8,			\
120*404b540aSrobert    9, 10, 11, 12, 13, 14,		\
121*404b540aSrobert    26,					\
122*404b540aSrobert    15,					\
123*404b540aSrobert    29,					\
124*404b540aSrobert    30, 31, 63 }
125*404b540aSrobert 
126*404b540aSrobert #undef HARD_FRAME_POINTER_REGNUM
127*404b540aSrobert #define HARD_FRAME_POINTER_REGNUM 29
128*404b540aSrobert 
129*404b540aSrobert /* Define registers used by the epilogue and return instruction.  */
130*404b540aSrobert #undef EPILOGUE_USES
131*404b540aSrobert #define EPILOGUE_USES(REGNO)    ((REGNO) == 26 || (REGNO) == 29)
132*404b540aSrobert 
133*404b540aSrobert #undef CAN_ELIMINATE
134*404b540aSrobert #define CAN_ELIMINATE(FROM, TO)  \
135*404b540aSrobert ((TO) != STACK_POINTER_REGNUM || ! alpha_using_fp ())
136*404b540aSrobert 
137*404b540aSrobert #undef INITIAL_ELIMINATION_OFFSET
138*404b540aSrobert #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)			\
139*404b540aSrobert { switch (FROM)								\
140*404b540aSrobert     {									\
141*404b540aSrobert     case FRAME_POINTER_REGNUM:						\
142*404b540aSrobert       (OFFSET) = alpha_sa_size () + alpha_pv_save_size ();		\
143*404b540aSrobert       break;								\
144*404b540aSrobert     case ARG_POINTER_REGNUM:						\
145*404b540aSrobert       (OFFSET) = (ALPHA_ROUND (alpha_sa_size () + alpha_pv_save_size ()	\
146*404b540aSrobert 			       + get_frame_size ()			\
147*404b540aSrobert 			       + current_function_pretend_args_size)	\
148*404b540aSrobert 		  - current_function_pretend_args_size);		\
149*404b540aSrobert       break;								\
150*404b540aSrobert     default:								\
151*404b540aSrobert       gcc_unreachable ();						\
152*404b540aSrobert     }									\
153*404b540aSrobert   if ((TO) == STACK_POINTER_REGNUM)					\
154*404b540aSrobert     (OFFSET) += ALPHA_ROUND (current_function_outgoing_args_size);	\
155*404b540aSrobert }
156*404b540aSrobert 
157*404b540aSrobert /* Define a data type for recording info about an argument list
158*404b540aSrobert    during the scan of that argument list.  This data type should
159*404b540aSrobert    hold all necessary information about the function itself
160*404b540aSrobert    and about the args processed so far, enough to enable macros
161*404b540aSrobert    such as FUNCTION_ARG to determine where the next arg should go.
162*404b540aSrobert 
163*404b540aSrobert    On Alpha/VMS, this is a structure that contains the number of
164*404b540aSrobert    arguments and, for each argument, the datatype of that argument.
165*404b540aSrobert 
166*404b540aSrobert    The number of arguments is a number of words of arguments scanned so far.
167*404b540aSrobert    Thus 6 or more means all following args should go on the stack.  */
168*404b540aSrobert 
169*404b540aSrobert enum avms_arg_type {I64, FF, FD, FG, FS, FT};
170*404b540aSrobert typedef struct {int num_args; enum avms_arg_type atypes[6];} avms_arg_info;
171*404b540aSrobert 
172*404b540aSrobert #undef CUMULATIVE_ARGS
173*404b540aSrobert #define CUMULATIVE_ARGS avms_arg_info
174*404b540aSrobert 
175*404b540aSrobert /* Initialize a variable CUM of type CUMULATIVE_ARGS
176*404b540aSrobert    for a call to a function whose data type is FNTYPE.
177*404b540aSrobert    For a library call, FNTYPE is 0.  */
178*404b540aSrobert 
179*404b540aSrobert #undef INIT_CUMULATIVE_ARGS
180*404b540aSrobert #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
181*404b540aSrobert   (CUM).num_args = 0;						\
182*404b540aSrobert   (CUM).atypes[0] = (CUM).atypes[1] = (CUM).atypes[2] = I64;	\
183*404b540aSrobert   (CUM).atypes[3] = (CUM).atypes[4] = (CUM).atypes[5] = I64;
184*404b540aSrobert 
185*404b540aSrobert #undef FUNCTION_ARG_ADVANCE
186*404b540aSrobert #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)			\
187*404b540aSrobert   if (targetm.calls.must_pass_in_stack (MODE, TYPE))			\
188*404b540aSrobert     (CUM).num_args += 6;						\
189*404b540aSrobert   else									\
190*404b540aSrobert     {									\
191*404b540aSrobert       if ((CUM).num_args < 6)						\
192*404b540aSrobert         (CUM).atypes[(CUM).num_args] = alpha_arg_type (MODE);		\
193*404b540aSrobert 									\
194*404b540aSrobert      (CUM).num_args += ALPHA_ARG_SIZE (MODE, TYPE, NAMED);		\
195*404b540aSrobert     }
196*404b540aSrobert 
197*404b540aSrobert /* ABI has stack checking, but it's broken.  */
198*404b540aSrobert #undef STACK_CHECK_BUILTIN
199*404b540aSrobert #define STACK_CHECK_BUILTIN 0
200*404b540aSrobert 
201*404b540aSrobert #define READONLY_DATA_SECTION_ASM_OP "\t.rdata"
202*404b540aSrobert #define CTORS_SECTION_ASM_OP "\t.ctors"
203*404b540aSrobert #define DTORS_SECTION_ASM_OP "\t.dtors"
204*404b540aSrobert 
205*404b540aSrobert #undef ASM_OUTPUT_ADDR_DIFF_ELT
206*404b540aSrobert #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) gcc_unreachable ()
207*404b540aSrobert 
208*404b540aSrobert #undef ASM_OUTPUT_ADDR_VEC_ELT
209*404b540aSrobert #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
210*404b540aSrobert   fprintf (FILE, "\t.quad $L%d\n", (VALUE))
211*404b540aSrobert 
212*404b540aSrobert #undef CASE_VECTOR_MODE
213*404b540aSrobert #define CASE_VECTOR_MODE DImode
214*404b540aSrobert #undef CASE_VECTOR_PC_RELATIVE
215*404b540aSrobert 
216*404b540aSrobert #undef ASM_OUTPUT_CASE_LABEL
217*404b540aSrobert #define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLEINSN)	\
218*404b540aSrobert { ASM_OUTPUT_ALIGN (FILE, 3); (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM); }
219*404b540aSrobert 
220*404b540aSrobert /* This says how to output assembler code to declare an
221*404b540aSrobert    uninitialized external linkage data object.  */
222*404b540aSrobert 
223*404b540aSrobert #define COMMON_ASM_OP "\t.comm\t"
224*404b540aSrobert 
225*404b540aSrobert #undef ASM_OUTPUT_ALIGNED_COMMON
226*404b540aSrobert #define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\
227*404b540aSrobert do {									\
228*404b540aSrobert   fprintf ((FILE), "%s", COMMON_ASM_OP);				\
229*404b540aSrobert   assemble_name ((FILE), (NAME));					\
230*404b540aSrobert   fprintf ((FILE), "," HOST_WIDE_INT_PRINT_UNSIGNED ",%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
231*404b540aSrobert } while (0)
232*404b540aSrobert 
233*404b540aSrobert 
234*404b540aSrobert /* Output assembler code for a block containing the constant parts
235*404b540aSrobert    of a trampoline, leaving space for the variable parts.
236*404b540aSrobert 
237*404b540aSrobert    The trampoline should set the static chain pointer to value placed
238*404b540aSrobert    into the trampoline and should branch to the specified routine.
239*404b540aSrobert    Note that $27 has been set to the address of the trampoline, so we can
240*404b540aSrobert    use it for addressability of the two data items.  */
241*404b540aSrobert 
242*404b540aSrobert #undef TRAMPOLINE_TEMPLATE
243*404b540aSrobert #define TRAMPOLINE_TEMPLATE(FILE)		\
244*404b540aSrobert {						\
245*404b540aSrobert   fprintf (FILE, "\t.quad 0\n");		\
246*404b540aSrobert   fprintf (FILE, "\t.linkage __tramp\n");	\
247*404b540aSrobert   fprintf (FILE, "\t.quad 0\n");		\
248*404b540aSrobert }
249*404b540aSrobert 
250*404b540aSrobert /* Length in units of the trampoline for entering a nested function.  */
251*404b540aSrobert 
252*404b540aSrobert #undef TRAMPOLINE_SIZE
253*404b540aSrobert #define TRAMPOLINE_SIZE    32
254*404b540aSrobert 
255*404b540aSrobert /* The alignment of a trampoline, in bits.  */
256*404b540aSrobert 
257*404b540aSrobert #undef TRAMPOLINE_ALIGNMENT
258*404b540aSrobert #define TRAMPOLINE_ALIGNMENT  64
259*404b540aSrobert 
260*404b540aSrobert /* Emit RTL insns to initialize the variable parts of a trampoline.
261*404b540aSrobert    FNADDR is an RTX for the address of the function's pure code.
262*404b540aSrobert    CXT is an RTX for the static chain value for the function.  */
263*404b540aSrobert 
264*404b540aSrobert #undef INITIALIZE_TRAMPOLINE
265*404b540aSrobert #define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
266*404b540aSrobert   alpha_initialize_trampoline (TRAMP, FNADDR, CXT, 16, 24, -1)
267*404b540aSrobert 
268*404b540aSrobert /* Control how constructors and destructors are emitted.  */
269*404b540aSrobert #define TARGET_ASM_CONSTRUCTOR  vms_asm_out_constructor
270*404b540aSrobert #define TARGET_ASM_DESTRUCTOR   vms_asm_out_destructor
271*404b540aSrobert 
272*404b540aSrobert #undef SDB_DEBUGGING_INFO
273*404b540aSrobert #undef MIPS_DEBUGGING_INFO
274*404b540aSrobert #undef DBX_DEBUGGING_INFO
275*404b540aSrobert 
276*404b540aSrobert #define DWARF2_DEBUGGING_INFO 1
277*404b540aSrobert #define VMS_DEBUGGING_INFO 1
278*404b540aSrobert 
279*404b540aSrobert #define DWARF2_UNWIND_INFO 1
280*404b540aSrobert 
281*404b540aSrobert #undef EH_RETURN_HANDLER_RTX
282*404b540aSrobert #define EH_RETURN_HANDLER_RTX \
283*404b540aSrobert   gen_rtx_MEM (Pmode, plus_constant (stack_pointer_rtx, 8))
284*404b540aSrobert 
285*404b540aSrobert #define LINK_EH_SPEC "vms-dwarf2eh.o%s "
286*404b540aSrobert 
287*404b540aSrobert #define MD_UNWIND_SUPPORT "config/alpha/vms-unwind.h"
288*404b540aSrobert 
289*404b540aSrobert /* This is how to output an assembler line
290*404b540aSrobert    that says to advance the location counter
291*404b540aSrobert    to a multiple of 2**LOG bytes.  */
292*404b540aSrobert 
293*404b540aSrobert #undef ASM_OUTPUT_ALIGN
294*404b540aSrobert #define ASM_OUTPUT_ALIGN(FILE,LOG)	\
295*404b540aSrobert     fprintf (FILE, "\t.align %d\n", LOG);
296*404b540aSrobert 
297*404b540aSrobert /* Switch into a generic section.  */
298*404b540aSrobert #define TARGET_ASM_NAMED_SECTION vms_asm_named_section
299*404b540aSrobert 
300*404b540aSrobert #define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)				\
301*404b540aSrobert   do {	fprintf ((FILE), "\t.literals\n");				\
302*404b540aSrobert 	in_section = NULL;						\
303*404b540aSrobert 	fprintf ((FILE), "\t");						\
304*404b540aSrobert 	assemble_name (FILE, LABEL1);					\
305*404b540aSrobert 	fprintf (FILE, " = ");						\
306*404b540aSrobert 	assemble_name (FILE, LABEL2);					\
307*404b540aSrobert 	fprintf (FILE, "\n");						\
308*404b540aSrobert   } while (0)
309*404b540aSrobert 
310*404b540aSrobert #undef PREFERRED_DEBUGGING_TYPE
311*404b540aSrobert #define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
312*404b540aSrobert 
313*404b540aSrobert #define ASM_PN_FORMAT "%s___%lu"
314*404b540aSrobert 
315*404b540aSrobert /* ??? VMS uses different linkage.  */
316*404b540aSrobert #undef TARGET_ASM_OUTPUT_MI_THUNK
317*404b540aSrobert 
318*404b540aSrobert #undef ASM_SPEC
319*404b540aSrobert #undef ASM_FINAL_SPEC
320*404b540aSrobert 
321*404b540aSrobert /* The VMS convention is to always provide minimal debug info
322*404b540aSrobert    for a traceback unless specifically overridden.  Defaulting this here
323*404b540aSrobert    is a kludge.  */
324*404b540aSrobert 
325*404b540aSrobert #define OPTIMIZATION_OPTIONS(OPTIMIZE, OPTIMIZE_SIZE) \
326*404b540aSrobert {                                                  \
327*404b540aSrobert    write_symbols = VMS_DEBUG;                      \
328*404b540aSrobert    debug_info_level = (enum debug_info_level) 1;   \
329*404b540aSrobert }
330*404b540aSrobert 
331*404b540aSrobert /* Override traceback debug info on -g0.  */
332*404b540aSrobert #undef OVERRIDE_OPTIONS
333*404b540aSrobert #define OVERRIDE_OPTIONS                           \
334*404b540aSrobert {                                                  \
335*404b540aSrobert    if (write_symbols == NO_DEBUG)                  \
336*404b540aSrobert      debug_info_level = (enum debug_info_level) 0; \
337*404b540aSrobert    override_options ();                            \
338*404b540aSrobert }
339*404b540aSrobert 
340*404b540aSrobert /* Link with vms-dwarf2.o if -g (except -g0). This causes the
341*404b540aSrobert    VMS link to pull all the dwarf2 debug sections together.  */
342*404b540aSrobert #undef LINK_SPEC
343*404b540aSrobert #define LINK_SPEC "%{g:-g vms-dwarf2.o%s} %{g0} %{g1:-g1 vms-dwarf2.o%s} \
344*404b540aSrobert %{g2:-g2 vms-dwarf2.o%s} %{g3:-g3 vms-dwarf2.o%s} %{shared} %{v} %{map}"
345*404b540aSrobert 
346*404b540aSrobert #undef STARTFILE_SPEC
347*404b540aSrobert #define STARTFILE_SPEC "%{!shared:%{mvms-return-codes:vcrt0.o%s} \
348*404b540aSrobert %{!mvms-return-codes:pcrt0.o%s}}"
349*404b540aSrobert 
350*404b540aSrobert #undef LIB_SPEC
351*404b540aSrobert #define LIB_SPEC "-lc"
352*404b540aSrobert 
353*404b540aSrobert #define NAME__MAIN "__gccmain"
354*404b540aSrobert #define SYMBOL__MAIN __gccmain
355*404b540aSrobert 
356*404b540aSrobert #define MD_EXEC_PREFIX "/gnu/lib/gcc-lib/"
357*404b540aSrobert #define MD_STARTFILE_PREFIX "/gnu/lib/gcc-lib/"
358*404b540aSrobert 
359*404b540aSrobert /* Specify the list of include file directories.  */
360*404b540aSrobert #define INCLUDE_DEFAULTS		   \
361*404b540aSrobert {					   \
362*404b540aSrobert   { "/gnu/lib/gcc-lib/include", 0, 0, 0 }, \
363*404b540aSrobert   { "/gnu_gxx_include", 0, 1, 1 },	   \
364*404b540aSrobert   { "/gnu_cc_include", 0, 0, 0 },	   \
365*404b540aSrobert   { "/gnu/include", 0, 0, 0 },	           \
366*404b540aSrobert   { 0, 0, 0, 0 }			   \
367*404b540aSrobert }
368*404b540aSrobert 
369*404b540aSrobert #define LONGLONG_STANDALONE 1
370