1 /* CPP Library. (Directive handling.)
2 Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 Contributed by Per Bothner, 1994-95.
5 Based on CCCP program by Paul Rubin, June 1986
6 Adapted to ANSI C, Richard Stallman, Jan 1987
8 This program is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 2, or (at your option) any
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
29 /* Stack of conditionals currently in progress
30 (including both successful and failing conditionals). */
33 struct if_stack
*next
;
34 unsigned int line
; /* Line where condition started. */
35 const cpp_hashnode
*mi_cmacro
;/* macro name for #ifndef around entire file */
36 bool skip_elses
; /* Can future #else / #elif be skipped? */
37 bool was_skipping
; /* If were skipping on entry. */
38 int type
; /* Most recent conditional for diagnostics. */
41 /* Contains a registered pragma or pragma namespace. */
42 typedef void (*pragma_cb
) (cpp_reader
*);
45 struct pragma_entry
*next
;
46 const cpp_hashnode
*pragma
; /* Name and length. */
52 struct pragma_entry
*space
;
56 /* Values for the origin field of struct directive. KANDR directives
57 come from traditional (K&R) C. STDC89 directives come from the
58 1989 C standard. EXTENSION directives are extensions. */
63 /* Values for the flags field of struct directive. COND indicates a
64 conditional; IF_COND an opening conditional. INCL means to treat
65 "..." and <...> as q-char and h-char sequences respectively. IN_I
66 means this directive should be handled even if -fpreprocessed is in
67 effect (these are the directives with callback hooks).
69 EXPAND is set on directives that are always macro-expanded. */
71 #define IF_COND (1 << 1)
74 #define EXPAND (1 << 4)
76 /* Defines one #-directive, including how to handle it. */
77 typedef void (*directive_handler
) (cpp_reader
*);
78 typedef struct directive directive
;
81 directive_handler handler
; /* Function to handle directive. */
82 const uchar
*name
; /* Name of directive. */
83 unsigned short length
; /* Length of name. */
84 unsigned char origin
; /* Origin of directive. */
85 unsigned char flags
; /* Flags describing this directive. */
88 /* Forward declarations. */
90 static void skip_rest_of_line (cpp_reader
*);
91 static void check_eol (cpp_reader
*);
92 static void start_directive (cpp_reader
*);
93 static void prepare_directive_trad (cpp_reader
*);
94 static void end_directive (cpp_reader
*, int);
95 static void directive_diagnostics (cpp_reader
*, const directive
*, int);
96 static void run_directive (cpp_reader
*, int, const char *, size_t);
97 static char *glue_header_name (cpp_reader
*);
98 static const char *parse_include (cpp_reader
*, int *, const cpp_token
***);
99 static void push_conditional (cpp_reader
*, int, int, const cpp_hashnode
*);
100 static unsigned int read_flag (cpp_reader
*, unsigned int);
101 static int strtoul_for_line (const uchar
*, unsigned int, unsigned long *);
102 static void do_diagnostic (cpp_reader
*, int, int);
103 static cpp_hashnode
*lex_macro_node (cpp_reader
*);
104 static int undefine_macros (cpp_reader
*, cpp_hashnode
*, void *);
105 static void do_include_common (cpp_reader
*, enum include_type
);
106 static struct pragma_entry
*lookup_pragma_entry (struct pragma_entry
*,
107 const cpp_hashnode
*);
108 static struct pragma_entry
*insert_pragma_entry (cpp_reader
*,
109 struct pragma_entry
**,
110 const cpp_hashnode
*,
113 static void register_pragma (cpp_reader
*, const char *, const char *,
114 pragma_cb
, bool, bool);
115 static int count_registered_pragmas (struct pragma_entry
*);
116 static char ** save_registered_pragmas (struct pragma_entry
*, char **);
117 static char ** restore_registered_pragmas (cpp_reader
*, struct pragma_entry
*,
119 static void do_pragma_once (cpp_reader
*);
120 static void do_pragma_poison (cpp_reader
*);
121 static void do_pragma_system_header (cpp_reader
*);
122 static void do_pragma_dependency (cpp_reader
*);
123 static void do_linemarker (cpp_reader
*);
124 static const cpp_token
*get_token_no_padding (cpp_reader
*);
125 static const cpp_token
*get__Pragma_string (cpp_reader
*);
126 static void destringize_and_run (cpp_reader
*, const cpp_string
*);
127 static int parse_answer (cpp_reader
*, struct answer
**, int);
128 static cpp_hashnode
*parse_assertion (cpp_reader
*, struct answer
**, int);
129 static struct answer
** find_answer (cpp_hashnode
*, const struct answer
*);
130 static void handle_assertion (cpp_reader
*, const char *, int);
132 /* This is the table of directive handlers. It is ordered by
133 frequency of occurrence; the numbers at the end are directive
134 counts from all the source code I have lying around (egcs and libc
135 CVS as of 1999-05-18, plus grub-0.5.91, linux-2.2.9, and
136 pcmcia-cs-3.0.9). This is no longer important as directive lookup
137 is now O(1). All extensions other than #warning and #include_next
138 are deprecated. The name is where the extension appears to have
141 #define DIRECTIVE_TABLE \
142 D(define, T_DEFINE = 0, KANDR, IN_I) /* 270554 */ \
143 D(include, T_INCLUDE, KANDR, INCL | EXPAND) /* 52262 */ \
144 D(endif, T_ENDIF, KANDR, COND) /* 45855 */ \
145 D(ifdef, T_IFDEF, KANDR, COND | IF_COND) /* 22000 */ \
146 D(if, T_IF, KANDR, COND | IF_COND | EXPAND) /* 18162 */ \
147 D(else, T_ELSE, KANDR, COND) /* 9863 */ \
148 D(ifndef, T_IFNDEF, KANDR, COND | IF_COND) /* 9675 */ \
149 D(undef, T_UNDEF, KANDR, IN_I) /* 4837 */ \
150 D(line, T_LINE, KANDR, EXPAND) /* 2465 */ \
151 D(elif, T_ELIF, STDC89, COND | EXPAND) /* 610 */ \
152 D(error, T_ERROR, STDC89, 0) /* 475 */ \
153 D(pragma, T_PRAGMA, STDC89, IN_I) /* 195 */ \
154 D(warning, T_WARNING, EXTENSION, 0) /* 22 */ \
155 D(include_next, T_INCLUDE_NEXT, EXTENSION, INCL | EXPAND) /* 19 */ \
156 D(ident, T_IDENT, EXTENSION, IN_I) /* 11 */ \
157 D(import, T_IMPORT, EXTENSION, INCL | EXPAND) /* 0 ObjC */ \
158 D(assert, T_ASSERT, EXTENSION, 0) /* 0 SVR4 */ \
159 D(unassert, T_UNASSERT, EXTENSION, 0) /* 0 SVR4 */ \
160 D(sccs, T_SCCS, EXTENSION, IN_I) /* 0 SVR4? */
162 /* #sccs is synonymous with #ident. */
163 #define do_sccs do_ident
165 /* Use the table to generate a series of prototypes, an enum for the
166 directive names, and an array of directive handlers. */
168 #define D(name, t, o, f) static void do_##name (cpp_reader *);
172 #define D(n, tag, o, f) tag,
180 #define D(name, t, origin, flags) \
181 { do_##name, (const uchar *) #name, \
182 sizeof #name - 1, origin, flags },
183 static const directive dtable
[] =
188 #undef DIRECTIVE_TABLE
190 /* Wrapper struct directive for linemarkers.
191 The origin is more or less true - the original K+R cpp
192 did use this notation in its preprocessed output. */
193 static const directive linemarker_dir
=
195 do_linemarker
, U
"#", 1, KANDR
, IN_I
198 #define SEEN_EOL() (pfile->cur_token[-1].type == CPP_EOF)
200 /* Skip any remaining tokens in a directive. */
202 skip_rest_of_line (cpp_reader
*pfile
)
204 /* Discard all stacked contexts. */
205 while (pfile
->context
->prev
)
206 _cpp_pop_context (pfile
);
208 /* Sweep up all tokens remaining on the line. */
210 while (_cpp_lex_token (pfile
)->type
!= CPP_EOF
)
214 /* Ensure there are no stray tokens at the end of a directive. */
216 check_eol (cpp_reader
*pfile
)
218 if (! SEEN_EOL () && _cpp_lex_token (pfile
)->type
!= CPP_EOF
)
219 cpp_error (pfile
, CPP_DL_PEDWARN
, "extra tokens at end of #%s directive",
220 pfile
->directive
->name
);
223 /* Ensure there are no stray tokens other than comments at the end of
224 a directive, and gather the comments. */
225 static const cpp_token
**
226 check_eol_return_comments (cpp_reader
*pfile
)
230 const cpp_token
**buf
;
232 buf
= XNEWVEC (const cpp_token
*, capacity
);
238 const cpp_token
*tok
;
240 tok
= _cpp_lex_token (pfile
);
241 if (tok
->type
== CPP_EOF
)
243 if (tok
->type
!= CPP_COMMENT
)
244 cpp_error (pfile
, CPP_DL_PEDWARN
,
245 "extra tokens at end of #%s directive",
246 pfile
->directive
->name
);
249 if (c
+ 1 >= capacity
)
252 buf
= XRESIZEVEC (const cpp_token
*, buf
, capacity
);
263 /* Called when entering a directive, _Pragma or command-line directive. */
265 start_directive (cpp_reader
*pfile
)
267 /* Setup in-directive state. */
268 pfile
->state
.in_directive
= 1;
269 pfile
->state
.save_comments
= 0;
270 pfile
->directive_result
.type
= CPP_PADDING
;
272 /* Some handlers need the position of the # for diagnostics. */
273 pfile
->directive_line
= pfile
->line_table
->highest_line
;
276 /* Called when leaving a directive, _Pragma or command-line directive. */
278 end_directive (cpp_reader
*pfile
, int skip_line
)
280 if (CPP_OPTION (pfile
, traditional
))
282 /* Revert change of prepare_directive_trad. */
283 pfile
->state
.prevent_expansion
--;
285 if (pfile
->directive
!= &dtable
[T_DEFINE
])
286 _cpp_remove_overlay (pfile
);
288 /* We don't skip for an assembler #. */
291 skip_rest_of_line (pfile
);
292 if (!pfile
->keep_tokens
)
294 pfile
->cur_run
= &pfile
->base_run
;
295 pfile
->cur_token
= pfile
->base_run
.base
;
300 pfile
->state
.save_comments
= ! CPP_OPTION (pfile
, discard_comments
);
301 pfile
->state
.in_directive
= 0;
302 pfile
->state
.in_expression
= 0;
303 pfile
->state
.angled_headers
= 0;
304 pfile
->directive
= 0;
307 /* Prepare to handle the directive in pfile->directive. */
309 prepare_directive_trad (cpp_reader
*pfile
)
311 if (pfile
->directive
!= &dtable
[T_DEFINE
])
313 bool no_expand
= (pfile
->directive
314 && ! (pfile
->directive
->flags
& EXPAND
));
315 bool was_skipping
= pfile
->state
.skipping
;
317 pfile
->state
.in_expression
= (pfile
->directive
== &dtable
[T_IF
]
318 || pfile
->directive
== &dtable
[T_ELIF
]);
319 if (pfile
->state
.in_expression
)
320 pfile
->state
.skipping
= false;
323 pfile
->state
.prevent_expansion
++;
324 _cpp_scan_out_logical_line (pfile
, NULL
);
326 pfile
->state
.prevent_expansion
--;
328 pfile
->state
.skipping
= was_skipping
;
329 _cpp_overlay_buffer (pfile
, pfile
->out
.base
,
330 pfile
->out
.cur
- pfile
->out
.base
);
333 /* Stop ISO C from expanding anything. */
334 pfile
->state
.prevent_expansion
++;
337 /* Output diagnostics for a directive DIR. INDENTED is nonzero if
338 the '#' was indented. */
340 directive_diagnostics (cpp_reader
*pfile
, const directive
*dir
, int indented
)
342 /* Issue -pedantic warnings for extensions. */
343 if (CPP_PEDANTIC (pfile
)
344 && ! pfile
->state
.skipping
345 && dir
->origin
== EXTENSION
)
346 cpp_error (pfile
, CPP_DL_PEDWARN
, "#%s is a GCC extension", dir
->name
);
348 /* Traditionally, a directive is ignored unless its # is in
349 column 1. Therefore in code intended to work with K+R
350 compilers, directives added by C89 must have their #
351 indented, and directives present in traditional C must not.
352 This is true even of directives in skipped conditional
353 blocks. #elif cannot be used at all. */
354 if (CPP_WTRADITIONAL (pfile
))
356 if (dir
== &dtable
[T_ELIF
])
357 cpp_error (pfile
, CPP_DL_WARNING
,
358 "suggest not using #elif in traditional C");
359 else if (indented
&& dir
->origin
== KANDR
)
360 cpp_error (pfile
, CPP_DL_WARNING
,
361 "traditional C ignores #%s with the # indented",
363 else if (!indented
&& dir
->origin
!= KANDR
)
364 cpp_error (pfile
, CPP_DL_WARNING
,
365 "suggest hiding #%s from traditional C with an indented #",
370 /* Check if we have a known directive. INDENTED is nonzero if the
371 '#' of the directive was indented. This function is in this file
372 to save unnecessarily exporting dtable etc. to lex.c. Returns
373 nonzero if the line of tokens has been handled, zero if we should
374 continue processing the line. */
376 _cpp_handle_directive (cpp_reader
*pfile
, int indented
)
378 const directive
*dir
= 0;
379 const cpp_token
*dname
;
380 bool was_parsing_args
= pfile
->state
.parsing_args
;
381 bool was_discarding_output
= pfile
->state
.discarding_output
;
384 if (was_discarding_output
)
385 pfile
->state
.prevent_expansion
= 0;
387 if (was_parsing_args
)
389 if (CPP_OPTION (pfile
, pedantic
))
390 cpp_error (pfile
, CPP_DL_PEDWARN
,
391 "embedding a directive within macro arguments is not portable");
392 pfile
->state
.parsing_args
= 0;
393 pfile
->state
.prevent_expansion
= 0;
395 start_directive (pfile
);
396 dname
= _cpp_lex_token (pfile
);
398 if (dname
->type
== CPP_NAME
)
400 if (dname
->val
.node
->is_directive
)
401 dir
= &dtable
[dname
->val
.node
->directive_index
];
403 /* We do not recognize the # followed by a number extension in
405 else if (dname
->type
== CPP_NUMBER
&& CPP_OPTION (pfile
, lang
) != CLK_ASM
)
407 dir
= &linemarker_dir
;
408 if (CPP_PEDANTIC (pfile
) && ! CPP_OPTION (pfile
, preprocessed
)
409 && ! pfile
->state
.skipping
)
410 cpp_error (pfile
, CPP_DL_PEDWARN
,
411 "style of line directive is a GCC extension");
416 /* If we have a directive that is not an opening conditional,
417 invalidate any control macro. */
418 if (! (dir
->flags
& IF_COND
))
419 pfile
->mi_valid
= false;
421 /* Kluge alert. In order to be sure that code like this
426 does not cause '#define foo bar' to get executed when
427 compiled with -save-temps, we recognize directives in
428 -fpreprocessed mode only if the # is in column 1. macro.c
429 puts a space in front of any '#' at the start of a macro. */
430 if (CPP_OPTION (pfile
, preprocessed
)
431 && (indented
|| !(dir
->flags
& IN_I
)))
438 /* In failed conditional groups, all non-conditional
439 directives are ignored. Before doing that, whether
440 skipping or not, we should lex angle-bracketed headers
441 correctly, and maybe output some diagnostics. */
442 pfile
->state
.angled_headers
= dir
->flags
& INCL
;
443 pfile
->state
.directive_wants_padding
= dir
->flags
& INCL
;
444 if (! CPP_OPTION (pfile
, preprocessed
))
445 directive_diagnostics (pfile
, dir
, indented
);
446 if (pfile
->state
.skipping
&& !(dir
->flags
& COND
))
450 else if (dname
->type
== CPP_EOF
)
451 ; /* CPP_EOF is the "null directive". */
454 /* An unknown directive. Don't complain about it in assembly
455 source: we don't know where the comments are, and # may
456 introduce assembler pseudo-ops. Don't complain about invalid
457 directives in skipped conditional groups (6.10 p4). */
458 if (CPP_OPTION (pfile
, lang
) == CLK_ASM
)
460 else if (!pfile
->state
.skipping
)
461 cpp_error (pfile
, CPP_DL_ERROR
, "invalid preprocessing directive #%s",
462 cpp_token_as_text (pfile
, dname
));
465 pfile
->directive
= dir
;
466 if (CPP_OPTION (pfile
, traditional
))
467 prepare_directive_trad (pfile
);
470 pfile
->directive
->handler (pfile
);
472 _cpp_backup_tokens (pfile
, 1);
474 end_directive (pfile
, skip
);
475 if (was_parsing_args
)
477 /* Restore state when within macro args. */
478 pfile
->state
.parsing_args
= 2;
479 pfile
->state
.prevent_expansion
= 1;
481 if (was_discarding_output
)
482 pfile
->state
.prevent_expansion
= 1;
486 /* Directive handler wrapper used by the command line option
487 processor. BUF is \n terminated. */
489 run_directive (cpp_reader
*pfile
, int dir_no
, const char *buf
, size_t count
)
491 cpp_push_buffer (pfile
, (const uchar
*) buf
, count
,
492 /* from_stage3 */ true);
493 /* Disgusting hack. */
494 if (dir_no
== T_PRAGMA
&& pfile
->buffer
->prev
)
495 pfile
->buffer
->file
= pfile
->buffer
->prev
->file
;
496 start_directive (pfile
);
498 /* This is a short-term fix to prevent a leading '#' being
499 interpreted as a directive. */
500 _cpp_clean_line (pfile
);
502 pfile
->directive
= &dtable
[dir_no
];
503 if (CPP_OPTION (pfile
, traditional
))
504 prepare_directive_trad (pfile
);
505 pfile
->directive
->handler (pfile
);
506 end_directive (pfile
, 1);
507 if (dir_no
== T_PRAGMA
)
508 pfile
->buffer
->file
= NULL
;
509 _cpp_pop_buffer (pfile
);
512 /* Checks for validity the macro name in #define, #undef, #ifdef and
513 #ifndef directives. */
514 static cpp_hashnode
*
515 lex_macro_node (cpp_reader
*pfile
)
517 const cpp_token
*token
= _cpp_lex_token (pfile
);
519 /* The token immediately after #define must be an identifier. That
520 identifier may not be "defined", per C99 6.10.8p4.
521 In C++, it may not be any of the "named operators" either,
522 per C++98 [lex.digraph], [lex.key].
523 Finally, the identifier may not have been poisoned. (In that case
524 the lexer has issued the error message for us.) */
526 if (token
->type
== CPP_NAME
)
528 cpp_hashnode
*node
= token
->val
.node
;
530 if (node
== pfile
->spec_nodes
.n_defined
)
531 cpp_error (pfile
, CPP_DL_ERROR
,
532 "\"defined\" cannot be used as a macro name");
533 else if (! (node
->flags
& NODE_POISONED
))
536 else if (token
->flags
& NAMED_OP
)
537 cpp_error (pfile
, CPP_DL_ERROR
,
538 "\"%s\" cannot be used as a macro name as it is an operator in C++",
539 NODE_NAME (token
->val
.node
));
540 else if (token
->type
== CPP_EOF
)
541 cpp_error (pfile
, CPP_DL_ERROR
, "no macro name given in #%s directive",
542 pfile
->directive
->name
);
544 cpp_error (pfile
, CPP_DL_ERROR
, "macro names must be identifiers");
549 /* Process a #define directive. Most work is done in macro.c. */
551 do_define (cpp_reader
*pfile
)
553 cpp_hashnode
*node
= lex_macro_node (pfile
);
557 /* If we have been requested to expand comments into macros,
558 then re-enable saving of comments. */
559 pfile
->state
.save_comments
=
560 ! CPP_OPTION (pfile
, discard_comments_in_macro_exp
);
562 if (_cpp_create_definition (pfile
, node
))
563 if (pfile
->cb
.define
)
564 pfile
->cb
.define (pfile
, pfile
->directive_line
, node
);
568 /* Handle #undef. Mark the identifier NT_VOID in the hash table. */
570 do_undef (cpp_reader
*pfile
)
572 cpp_hashnode
*node
= lex_macro_node (pfile
);
577 pfile
->cb
.undef (pfile
, pfile
->directive_line
, node
);
579 /* 6.10.3.5 paragraph 2: [#undef] is ignored if the specified
580 identifier is not currently defined as a macro name. */
581 if (node
->type
== NT_MACRO
)
583 if (node
->flags
& NODE_WARN
)
584 cpp_error (pfile
, CPP_DL_WARNING
,
585 "undefining \"%s\"", NODE_NAME (node
));
587 if (CPP_OPTION (pfile
, warn_unused_macros
))
588 _cpp_warn_if_unused_macro (pfile
, node
, NULL
);
590 _cpp_free_definition (node
);
597 /* Undefine a single macro/assertion/whatever. */
600 undefine_macros (cpp_reader
*pfile ATTRIBUTE_UNUSED
, cpp_hashnode
*h
,
601 void *data_p ATTRIBUTE_UNUSED
)
603 /* Body of _cpp_free_definition inlined here for speed.
604 Macros and assertions no longer have anything to free. */
606 h
->flags
&= ~(NODE_POISONED
|NODE_BUILTIN
|NODE_DISABLED
);
610 /* Undefine all macros and assertions. */
613 cpp_undef_all (cpp_reader
*pfile
)
615 cpp_forall_identifiers (pfile
, undefine_macros
, NULL
);
619 /* Helper routine used by parse_include. Reinterpret the current line
620 as an h-char-sequence (< ... >); we are looking at the first token
621 after the <. Returns a malloced filename. */
623 glue_header_name (cpp_reader
*pfile
)
625 const cpp_token
*token
;
627 size_t len
, total_len
= 0, capacity
= 1024;
629 /* To avoid lexed tokens overwriting our glued name, we can only
630 allocate from the string pool once we've lexed everything. */
631 buffer
= XNEWVEC (char, capacity
);
634 token
= get_token_no_padding (pfile
);
636 if (token
->type
== CPP_GREATER
)
638 if (token
->type
== CPP_EOF
)
640 cpp_error (pfile
, CPP_DL_ERROR
, "missing terminating > character");
644 len
= cpp_token_len (token
) + 2; /* Leading space, terminating \0. */
645 if (total_len
+ len
> capacity
)
647 capacity
= (capacity
+ len
) * 2;
648 buffer
= XRESIZEVEC (char, buffer
, capacity
);
651 if (token
->flags
& PREV_WHITE
)
652 buffer
[total_len
++] = ' ';
654 total_len
= (cpp_spell_token (pfile
, token
, (uchar
*) &buffer
[total_len
],
659 buffer
[total_len
] = '\0';
663 /* Returns the file name of #include, #include_next, #import and
664 #pragma dependency. The string is malloced and the caller should
665 free it. Returns NULL on error. */
667 parse_include (cpp_reader
*pfile
, int *pangle_brackets
,
668 const cpp_token
***buf
)
671 const cpp_token
*header
;
673 /* Allow macro expansion. */
674 header
= get_token_no_padding (pfile
);
675 if (header
->type
== CPP_STRING
|| header
->type
== CPP_HEADER_NAME
)
677 fname
= XNEWVEC (char, header
->val
.str
.len
- 1);
678 memcpy (fname
, header
->val
.str
.text
+ 1, header
->val
.str
.len
- 2);
679 fname
[header
->val
.str
.len
- 2] = '\0';
680 *pangle_brackets
= header
->type
== CPP_HEADER_NAME
;
682 else if (header
->type
== CPP_LESS
)
684 fname
= glue_header_name (pfile
);
685 *pangle_brackets
= 1;
689 const unsigned char *dir
;
691 if (pfile
->directive
== &dtable
[T_PRAGMA
])
692 dir
= U
"pragma dependency";
694 dir
= pfile
->directive
->name
;
695 cpp_error (pfile
, CPP_DL_ERROR
, "#%s expects \"FILENAME\" or <FILENAME>",
701 if (buf
== NULL
|| CPP_OPTION (pfile
, discard_comments
))
705 /* If we are not discarding comments, then gather them while
706 doing the eol check. */
707 *buf
= check_eol_return_comments (pfile
);
713 /* Handle #include, #include_next and #import. */
715 do_include_common (cpp_reader
*pfile
, enum include_type type
)
719 const cpp_token
**buf
= NULL
;
721 /* Re-enable saving of comments if requested, so that the include
722 callback can dump comments which follow #include. */
723 pfile
->state
.save_comments
= ! CPP_OPTION (pfile
, discard_comments
);
725 fname
= parse_include (pfile
, &angle_brackets
, &buf
);
735 cpp_error (pfile
, CPP_DL_ERROR
, "empty filename in #%s",
736 pfile
->directive
->name
);
743 /* Prevent #include recursion. */
744 if (pfile
->line_table
->depth
>= CPP_STACK_MAX
)
745 cpp_error (pfile
, CPP_DL_ERROR
, "#include nested too deeply");
748 /* Get out of macro context, if we are. */
749 skip_rest_of_line (pfile
);
751 if (pfile
->cb
.include
)
752 pfile
->cb
.include (pfile
, pfile
->directive_line
,
753 pfile
->directive
->name
, fname
, angle_brackets
,
756 _cpp_stack_include (pfile
, fname
, angle_brackets
, type
);
765 do_include (cpp_reader
*pfile
)
767 do_include_common (pfile
, IT_INCLUDE
);
771 do_import (cpp_reader
*pfile
)
773 do_include_common (pfile
, IT_IMPORT
);
777 do_include_next (cpp_reader
*pfile
)
779 enum include_type type
= IT_INCLUDE_NEXT
;
781 /* If this is the primary source file, warn and use the normal
783 if (! pfile
->buffer
->prev
)
785 cpp_error (pfile
, CPP_DL_WARNING
,
786 "#include_next in primary source file");
789 do_include_common (pfile
, type
);
792 /* Subroutine of do_linemarker. Read possible flags after file name.
793 LAST is the last flag seen; 0 if this is the first flag. Return the
794 flag if it is valid, 0 at the end of the directive. Otherwise
797 read_flag (cpp_reader
*pfile
, unsigned int last
)
799 const cpp_token
*token
= _cpp_lex_token (pfile
);
801 if (token
->type
== CPP_NUMBER
&& token
->val
.str
.len
== 1)
803 unsigned int flag
= token
->val
.str
.text
[0] - '0';
805 if (flag
> last
&& flag
<= 4
806 && (flag
!= 4 || last
== 3)
807 && (flag
!= 2 || last
== 0))
811 if (token
->type
!= CPP_EOF
)
812 cpp_error (pfile
, CPP_DL_ERROR
, "invalid flag \"%s\" in line directive",
813 cpp_token_as_text (pfile
, token
));
817 /* Subroutine of do_line and do_linemarker. Convert a number in STR,
818 of length LEN, to binary; store it in NUMP, and return 0 if the
819 number was well-formed, 1 if not. Temporary, hopefully. */
821 strtoul_for_line (const uchar
*str
, unsigned int len
, long unsigned int *nump
)
823 unsigned long reg
= 0;
837 /* Interpret #line command.
838 Note that the filename string (if any) is a true string constant
839 (escapes are interpreted), unlike in #line. */
841 do_line (cpp_reader
*pfile
)
843 const struct line_maps
*line_table
= pfile
->line_table
;
844 const struct line_map
*map
= &line_table
->maps
[line_table
->used
- 1];
846 /* skip_rest_of_line() may cause line table to be realloc()ed so note down
849 unsigned char map_sysp
= map
->sysp
;
850 const cpp_token
*token
;
851 const char *new_file
= map
->to_file
;
852 unsigned long new_lineno
;
854 /* C99 raised the minimum limit on #line numbers. */
855 unsigned int cap
= CPP_OPTION (pfile
, c99
) ? 2147483647 : 32767;
857 /* #line commands expand macros. */
858 token
= cpp_get_token (pfile
);
859 if (token
->type
!= CPP_NUMBER
860 || strtoul_for_line (token
->val
.str
.text
, token
->val
.str
.len
,
863 cpp_error (pfile
, CPP_DL_ERROR
,
864 "\"%s\" after #line is not a positive integer",
865 cpp_token_as_text (pfile
, token
));
869 if (CPP_PEDANTIC (pfile
) && (new_lineno
== 0 || new_lineno
> cap
))
870 cpp_error (pfile
, CPP_DL_PEDWARN
, "line number out of range");
872 token
= cpp_get_token (pfile
);
873 if (token
->type
== CPP_STRING
)
875 cpp_string s
= { 0, 0 };
876 if (cpp_interpret_string_notranslate (pfile
, &token
->val
.str
, 1,
878 new_file
= (const char *)s
.text
;
881 else if (token
->type
!= CPP_EOF
)
883 cpp_error (pfile
, CPP_DL_ERROR
, "\"%s\" is not a valid filename",
884 cpp_token_as_text (pfile
, token
));
888 skip_rest_of_line (pfile
);
889 _cpp_do_file_change (pfile
, LC_RENAME
, new_file
, new_lineno
,
893 /* Interpret the # 44 "file" [flags] notation, which has slightly
894 different syntax and semantics from #line: Flags are allowed,
895 and we never complain about the line number being too big. */
897 do_linemarker (cpp_reader
*pfile
)
899 const struct line_maps
*line_table
= pfile
->line_table
;
900 const struct line_map
*map
= &line_table
->maps
[line_table
->used
- 1];
901 const cpp_token
*token
;
902 const char *new_file
= map
->to_file
;
903 unsigned long new_lineno
;
904 unsigned int new_sysp
= map
->sysp
;
905 enum lc_reason reason
= LC_RENAME
;
908 /* Back up so we can get the number again. Putting this in
909 _cpp_handle_directive risks two calls to _cpp_backup_tokens in
910 some circumstances, which can segfault. */
911 _cpp_backup_tokens (pfile
, 1);
913 /* #line commands expand macros. */
914 token
= cpp_get_token (pfile
);
915 if (token
->type
!= CPP_NUMBER
916 || strtoul_for_line (token
->val
.str
.text
, token
->val
.str
.len
,
919 cpp_error (pfile
, CPP_DL_ERROR
,
920 "\"%s\" after # is not a positive integer",
921 cpp_token_as_text (pfile
, token
));
925 token
= cpp_get_token (pfile
);
926 if (token
->type
== CPP_STRING
)
928 cpp_string s
= { 0, 0 };
929 if (cpp_interpret_string_notranslate (pfile
, &token
->val
.str
,
931 new_file
= (const char *)s
.text
;
934 flag
= read_flag (pfile
, 0);
938 /* Fake an include for cpp_included (). */
939 _cpp_fake_include (pfile
, new_file
);
940 flag
= read_flag (pfile
, flag
);
945 flag
= read_flag (pfile
, flag
);
950 flag
= read_flag (pfile
, flag
);
953 pfile
->buffer
->sysp
= new_sysp
;
958 else if (token
->type
!= CPP_EOF
)
960 cpp_error (pfile
, CPP_DL_ERROR
, "\"%s\" is not a valid filename",
961 cpp_token_as_text (pfile
, token
));
965 skip_rest_of_line (pfile
);
966 _cpp_do_file_change (pfile
, reason
, new_file
, new_lineno
, new_sysp
);
969 /* Arrange the file_change callback. pfile->line has changed to
970 FILE_LINE of TO_FILE, for reason REASON. SYSP is 1 for a system
971 header, 2 for a system header that needs to be extern "C" protected,
972 and zero otherwise. */
974 _cpp_do_file_change (cpp_reader
*pfile
, enum lc_reason reason
,
975 const char *to_file
, unsigned int file_line
,
978 const struct line_map
*map
= linemap_add (pfile
->line_table
, reason
, sysp
,
981 linemap_line_start (pfile
->line_table
, map
->to_line
, 127);
983 if (pfile
->cb
.file_change
)
984 pfile
->cb
.file_change (pfile
, map
);
987 /* Report a warning or error detected by the program we are
988 processing. Use the directive's tokens in the error message. */
990 do_diagnostic (cpp_reader
*pfile
, int code
, int print_dir
)
992 if (_cpp_begin_message (pfile
, code
, pfile
->cur_token
[-1].src_loc
, 0))
995 fprintf (stderr
, "#%s ", pfile
->directive
->name
);
996 pfile
->state
.prevent_expansion
++;
997 cpp_output_line (pfile
, stderr
);
998 pfile
->state
.prevent_expansion
--;
1003 do_error (cpp_reader
*pfile
)
1005 do_diagnostic (pfile
, CPP_DL_ERROR
, 1);
1009 do_warning (cpp_reader
*pfile
)
1011 /* We want #warning diagnostics to be emitted in system headers too. */
1012 do_diagnostic (pfile
, CPP_DL_WARNING_SYSHDR
, 1);
1015 /* Report program identification. */
1017 do_ident (cpp_reader
*pfile
)
1019 const cpp_token
*str
= cpp_get_token (pfile
);
1021 if (str
->type
!= CPP_STRING
)
1022 cpp_error (pfile
, CPP_DL_ERROR
, "invalid #%s directive",
1023 pfile
->directive
->name
);
1024 else if (pfile
->cb
.ident
)
1025 pfile
->cb
.ident (pfile
, pfile
->directive_line
, &str
->val
.str
);
1030 /* Lookup a PRAGMA name in a singly-linked CHAIN. Returns the
1031 matching entry, or NULL if none is found. The returned entry could
1032 be the start of a namespace chain, or a pragma. */
1033 static struct pragma_entry
*
1034 lookup_pragma_entry (struct pragma_entry
*chain
, const cpp_hashnode
*pragma
)
1036 while (chain
&& chain
->pragma
!= pragma
)
1037 chain
= chain
->next
;
1042 /* Create and insert a pragma entry for NAME at the beginning of a
1043 singly-linked CHAIN. If handler is NULL, it is a namespace,
1044 otherwise it is a pragma and its handler. If INTERNAL is true
1045 this pragma is being inserted by libcpp itself. */
1046 static struct pragma_entry
*
1047 insert_pragma_entry (cpp_reader
*pfile
, struct pragma_entry
**chain
,
1048 const cpp_hashnode
*pragma
, pragma_cb handler
,
1049 bool allow_expansion
, bool internal
)
1051 struct pragma_entry
*new_entry
;
1053 new_entry
= (struct pragma_entry
*)
1054 _cpp_aligned_alloc (pfile
, sizeof (struct pragma_entry
));
1055 new_entry
->pragma
= pragma
;
1058 new_entry
->is_nspace
= 0;
1059 new_entry
->u
.handler
= handler
;
1063 new_entry
->is_nspace
= 1;
1064 new_entry
->u
.space
= NULL
;
1067 new_entry
->allow_expansion
= allow_expansion
;
1068 new_entry
->is_internal
= internal
;
1069 new_entry
->next
= *chain
;
1074 /* Register a pragma NAME in namespace SPACE. If SPACE is null, it
1075 goes in the global namespace. HANDLER is the handler it will call,
1076 which must be non-NULL. If ALLOW_EXPANSION is set, allow macro
1077 expansion while parsing pragma NAME. INTERNAL is true if this is a
1078 pragma registered by cpplib itself, false if it is registered via
1079 cpp_register_pragma */
1081 register_pragma (cpp_reader
*pfile
, const char *space
, const char *name
,
1082 pragma_cb handler
, bool allow_expansion
, bool internal
)
1084 struct pragma_entry
**chain
= &pfile
->pragmas
;
1085 struct pragma_entry
*entry
;
1086 const cpp_hashnode
*node
;
1093 node
= cpp_lookup (pfile
, U space
, strlen (space
));
1094 entry
= lookup_pragma_entry (*chain
, node
);
1096 entry
= insert_pragma_entry (pfile
, chain
, node
, NULL
,
1097 allow_expansion
, internal
);
1098 else if (!entry
->is_nspace
)
1100 chain
= &entry
->u
.space
;
1103 /* Check for duplicates. */
1104 node
= cpp_lookup (pfile
, U name
, strlen (name
));
1105 entry
= lookup_pragma_entry (*chain
, node
);
1108 if (entry
->is_nspace
)
1110 cpp_error (pfile
, CPP_DL_ICE
,
1111 "registering \"%s\" as both a pragma and a pragma namespace",
1114 cpp_error (pfile
, CPP_DL_ICE
, "#pragma %s %s is already registered",
1117 cpp_error (pfile
, CPP_DL_ICE
, "#pragma %s is already registered", name
);
1120 insert_pragma_entry (pfile
, chain
, node
, handler
, allow_expansion
,
1124 /* Register a pragma NAME in namespace SPACE. If SPACE is null, it
1125 goes in the global namespace. HANDLER is the handler it will call,
1126 which must be non-NULL. If ALLOW_EXPANSION is set, allow macro
1127 expansion while parsing pragma NAME. This function is exported
1130 cpp_register_pragma (cpp_reader
*pfile
, const char *space
, const char *name
,
1131 pragma_cb handler
, bool allow_expansion
)
1133 register_pragma (pfile
, space
, name
, handler
, allow_expansion
, false);
1136 /* Register the pragmas the preprocessor itself handles. */
1138 _cpp_init_internal_pragmas (cpp_reader
*pfile
)
1140 /* Pragmas in the global namespace. */
1141 register_pragma (pfile
, 0, "once", do_pragma_once
, false, true);
1143 /* New GCC-specific pragmas should be put in the GCC namespace. */
1144 register_pragma (pfile
, "GCC", "poison", do_pragma_poison
, false, true);
1145 register_pragma (pfile
, "GCC", "system_header", do_pragma_system_header
,
1147 register_pragma (pfile
, "GCC", "dependency", do_pragma_dependency
,
1151 /* Return the number of registered pragmas in PE. */
1154 count_registered_pragmas (struct pragma_entry
*pe
)
1157 for (; pe
!= NULL
; pe
= pe
->next
)
1160 ct
+= count_registered_pragmas (pe
->u
.space
);
1166 /* Save into SD the names of the registered pragmas referenced by PE,
1167 and return a pointer to the next free space in SD. */
1170 save_registered_pragmas (struct pragma_entry
*pe
, char **sd
)
1172 for (; pe
!= NULL
; pe
= pe
->next
)
1175 sd
= save_registered_pragmas (pe
->u
.space
, sd
);
1176 *sd
++ = (char *) xmemdup (HT_STR (&pe
->pragma
->ident
),
1177 HT_LEN (&pe
->pragma
->ident
),
1178 HT_LEN (&pe
->pragma
->ident
) + 1);
1183 /* Return a newly-allocated array which saves the names of the
1184 registered pragmas. */
1187 _cpp_save_pragma_names (cpp_reader
*pfile
)
1189 int ct
= count_registered_pragmas (pfile
->pragmas
);
1190 char **result
= XNEWVEC (char *, ct
);
1191 (void) save_registered_pragmas (pfile
->pragmas
, result
);
1195 /* Restore from SD the names of the registered pragmas referenced by PE,
1196 and return a pointer to the next unused name in SD. */
1199 restore_registered_pragmas (cpp_reader
*pfile
, struct pragma_entry
*pe
,
1202 for (; pe
!= NULL
; pe
= pe
->next
)
1205 sd
= restore_registered_pragmas (pfile
, pe
->u
.space
, sd
);
1206 pe
->pragma
= cpp_lookup (pfile
, U
*sd
, strlen (*sd
));
1213 /* Restore the names of the registered pragmas from SAVED. */
1216 _cpp_restore_pragma_names (cpp_reader
*pfile
, char **saved
)
1218 (void) restore_registered_pragmas (pfile
, pfile
->pragmas
, saved
);
1222 /* Pragmata handling. We handle some, and pass the rest on to the
1223 front end. C99 defines three pragmas and says that no macro
1224 expansion is to be performed on them; whether or not macro
1225 expansion happens for other pragmas is implementation defined.
1226 This implementation never macro-expands the text after #pragma.
1228 The library user has the option of deferring execution of
1229 #pragmas not handled by cpplib, in which case they are converted
1230 to CPP_PRAGMA tokens and inserted into the output stream. */
1232 do_pragma (cpp_reader
*pfile
)
1234 const struct pragma_entry
*p
= NULL
;
1235 const cpp_token
*token
, *pragma_token
= pfile
->cur_token
;
1236 unsigned int count
= 1;
1238 /* Save the current position so that defer_pragmas mode can
1239 copy the entire current line to a string. It will not work
1240 to use _cpp_backup_tokens as that does not reverse buffer->cur. */
1241 const uchar
*line_start
= CPP_BUFFER (pfile
)->cur
;
1243 pfile
->state
.prevent_expansion
++;
1245 token
= cpp_get_token (pfile
);
1246 if (token
->type
== CPP_NAME
)
1248 p
= lookup_pragma_entry (pfile
->pragmas
, token
->val
.node
);
1249 if (p
&& p
->is_nspace
)
1252 token
= cpp_get_token (pfile
);
1253 if (token
->type
== CPP_NAME
)
1254 p
= lookup_pragma_entry (p
->u
.space
, token
->val
.node
);
1262 if (p
->is_internal
|| !CPP_OPTION (pfile
, defer_pragmas
))
1264 /* Since the handler below doesn't get the line number, that it
1265 might need for diagnostics, make sure it has the right
1266 numbers in place. */
1267 if (pfile
->cb
.line_change
)
1268 (*pfile
->cb
.line_change
) (pfile
, pragma_token
, false);
1269 /* Never expand macros if handling a deferred pragma, since
1270 the macro definitions now applicable may be different
1271 from those at the point the pragma appeared. */
1272 if (p
->allow_expansion
&& !pfile
->state
.in_deferred_pragma
)
1273 pfile
->state
.prevent_expansion
--;
1274 (*p
->u
.handler
) (pfile
);
1275 if (p
->allow_expansion
&& !pfile
->state
.in_deferred_pragma
)
1276 pfile
->state
.prevent_expansion
++;
1280 /* Squirrel away the pragma text. Pragmas are
1281 newline-terminated. */
1282 const uchar
*line_end
;
1287 line_end
= ustrchr (line_start
, '\n');
1289 body
.len
= (line_end
- line_start
) + 1;
1290 s
= _cpp_unaligned_alloc (pfile
, body
.len
+ 1);
1291 memcpy (s
, line_start
, body
.len
);
1295 /* Create a CPP_PRAGMA token. */
1296 ptok
= &pfile
->directive_result
;
1297 ptok
->src_loc
= pragma_token
->src_loc
;
1298 ptok
->type
= CPP_PRAGMA
;
1299 ptok
->flags
= pragma_token
->flags
| NO_EXPAND
;
1300 ptok
->val
.str
= body
;
1303 else if (pfile
->cb
.def_pragma
)
1305 _cpp_backup_tokens (pfile
, count
);
1306 pfile
->cb
.def_pragma (pfile
, pfile
->directive_line
);
1309 pfile
->state
.prevent_expansion
--;
1312 /* Handle #pragma once. */
1314 do_pragma_once (cpp_reader
*pfile
)
1316 if (pfile
->buffer
->prev
== NULL
)
1317 cpp_error (pfile
, CPP_DL_WARNING
, "#pragma once in main file");
1320 _cpp_mark_file_once_only (pfile
, pfile
->buffer
->file
);
1323 /* Handle #pragma GCC poison, to poison one or more identifiers so
1324 that the lexer produces a hard error for each subsequent usage. */
1326 do_pragma_poison (cpp_reader
*pfile
)
1328 const cpp_token
*tok
;
1331 pfile
->state
.poisoned_ok
= 1;
1334 tok
= _cpp_lex_token (pfile
);
1335 if (tok
->type
== CPP_EOF
)
1337 if (tok
->type
!= CPP_NAME
)
1339 cpp_error (pfile
, CPP_DL_ERROR
,
1340 "invalid #pragma GCC poison directive");
1345 if (hp
->flags
& NODE_POISONED
)
1348 if (hp
->type
== NT_MACRO
)
1349 cpp_error (pfile
, CPP_DL_WARNING
, "poisoning existing macro \"%s\"",
1351 _cpp_free_definition (hp
);
1352 hp
->flags
|= NODE_POISONED
| NODE_DIAGNOSTIC
;
1354 pfile
->state
.poisoned_ok
= 0;
1357 /* Mark the current header as a system header. This will suppress
1358 some categories of warnings (notably those from -pedantic). It is
1359 intended for use in system libraries that cannot be implemented in
1360 conforming C, but cannot be certain that their headers appear in a
1361 system include directory. To prevent abuse, it is rejected in the
1362 primary source file. */
1364 do_pragma_system_header (cpp_reader
*pfile
)
1366 cpp_buffer
*buffer
= pfile
->buffer
;
1368 if (buffer
->prev
== 0)
1369 cpp_error (pfile
, CPP_DL_WARNING
,
1370 "#pragma system_header ignored outside include file");
1374 skip_rest_of_line (pfile
);
1375 cpp_make_system_header (pfile
, 1, 0);
1379 /* Check the modified date of the current include file against a specified
1380 file. Issue a diagnostic, if the specified file is newer. We use this to
1381 determine if a fixed header should be refixed. */
1383 do_pragma_dependency (cpp_reader
*pfile
)
1386 int angle_brackets
, ordering
;
1388 fname
= parse_include (pfile
, &angle_brackets
, NULL
);
1392 ordering
= _cpp_compare_file_date (pfile
, fname
, angle_brackets
);
1394 cpp_error (pfile
, CPP_DL_WARNING
, "cannot find source file %s", fname
);
1395 else if (ordering
> 0)
1397 cpp_error (pfile
, CPP_DL_WARNING
,
1398 "current file is older than %s", fname
);
1399 if (cpp_get_token (pfile
)->type
!= CPP_EOF
)
1401 _cpp_backup_tokens (pfile
, 1);
1402 do_diagnostic (pfile
, CPP_DL_WARNING
, 0);
1406 free ((void *) fname
);
1409 /* Get a token but skip padding. */
1410 static const cpp_token
*
1411 get_token_no_padding (cpp_reader
*pfile
)
1415 const cpp_token
*result
= cpp_get_token (pfile
);
1416 if (result
->type
!= CPP_PADDING
)
1421 /* Check syntax is "(string-literal)". Returns the string on success,
1422 or NULL on failure. */
1423 static const cpp_token
*
1424 get__Pragma_string (cpp_reader
*pfile
)
1426 const cpp_token
*string
;
1428 if (get_token_no_padding (pfile
)->type
!= CPP_OPEN_PAREN
)
1431 string
= get_token_no_padding (pfile
);
1432 if (string
->type
!= CPP_STRING
&& string
->type
!= CPP_WSTRING
)
1435 if (get_token_no_padding (pfile
)->type
!= CPP_CLOSE_PAREN
)
1441 /* Destringize IN into a temporary buffer, by removing the first \ of
1442 \" and \\ sequences, and process the result as a #pragma directive. */
1444 destringize_and_run (cpp_reader
*pfile
, const cpp_string
*in
)
1446 const unsigned char *src
, *limit
;
1447 char *dest
, *result
;
1449 dest
= result
= (char *) alloca (in
->len
- 1);
1450 src
= in
->text
+ 1 + (in
->text
[0] == 'L');
1451 limit
= in
->text
+ in
->len
- 1;
1454 /* We know there is a character following the backslash. */
1455 if (*src
== '\\' && (src
[1] == '\\' || src
[1] == '"'))
1461 /* Ugh; an awful kludge. We are really not set up to be lexing
1462 tokens when in the middle of a macro expansion. Use a new
1463 context to force cpp_get_token to lex, and so skip_rest_of_line
1464 doesn't go beyond the end of the text. Also, remember the
1465 current lexing position so we can return to it later.
1467 Something like line-at-a-time lexing should remove the need for
1470 cpp_context
*saved_context
= pfile
->context
;
1471 cpp_token
*saved_cur_token
= pfile
->cur_token
;
1472 tokenrun
*saved_cur_run
= pfile
->cur_run
;
1474 pfile
->context
= XNEW (cpp_context
);
1475 pfile
->context
->macro
= 0;
1476 pfile
->context
->prev
= 0;
1477 run_directive (pfile
, T_PRAGMA
, result
, dest
- result
);
1478 XDELETE (pfile
->context
);
1479 pfile
->context
= saved_context
;
1480 pfile
->cur_token
= saved_cur_token
;
1481 pfile
->cur_run
= saved_cur_run
;
1484 /* See above comment. For the moment, we'd like
1486 token1 _Pragma ("foo") token2
1496 Getting the line markers is a little tricky. */
1497 if (pfile
->cb
.line_change
)
1498 pfile
->cb
.line_change (pfile
, pfile
->cur_token
, false);
1501 /* Handle the _Pragma operator. */
1503 _cpp_do__Pragma (cpp_reader
*pfile
)
1505 const cpp_token
*string
= get__Pragma_string (pfile
);
1506 pfile
->directive_result
.type
= CPP_PADDING
;
1509 destringize_and_run (pfile
, &string
->val
.str
);
1511 cpp_error (pfile
, CPP_DL_ERROR
,
1512 "_Pragma takes a parenthesized string literal");
1515 /* Handle a pragma that the front end deferred until now. */
1517 cpp_handle_deferred_pragma (cpp_reader
*pfile
, const cpp_string
*s
)
1519 cpp_context
*saved_context
= pfile
->context
;
1520 cpp_token
*saved_cur_token
= pfile
->cur_token
;
1521 tokenrun
*saved_cur_run
= pfile
->cur_run
;
1522 bool saved_defer_pragmas
= CPP_OPTION (pfile
, defer_pragmas
);
1523 void (*saved_line_change
) (cpp_reader
*, const cpp_token
*, int)
1524 = pfile
->cb
.line_change
;
1526 pfile
->context
= XNEW (cpp_context
);
1527 pfile
->context
->macro
= 0;
1528 pfile
->context
->prev
= 0;
1529 pfile
->cb
.line_change
= NULL
;
1530 pfile
->state
.in_deferred_pragma
= true;
1531 CPP_OPTION (pfile
, defer_pragmas
) = false;
1533 run_directive (pfile
, T_PRAGMA
, (const char *)s
->text
, s
->len
);
1535 XDELETE (pfile
->context
);
1536 pfile
->context
= saved_context
;
1537 pfile
->cur_token
= saved_cur_token
;
1538 pfile
->cur_run
= saved_cur_run
;
1539 pfile
->cb
.line_change
= saved_line_change
;
1540 pfile
->state
.in_deferred_pragma
= false;
1541 CPP_OPTION (pfile
, defer_pragmas
) = saved_defer_pragmas
;
1544 /* Handle #ifdef. */
1546 do_ifdef (cpp_reader
*pfile
)
1550 if (! pfile
->state
.skipping
)
1552 const cpp_hashnode
*node
= lex_macro_node (pfile
);
1556 skip
= node
->type
!= NT_MACRO
;
1557 _cpp_mark_macro_used (node
);
1562 push_conditional (pfile
, skip
, T_IFDEF
, 0);
1565 /* Handle #ifndef. */
1567 do_ifndef (cpp_reader
*pfile
)
1570 const cpp_hashnode
*node
= 0;
1572 if (! pfile
->state
.skipping
)
1574 node
= lex_macro_node (pfile
);
1578 skip
= node
->type
== NT_MACRO
;
1579 _cpp_mark_macro_used (node
);
1584 push_conditional (pfile
, skip
, T_IFNDEF
, node
);
1587 /* _cpp_parse_expr puts a macro in a "#if !defined ()" expression in
1588 pfile->mi_ind_cmacro so we can handle multiple-include
1589 optimizations. If macro expansion occurs in the expression, we
1590 cannot treat it as a controlling conditional, since the expansion
1591 could change in the future. That is handled by cpp_get_token. */
1593 do_if (cpp_reader
*pfile
)
1597 if (! pfile
->state
.skipping
)
1598 skip
= _cpp_parse_expr (pfile
) == false;
1600 push_conditional (pfile
, skip
, T_IF
, pfile
->mi_ind_cmacro
);
1603 /* Flip skipping state if appropriate and continue without changing
1604 if_stack; this is so that the error message for missing #endif's
1605 etc. will point to the original #if. */
1607 do_else (cpp_reader
*pfile
)
1609 cpp_buffer
*buffer
= pfile
->buffer
;
1610 struct if_stack
*ifs
= buffer
->if_stack
;
1613 cpp_error (pfile
, CPP_DL_ERROR
, "#else without #if");
1616 if (ifs
->type
== T_ELSE
)
1618 cpp_error (pfile
, CPP_DL_ERROR
, "#else after #else");
1619 cpp_error_with_line (pfile
, CPP_DL_ERROR
, ifs
->line
, 0,
1620 "the conditional began here");
1624 /* Skip any future (erroneous) #elses or #elifs. */
1625 pfile
->state
.skipping
= ifs
->skip_elses
;
1626 ifs
->skip_elses
= true;
1628 /* Invalidate any controlling macro. */
1631 /* Only check EOL if was not originally skipping. */
1632 if (!ifs
->was_skipping
&& CPP_OPTION (pfile
, warn_endif_labels
))
1637 /* Handle a #elif directive by not changing if_stack either. See the
1638 comment above do_else. */
1640 do_elif (cpp_reader
*pfile
)
1642 cpp_buffer
*buffer
= pfile
->buffer
;
1643 struct if_stack
*ifs
= buffer
->if_stack
;
1646 cpp_error (pfile
, CPP_DL_ERROR
, "#elif without #if");
1649 if (ifs
->type
== T_ELSE
)
1651 cpp_error (pfile
, CPP_DL_ERROR
, "#elif after #else");
1652 cpp_error_with_line (pfile
, CPP_DL_ERROR
, ifs
->line
, 0,
1653 "the conditional began here");
1657 /* Only evaluate this if we aren't skipping elses. During
1658 evaluation, set skipping to false to get lexer warnings. */
1659 if (ifs
->skip_elses
)
1660 pfile
->state
.skipping
= 1;
1663 pfile
->state
.skipping
= 0;
1664 pfile
->state
.skipping
= ! _cpp_parse_expr (pfile
);
1665 ifs
->skip_elses
= ! pfile
->state
.skipping
;
1668 /* Invalidate any controlling macro. */
1673 /* #endif pops the if stack and resets pfile->state.skipping. */
1675 do_endif (cpp_reader
*pfile
)
1677 cpp_buffer
*buffer
= pfile
->buffer
;
1678 struct if_stack
*ifs
= buffer
->if_stack
;
1681 cpp_error (pfile
, CPP_DL_ERROR
, "#endif without #if");
1684 /* Only check EOL if was not originally skipping. */
1685 if (!ifs
->was_skipping
&& CPP_OPTION (pfile
, warn_endif_labels
))
1688 /* If potential control macro, we go back outside again. */
1689 if (ifs
->next
== 0 && ifs
->mi_cmacro
)
1691 pfile
->mi_valid
= true;
1692 pfile
->mi_cmacro
= ifs
->mi_cmacro
;
1695 buffer
->if_stack
= ifs
->next
;
1696 pfile
->state
.skipping
= ifs
->was_skipping
;
1697 obstack_free (&pfile
->buffer_ob
, ifs
);
1701 /* Push an if_stack entry for a preprocessor conditional, and set
1702 pfile->state.skipping to SKIP. If TYPE indicates the conditional
1703 is #if or #ifndef, CMACRO is a potentially controlling macro, and
1704 we need to check here that we are at the top of the file. */
1706 push_conditional (cpp_reader
*pfile
, int skip
, int type
,
1707 const cpp_hashnode
*cmacro
)
1709 struct if_stack
*ifs
;
1710 cpp_buffer
*buffer
= pfile
->buffer
;
1712 ifs
= XOBNEW (&pfile
->buffer_ob
, struct if_stack
);
1713 ifs
->line
= pfile
->directive_line
;
1714 ifs
->next
= buffer
->if_stack
;
1715 ifs
->skip_elses
= pfile
->state
.skipping
|| !skip
;
1716 ifs
->was_skipping
= pfile
->state
.skipping
;
1718 /* This condition is effectively a test for top-of-file. */
1719 if (pfile
->mi_valid
&& pfile
->mi_cmacro
== 0)
1720 ifs
->mi_cmacro
= cmacro
;
1724 pfile
->state
.skipping
= skip
;
1725 buffer
->if_stack
= ifs
;
1728 /* Read the tokens of the answer into the macro pool, in a directive
1729 of type TYPE. Only commit the memory if we intend it as permanent
1730 storage, i.e. the #assert case. Returns 0 on success, and sets
1731 ANSWERP to point to the answer. */
1733 parse_answer (cpp_reader
*pfile
, struct answer
**answerp
, int type
)
1735 const cpp_token
*paren
;
1736 struct answer
*answer
;
1737 unsigned int acount
;
1739 /* In a conditional, it is legal to not have an open paren. We
1740 should save the following token in this case. */
1741 paren
= cpp_get_token (pfile
);
1743 /* If not a paren, see if we're OK. */
1744 if (paren
->type
!= CPP_OPEN_PAREN
)
1746 /* In a conditional no answer is a test for any answer. It
1747 could be followed by any token. */
1750 _cpp_backup_tokens (pfile
, 1);
1754 /* #unassert with no answer is valid - it removes all answers. */
1755 if (type
== T_UNASSERT
&& paren
->type
== CPP_EOF
)
1758 cpp_error (pfile
, CPP_DL_ERROR
, "missing '(' after predicate");
1762 for (acount
= 0;; acount
++)
1765 const cpp_token
*token
= cpp_get_token (pfile
);
1768 if (token
->type
== CPP_CLOSE_PAREN
)
1771 if (token
->type
== CPP_EOF
)
1773 cpp_error (pfile
, CPP_DL_ERROR
, "missing ')' to complete answer");
1777 /* struct answer includes the space for one token. */
1778 room_needed
= (sizeof (struct answer
) + acount
* sizeof (cpp_token
));
1780 if (BUFF_ROOM (pfile
->a_buff
) < room_needed
)
1781 _cpp_extend_buff (pfile
, &pfile
->a_buff
, sizeof (struct answer
));
1783 dest
= &((struct answer
*) BUFF_FRONT (pfile
->a_buff
))->first
[acount
];
1786 /* Drop whitespace at start, for answer equivalence purposes. */
1788 dest
->flags
&= ~PREV_WHITE
;
1793 cpp_error (pfile
, CPP_DL_ERROR
, "predicate's answer is empty");
1797 answer
= (struct answer
*) BUFF_FRONT (pfile
->a_buff
);
1798 answer
->count
= acount
;
1799 answer
->next
= NULL
;
1805 /* Parses an assertion directive of type TYPE, returning a pointer to
1806 the hash node of the predicate, or 0 on error. If an answer was
1807 supplied, it is placed in ANSWERP, otherwise it is set to 0. */
1808 static cpp_hashnode
*
1809 parse_assertion (cpp_reader
*pfile
, struct answer
**answerp
, int type
)
1811 cpp_hashnode
*result
= 0;
1812 const cpp_token
*predicate
;
1814 /* We don't expand predicates or answers. */
1815 pfile
->state
.prevent_expansion
++;
1818 predicate
= cpp_get_token (pfile
);
1819 if (predicate
->type
== CPP_EOF
)
1820 cpp_error (pfile
, CPP_DL_ERROR
, "assertion without predicate");
1821 else if (predicate
->type
!= CPP_NAME
)
1822 cpp_error (pfile
, CPP_DL_ERROR
, "predicate must be an identifier");
1823 else if (parse_answer (pfile
, answerp
, type
) == 0)
1825 unsigned int len
= NODE_LEN (predicate
->val
.node
);
1826 unsigned char *sym
= (unsigned char *) alloca (len
+ 1);
1828 /* Prefix '#' to get it out of macro namespace. */
1830 memcpy (sym
+ 1, NODE_NAME (predicate
->val
.node
), len
);
1831 result
= cpp_lookup (pfile
, sym
, len
+ 1);
1834 pfile
->state
.prevent_expansion
--;
1838 /* Returns a pointer to the pointer to CANDIDATE in the answer chain,
1839 or a pointer to NULL if the answer is not in the chain. */
1840 static struct answer
**
1841 find_answer (cpp_hashnode
*node
, const struct answer
*candidate
)
1844 struct answer
**result
;
1846 for (result
= &node
->value
.answers
; *result
; result
= &(*result
)->next
)
1848 struct answer
*answer
= *result
;
1850 if (answer
->count
== candidate
->count
)
1852 for (i
= 0; i
< answer
->count
; i
++)
1853 if (! _cpp_equiv_tokens (&answer
->first
[i
], &candidate
->first
[i
]))
1856 if (i
== answer
->count
)
1864 /* Test an assertion within a preprocessor conditional. Returns
1865 nonzero on failure, zero on success. On success, the result of
1866 the test is written into VALUE, otherwise the value 0. */
1868 _cpp_test_assertion (cpp_reader
*pfile
, unsigned int *value
)
1870 struct answer
*answer
;
1873 node
= parse_assertion (pfile
, &answer
, T_IF
);
1875 /* For recovery, an erroneous assertion expression is handled as a
1876 failing assertion. */
1880 *value
= (node
->type
== NT_ASSERTION
&&
1881 (answer
== 0 || *find_answer (node
, answer
) != 0));
1882 else if (pfile
->cur_token
[-1].type
== CPP_EOF
)
1883 _cpp_backup_tokens (pfile
, 1);
1885 /* We don't commit the memory for the answer - it's temporary only. */
1889 /* Handle #assert. */
1891 do_assert (cpp_reader
*pfile
)
1893 struct answer
*new_answer
;
1896 node
= parse_assertion (pfile
, &new_answer
, T_ASSERT
);
1901 /* Place the new answer in the answer list. First check there
1902 is not a duplicate. */
1903 new_answer
->next
= 0;
1904 if (node
->type
== NT_ASSERTION
)
1906 if (*find_answer (node
, new_answer
))
1908 cpp_error (pfile
, CPP_DL_WARNING
, "\"%s\" re-asserted",
1909 NODE_NAME (node
) + 1);
1912 new_answer
->next
= node
->value
.answers
;
1915 answer_size
= sizeof (struct answer
) + ((new_answer
->count
- 1)
1916 * sizeof (cpp_token
));
1917 /* Commit or allocate storage for the object. */
1918 if (pfile
->hash_table
->alloc_subobject
)
1920 struct answer
*temp_answer
= new_answer
;
1921 new_answer
= (struct answer
*) pfile
->hash_table
->alloc_subobject
1923 memcpy (new_answer
, temp_answer
, answer_size
);
1926 BUFF_FRONT (pfile
->a_buff
) += answer_size
;
1928 node
->type
= NT_ASSERTION
;
1929 node
->value
.answers
= new_answer
;
1934 /* Handle #unassert. */
1936 do_unassert (cpp_reader
*pfile
)
1939 struct answer
*answer
;
1941 node
= parse_assertion (pfile
, &answer
, T_UNASSERT
);
1942 /* It isn't an error to #unassert something that isn't asserted. */
1943 if (node
&& node
->type
== NT_ASSERTION
)
1947 struct answer
**p
= find_answer (node
, answer
), *temp
;
1949 /* Remove the answer from the list. */
1954 /* Did we free the last answer? */
1955 if (node
->value
.answers
== 0)
1956 node
->type
= NT_VOID
;
1961 _cpp_free_definition (node
);
1964 /* We don't commit the memory for the answer - it's temporary only. */
1967 /* These are for -D, -U, -A. */
1969 /* Process the string STR as if it appeared as the body of a #define.
1970 If STR is just an identifier, define it with value 1.
1971 If STR has anything after the identifier, then it should
1972 be identifier=definition. */
1974 cpp_define (cpp_reader
*pfile
, const char *str
)
1979 /* Copy the entire option so we can modify it.
1980 Change the first "=" in the string to a space. If there is none,
1981 tack " 1" on the end. */
1983 count
= strlen (str
);
1984 buf
= (char *) alloca (count
+ 3);
1985 memcpy (buf
, str
, count
);
1987 p
= strchr (str
, '=');
1997 run_directive (pfile
, T_DEFINE
, buf
, count
);
2000 /* Slight variant of the above for use by initialize_builtins. */
2002 _cpp_define_builtin (cpp_reader
*pfile
, const char *str
)
2004 size_t len
= strlen (str
);
2005 char *buf
= (char *) alloca (len
+ 1);
2006 memcpy (buf
, str
, len
);
2008 run_directive (pfile
, T_DEFINE
, buf
, len
);
2011 /* Process MACRO as if it appeared as the body of an #undef. */
2013 cpp_undef (cpp_reader
*pfile
, const char *macro
)
2015 size_t len
= strlen (macro
);
2016 char *buf
= (char *) alloca (len
+ 1);
2017 memcpy (buf
, macro
, len
);
2019 run_directive (pfile
, T_UNDEF
, buf
, len
);
2022 /* Process the string STR as if it appeared as the body of a #assert. */
2024 cpp_assert (cpp_reader
*pfile
, const char *str
)
2026 handle_assertion (pfile
, str
, T_ASSERT
);
2029 /* Process STR as if it appeared as the body of an #unassert. */
2031 cpp_unassert (cpp_reader
*pfile
, const char *str
)
2033 handle_assertion (pfile
, str
, T_UNASSERT
);
2036 /* Common code for cpp_assert (-A) and cpp_unassert (-A-). */
2038 handle_assertion (cpp_reader
*pfile
, const char *str
, int type
)
2040 size_t count
= strlen (str
);
2041 const char *p
= strchr (str
, '=');
2043 /* Copy the entire option so we can modify it. Change the first
2044 "=" in the string to a '(', and tack a ')' on the end. */
2045 char *buf
= (char *) alloca (count
+ 2);
2047 memcpy (buf
, str
, count
);
2056 run_directive (pfile
, type
, str
, count
);
2059 /* The number of errors for a given reader. */
2061 cpp_errors (cpp_reader
*pfile
)
2063 return pfile
->errors
;
2066 /* The options structure. */
2068 cpp_get_options (cpp_reader
*pfile
)
2070 return &pfile
->opts
;
2073 /* The callbacks structure. */
2075 cpp_get_callbacks (cpp_reader
*pfile
)
2080 /* Copy the given callbacks structure to our own. */
2082 cpp_set_callbacks (cpp_reader
*pfile
, cpp_callbacks
*cb
)
2087 /* The dependencies structure. (Creates one if it hasn't already been.) */
2089 cpp_get_deps (cpp_reader
*pfile
)
2092 pfile
->deps
= deps_init ();
2096 /* Push a new buffer on the buffer stack. Returns the new buffer; it
2097 doesn't fail. It does not generate a file change call back; that
2098 is the responsibility of the caller. */
2100 cpp_push_buffer (cpp_reader
*pfile
, const uchar
*buffer
, size_t len
,
2103 cpp_buffer
*new_buffer
= XOBNEW (&pfile
->buffer_ob
, cpp_buffer
);
2105 /* Clears, amongst other things, if_stack and mi_cmacro. */
2106 memset (new_buffer
, 0, sizeof (cpp_buffer
));
2108 new_buffer
->next_line
= new_buffer
->buf
= buffer
;
2109 new_buffer
->rlimit
= buffer
+ len
;
2110 new_buffer
->from_stage3
= from_stage3
;
2111 new_buffer
->prev
= pfile
->buffer
;
2112 new_buffer
->need_line
= true;
2114 pfile
->buffer
= new_buffer
;
2119 /* Pops a single buffer, with a file change call-back if appropriate.
2120 Then pushes the next -include file, if any remain. */
2122 _cpp_pop_buffer (cpp_reader
*pfile
)
2124 cpp_buffer
*buffer
= pfile
->buffer
;
2125 struct _cpp_file
*inc
= buffer
->file
;
2126 struct if_stack
*ifs
;
2128 /* Walk back up the conditional stack till we reach its level at
2129 entry to this file, issuing error messages. */
2130 for (ifs
= buffer
->if_stack
; ifs
; ifs
= ifs
->next
)
2131 cpp_error_with_line (pfile
, CPP_DL_ERROR
, ifs
->line
, 0,
2132 "unterminated #%s", dtable
[ifs
->type
].name
);
2134 /* In case of a missing #endif. */
2135 pfile
->state
.skipping
= 0;
2137 /* _cpp_do_file_change expects pfile->buffer to be the new one. */
2138 pfile
->buffer
= buffer
->prev
;
2140 free (buffer
->notes
);
2142 /* Free the buffer object now; we may want to push a new buffer
2143 in _cpp_push_next_include_file. */
2144 obstack_free (&pfile
->buffer_ob
, buffer
);
2148 _cpp_pop_file_buffer (pfile
, inc
);
2150 _cpp_do_file_change (pfile
, LC_LEAVE
, 0, 0, 0);
2154 /* Enter all recognized directives in the hash table. */
2156 _cpp_init_directives (cpp_reader
*pfile
)
2161 for (i
= 0; i
< (unsigned int) N_DIRECTIVES
; i
++)
2163 node
= cpp_lookup (pfile
, dtable
[i
].name
, dtable
[i
].length
);
2164 node
->is_directive
= 1;
2165 node
->directive_index
= i
;