1 /* CPP Library. (Directive handling.)
2 Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
29 /* Chained list of answers to an assertion. */
37 /* Stack of conditionals currently in progress
38 (including both successful and failing conditionals). */
42 struct if_stack *next;
43 unsigned int line; /* Line where condition started. */
44 const cpp_hashnode *mi_cmacro;/* macro name for #ifndef around entire file */
45 bool skip_elses; /* Can future #else / #elif be skipped? */
46 bool was_skipping; /* If were skipping on entry. */
47 int type; /* Most recent conditional, for diagnostics. */
50 /* Values for the origin field of struct directive. KANDR directives
51 come from traditional (K&R) C. STDC89 directives come from the
52 1989 C standard. EXTENSION directives are extensions. */
57 /* Values for the flags field of struct directive. COND indicates a
58 conditional; IF_COND an opening conditional. INCL means to treat
59 "..." and <...> as q-char and h-char sequences respectively. IN_I
60 means this directive should be handled even if -fpreprocessed is in
61 effect (these are the directives with callback hooks). */
63 #define IF_COND (1 << 1)
67 /* Defines one #-directive, including how to handle it. */
68 typedef void (*directive_handler) PARAMS ((cpp_reader *));
69 typedef struct directive directive;
72 directive_handler handler; /* Function to handle directive. */
73 const U_CHAR *name; /* Name of directive. */
74 unsigned short length; /* Length of name. */
75 unsigned char origin; /* Origin of directive. */
76 unsigned char flags; /* Flags describing this directive. */
79 /* Forward declarations. */
81 static void skip_rest_of_line PARAMS ((cpp_reader *));
82 static void check_eol PARAMS ((cpp_reader *));
83 static void start_directive PARAMS ((cpp_reader *));
84 static void end_directive PARAMS ((cpp_reader *, int));
85 static void directive_diagnostics
86 PARAMS ((cpp_reader *, const directive *, int));
87 static void run_directive PARAMS ((cpp_reader *, int,
88 const char *, size_t));
89 static int glue_header_name PARAMS ((cpp_reader *, cpp_token *));
90 static int parse_include PARAMS ((cpp_reader *, cpp_token *));
91 static void push_conditional PARAMS ((cpp_reader *, int, int,
92 const cpp_hashnode *));
93 static unsigned int read_flag PARAMS ((cpp_reader *, unsigned int));
94 static int strtoul_for_line PARAMS ((const U_CHAR *, unsigned int,
96 static void do_diagnostic PARAMS ((cpp_reader *, enum error_type, int));
97 static cpp_hashnode *lex_macro_node PARAMS ((cpp_reader *));
98 static void do_include_common PARAMS ((cpp_reader *, enum include_type));
99 static void do_pragma_once PARAMS ((cpp_reader *));
100 static void do_pragma_poison PARAMS ((cpp_reader *));
101 static void do_pragma_system_header PARAMS ((cpp_reader *));
102 static void do_pragma_dependency PARAMS ((cpp_reader *));
103 static int get__Pragma_string PARAMS ((cpp_reader *, cpp_token *));
104 static unsigned char *destringize PARAMS ((const cpp_string *,
106 static int parse_answer PARAMS ((cpp_reader *, struct answer **, int));
107 static cpp_hashnode *parse_assertion PARAMS ((cpp_reader *, struct answer **,
109 static struct answer ** find_answer PARAMS ((cpp_hashnode *,
110 const struct answer *));
111 static void handle_assertion PARAMS ((cpp_reader *, const char *, int));
113 /* This is the table of directive handlers. It is ordered by
114 frequency of occurrence; the numbers at the end are directive
115 counts from all the source code I have lying around (egcs and libc
116 CVS as of 1999-05-18, plus grub-0.5.91, linux-2.2.9, and
117 pcmcia-cs-3.0.9). This is no longer important as directive lookup
118 is now O(1). All extensions other than #warning and #include_next
119 are deprecated. The name is where the extension appears to have
122 #define DIRECTIVE_TABLE \
123 D(define, T_DEFINE = 0, KANDR, IN_I) /* 270554 */ \
124 D(include, T_INCLUDE, KANDR, INCL) /* 52262 */ \
125 D(endif, T_ENDIF, KANDR, COND) /* 45855 */ \
126 D(ifdef, T_IFDEF, KANDR, COND | IF_COND) /* 22000 */ \
127 D(if, T_IF, KANDR, COND | IF_COND) /* 18162 */ \
128 D(else, T_ELSE, KANDR, COND) /* 9863 */ \
129 D(ifndef, T_IFNDEF, KANDR, COND | IF_COND) /* 9675 */ \
130 D(undef, T_UNDEF, KANDR, IN_I) /* 4837 */ \
131 D(line, T_LINE, KANDR, IN_I) /* 2465 */ \
132 D(elif, T_ELIF, STDC89, COND) /* 610 */ \
133 D(error, T_ERROR, STDC89, 0) /* 475 */ \
134 D(pragma, T_PRAGMA, STDC89, IN_I) /* 195 */ \
135 D(warning, T_WARNING, EXTENSION, 0) /* 22 */ \
136 D(include_next, T_INCLUDE_NEXT, EXTENSION, INCL) /* 19 */ \
137 D(ident, T_IDENT, EXTENSION, IN_I) /* 11 */ \
138 D(import, T_IMPORT, EXTENSION, INCL) /* 0 ObjC */ \
139 D(assert, T_ASSERT, EXTENSION, 0) /* 0 SVR4 */ \
140 D(unassert, T_UNASSERT, EXTENSION, 0) /* 0 SVR4 */ \
141 SCCS_ENTRY /* 0 SVR4? */
143 /* #sccs is not always recognized. */
144 #ifdef SCCS_DIRECTIVE
145 # define SCCS_ENTRY D(sccs, T_SCCS, EXTENSION, 0)
147 # define SCCS_ENTRY /* nothing */
150 /* Use the table to generate a series of prototypes, an enum for the
151 directive names, and an array of directive handlers. */
153 /* The directive-processing functions are declared to return int
154 instead of void, because some old compilers have trouble with
155 pointers to functions returning void. */
157 /* Don't invoke CONCAT2 with any whitespace or K&R cc will fail. */
158 #define D(name, t, o, f) static void CONCAT2(do_,name) PARAMS ((cpp_reader *));
162 #define D(n, tag, o, f) tag,
170 /* Don't invoke CONCAT2 with any whitespace or K&R cc will fail. */
171 #define D(name, t, origin, flags) \
172 { CONCAT2(do_,name), (const U_CHAR *) STRINGX(name), \
173 sizeof STRINGX(name) - 1, origin, flags },
174 static const directive dtable[] =
179 #undef DIRECTIVE_TABLE
181 #define SEEN_EOL() (pfile->cur_token[-1].type == CPP_EOF)
183 /* Skip any remaining tokens in a directive. */
185 skip_rest_of_line (pfile)
190 /* Discard all stacked contexts. */
191 while (pfile->context != &pfile->base_context)
192 _cpp_pop_context (pfile);
194 /* Sweep up all tokens remaining on the line. */
195 while (! SEEN_EOL ())
196 _cpp_lex_token (pfile, &token);
199 /* Ensure there are no stray tokens at the end of a directive. */
208 _cpp_lex_token (pfile, &token);
209 if (token.type != CPP_EOF)
210 cpp_pedwarn (pfile, "extra tokens at end of #%s directive",
211 pfile->directive->name);
215 /* Called when entering a directive, _Pragma or command-line directive. */
217 start_directive (pfile)
220 /* Setup in-directive state. */
221 pfile->state.in_directive = 1;
222 pfile->state.save_comments = 0;
224 /* Some handlers need the position of the # for diagnostics. */
225 pfile->directive_line = pfile->line;
228 /* Called when leaving a directive, _Pragma or command-line directive. */
230 end_directive (pfile, skip_line)
234 /* We don't skip for an assembler #. */
237 skip_rest_of_line (pfile);
238 if (!pfile->keep_tokens)
240 pfile->cur_run = &pfile->base_run;
241 pfile->cur_token = pfile->base_run.base;
246 pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments);
247 pfile->state.in_directive = 0;
248 pfile->state.angled_headers = 0;
249 pfile->state.line_extension = 0;
250 pfile->directive = 0;
253 /* Output diagnostics for a directive DIR. INDENTED is non-zero if
254 the '#' was indented. */
257 directive_diagnostics (pfile, dir, indented)
259 const directive *dir;
262 if (pfile->state.line_extension)
264 if (CPP_PEDANTIC (pfile)
265 && ! pfile->state.skipping)
266 cpp_pedwarn (pfile, "style of line directive is a GCC extension");
270 /* Issue -pedantic warnings for extensions. */
271 if (CPP_PEDANTIC (pfile)
272 && ! pfile->state.skipping
273 && dir->origin == EXTENSION)
274 cpp_pedwarn (pfile, "#%s is a GCC extension", dir->name);
276 /* Traditionally, a directive is ignored unless its # is in
277 column 1. Therefore in code intended to work with K+R
278 compilers, directives added by C89 must have their #
279 indented, and directives present in traditional C must not.
280 This is true even of directives in skipped conditional
282 if (CPP_WTRADITIONAL (pfile))
284 if (dir == &dtable[T_ELIF])
285 cpp_warning (pfile, "suggest not using #elif in traditional C");
286 else if (indented && dir->origin == KANDR)
288 "traditional C ignores #%s with the # indented",
290 else if (!indented && dir->origin != KANDR)
292 "suggest hiding #%s from traditional C with an indented #",
298 /* Check if we have a known directive. INDENTED is non-zero if the
299 '#' of the directive was indented. This function is in this file
300 to save unnecessarily exporting dtable etc. to cpplex.c. Returns
301 non-zero if the line of tokens has been handled, zero if we should
302 continue processing the line. */
305 _cpp_handle_directive (pfile, indented)
309 const directive *dir = 0;
313 start_directive (pfile);
314 _cpp_lex_token (pfile, &dname);
316 if (dname.type == CPP_NAME)
318 if (dname.val.node->directive_index)
319 dir = &dtable[dname.val.node->directive_index - 1];
321 /* We do not recognise the # followed by a number extension in
323 else if (dname.type == CPP_NUMBER && CPP_OPTION (pfile, lang) != CLK_ASM)
325 dir = &dtable[T_LINE];
326 pfile->state.line_extension = 1;
331 /* If we have a directive that is not an opening conditional,
332 invalidate any control macro. */
333 if (! (dir->flags & IF_COND))
334 pfile->mi_valid = false;
336 /* Kluge alert. In order to be sure that code like this
341 does not cause '#define foo bar' to get executed when
342 compiled with -save-temps, we recognize directives in
343 -fpreprocessed mode only if the # is in column 1. cppmacro.c
344 puts a space in fron of any '#' at the start of a macro. */
345 if (CPP_OPTION (pfile, preprocessed)
346 && (indented || !(dir->flags & IN_I)))
353 /* In failed conditional groups, all non-conditional
354 directives are ignored. Before doing that, whether
355 skipping or not, we should lex angle-bracketed headers
356 correctly, and maybe output some diagnostics. */
357 pfile->state.angled_headers = dir->flags & INCL;
358 if (! CPP_OPTION (pfile, preprocessed))
359 directive_diagnostics (pfile, dir, indented);
360 if (pfile->state.skipping && !(dir->flags & COND))
364 else if (dname.type == CPP_EOF)
365 ; /* CPP_EOF is the "null directive". */
368 /* An unknown directive. Don't complain about it in assembly
369 source: we don't know where the comments are, and # may
370 introduce assembler pseudo-ops. Don't complain about invalid
371 directives in skipped conditional groups (6.10 p4). */
372 if (CPP_OPTION (pfile, lang) == CLK_ASM)
374 else if (!pfile->state.skipping)
375 cpp_error (pfile, "invalid preprocessing directive #%s",
376 cpp_token_as_text (pfile, &dname));
381 pfile->directive = dir;
382 (*pfile->directive->handler) (pfile);
385 _cpp_backup_tokens (pfile, 1);
387 end_directive (pfile, skip);
391 /* Directive handler wrapper used by the command line option
394 run_directive (pfile, dir_no, buf, count)
400 cpp_push_buffer (pfile, (const U_CHAR *) buf, count,
401 /* from_stage3 */ true, 1);
402 start_directive (pfile);
403 /* We don't want a leading # to be interpreted as a directive. */
404 pfile->buffer->saved_flags = 0;
405 pfile->directive = &dtable[dir_no];
406 (void) (*pfile->directive->handler) (pfile);
407 end_directive (pfile, 1);
408 _cpp_pop_buffer (pfile);
411 /* Checks for validity the macro name in #define, #undef, #ifdef and
412 #ifndef directives. */
413 static cpp_hashnode *
414 lex_macro_node (pfile)
420 /* Lex the macro name directly. */
421 _cpp_lex_token (pfile, &token);
423 /* The token immediately after #define must be an identifier. That
424 identifier may not be "defined", per C99 6.10.8p4.
425 In C++, it may not be any of the "named operators" either,
426 per C++98 [lex.digraph], [lex.key].
427 Finally, the identifier may not have been poisoned. (In that case
428 the lexer has issued the error message for us.) */
430 if (token.type != CPP_NAME)
432 if (token.type == CPP_EOF)
433 cpp_error (pfile, "no macro name given in #%s directive",
434 pfile->directive->name);
435 else if (token.flags & NAMED_OP)
437 "\"%s\" cannot be used as a macro name as it is an operator in C++",
438 NODE_NAME (token.val.node));
440 cpp_error (pfile, "macro names must be identifiers");
445 node = token.val.node;
446 if (node->flags & NODE_POISONED)
449 if (node == pfile->spec_nodes.n_defined)
451 cpp_error (pfile, "\"%s\" cannot be used as a macro name",
459 /* Process a #define directive. Most work is done in cppmacro.c. */
464 cpp_hashnode *node = lex_macro_node (pfile);
468 if (_cpp_create_definition (pfile, node))
469 if (pfile->cb.define)
470 (*pfile->cb.define) (pfile, pfile->directive_line, node);
474 /* Handle #undef. Marks the identifier NT_VOID in the hash table. */
479 cpp_hashnode *node = lex_macro_node (pfile);
481 /* 6.10.3.5 paragraph 2: [#undef] is ignored if the specified identifier
482 is not currently defined as a macro name. */
483 if (node && node->type == NT_MACRO)
486 (*pfile->cb.undef) (pfile, pfile->directive_line, node);
488 if (node->flags & NODE_WARN)
489 cpp_warning (pfile, "undefining \"%s\"", NODE_NAME (node));
491 _cpp_free_definition (node);
496 /* Helper routine used by parse_include. Reinterpret the current line
497 as an h-char-sequence (< ... >); we are looking at the first token
498 after the <. Returns zero on success. */
500 glue_header_name (pfile, header)
505 unsigned char *buffer, *token_mem;
506 size_t len, total_len = 0, capacity = 1024;
508 /* To avoid lexed tokens overwriting our glued name, we can only
509 allocate from the string pool once we've lexed everything. */
511 buffer = (unsigned char *) xmalloc (capacity);
514 cpp_get_token (pfile, &token);
516 if (token.type == CPP_GREATER || token.type == CPP_EOF)
519 len = cpp_token_len (&token);
520 if (total_len + len > capacity)
522 capacity = (capacity + len) * 2;
523 buffer = (unsigned char *) xrealloc (buffer, capacity);
526 if (token.flags & PREV_WHITE)
527 buffer[total_len++] = ' ';
529 total_len = cpp_spell_token (pfile, &token, &buffer[total_len]) - buffer;
532 if (token.type == CPP_EOF)
533 cpp_error (pfile, "missing terminating > character");
536 token_mem = _cpp_pool_alloc (&pfile->ident_pool, total_len + 1);
537 memcpy (token_mem, buffer, total_len);
538 token_mem[total_len] = '\0';
540 header->type = CPP_HEADER_NAME;
541 header->flags &= ~PREV_WHITE;
542 header->val.str.len = total_len;
543 header->val.str.text = token_mem;
547 return token.type == CPP_EOF;
550 /* Parse the header name of #include, #include_next, #import and
551 #pragma dependency. Returns zero on success. */
553 parse_include (pfile, header)
557 const unsigned char *dir;
559 if (pfile->directive == &dtable[T_PRAGMA])
560 dir = U"pragma dependency";
562 dir = pfile->directive->name;
564 /* Allow macro expansion. */
565 cpp_get_token (pfile, header);
566 if (header->type != CPP_STRING && header->type != CPP_HEADER_NAME)
568 if (header->type != CPP_LESS)
570 cpp_error (pfile, "#%s expects \"FILENAME\" or <FILENAME>", dir);
573 if (glue_header_name (pfile, header))
577 if (header->val.str.len == 0)
579 cpp_error (pfile, "empty file name in #%s", dir);
586 /* Handle #include, #include_next and #import. */
588 do_include_common (pfile, type)
590 enum include_type type;
594 /* For #include_next, if this is the primary source file, warn and
595 use the normal search logic. */
596 if (type == IT_INCLUDE_NEXT && ! pfile->buffer->prev)
598 cpp_warning (pfile, "#include_next in primary source file");
601 else if (type == IT_IMPORT && CPP_OPTION (pfile, warn_import))
603 CPP_OPTION (pfile, warn_import) = 0;
605 "#import is obsolete, use an #ifndef wrapper in the header file");
608 if (!parse_include (pfile, &header))
610 /* Prevent #include recursion. */
611 if (pfile->line_maps.depth >= CPP_STACK_MAX)
612 cpp_fatal (pfile, "#include nested too deeply");
616 /* Get out of macro context, if we are. */
617 skip_rest_of_line (pfile);
618 if (pfile->cb.include)
619 (*pfile->cb.include) (pfile, pfile->directive_line,
620 pfile->directive->name, &header);
622 _cpp_execute_include (pfile, &header, type);
631 do_include_common (pfile, IT_INCLUDE);
638 do_include_common (pfile, IT_IMPORT);
642 do_include_next (pfile)
645 do_include_common (pfile, IT_INCLUDE_NEXT);
648 /* Subroutine of do_line. Read possible flags after file name. LAST
649 is the last flag seen; 0 if this is the first flag. Return the flag
650 if it is valid, 0 at the end of the directive. Otherwise complain. */
653 read_flag (pfile, last)
659 _cpp_lex_token (pfile, &token);
660 if (token.type == CPP_NUMBER && token.val.str.len == 1)
662 unsigned int flag = token.val.str.text[0] - '0';
664 if (flag > last && flag <= 4
665 && (flag != 4 || last == 3)
666 && (flag != 2 || last == 0))
670 if (token.type != CPP_EOF)
671 cpp_error (pfile, "invalid flag \"%s\" in line directive",
672 cpp_token_as_text (pfile, &token));
676 /* Another subroutine of do_line. Convert a number in STR, of length
677 LEN, to binary; store it in NUMP, and return 0 if the number was
678 well-formed, 1 if not. Temporary, hopefully. */
680 strtoul_for_line (str, len, nump)
685 unsigned long reg = 0;
699 /* Interpret #line command.
700 Note that the filename string (if any) is treated as if it were an
701 include filename. That means no escape handling. */
708 const char *new_file = pfile->map->to_file;
709 unsigned long new_lineno;
710 unsigned int cap, new_sysp = pfile->map->sysp;
711 enum lc_reason reason = LC_RENAME;
713 /* C99 raised the minimum limit on #line numbers. */
714 cap = CPP_OPTION (pfile, c99) ? 2147483647 : 32767;
716 /* Putting this in _cpp_handle_directive risks two calls to
717 _cpp_backup_tokens in some circumstances, which can segfault. */
718 if (pfile->state.line_extension)
719 _cpp_backup_tokens (pfile, 1);
721 /* #line commands expand macros. */
722 cpp_get_token (pfile, &token);
723 if (token.type != CPP_NUMBER
724 || strtoul_for_line (token.val.str.text, token.val.str.len, &new_lineno))
726 cpp_error (pfile, "\"%s\" after #line is not a positive integer",
727 cpp_token_as_text (pfile, &token));
731 if (CPP_PEDANTIC (pfile) && ! pfile->state.line_extension
732 && (new_lineno == 0 || new_lineno > cap))
733 cpp_pedwarn (pfile, "line number out of range");
735 cpp_get_token (pfile, &token);
736 if (token.type == CPP_STRING)
738 new_file = (const char *) token.val.str.text;
740 /* Only accept flags for the # 55 form. */
741 if (pfile->state.line_extension)
746 flag = read_flag (pfile, 0);
750 /* Fake an include for cpp_included (). */
751 _cpp_fake_include (pfile, new_file);
752 flag = read_flag (pfile, flag);
757 flag = read_flag (pfile, flag);
762 flag = read_flag (pfile, flag);
769 else if (token.type != CPP_EOF)
771 cpp_error (pfile, "\"%s\" is not a valid filename",
772 cpp_token_as_text (pfile, &token));
776 skip_rest_of_line (pfile);
777 _cpp_do_file_change (pfile, reason, new_file, new_lineno, new_sysp);
780 /* Arrange the file_change callback. pfile->line has changed to
781 FILE_LINE of TO_FILE, for reason REASON. SYSP is 1 for a system
782 header, 2 for a sytem header that needs to be extern "C" protected,
783 and zero otherwise. */
785 _cpp_do_file_change (pfile, reason, to_file, file_line, sysp)
787 enum lc_reason reason;
789 unsigned int file_line;
792 pfile->map = add_line_map (&pfile->line_maps, reason, sysp,
793 pfile->line, to_file, file_line);
795 if (pfile->cb.file_change)
796 (*pfile->cb.file_change) (pfile, pfile->map);
800 * Report a warning or error detected by the program we are
801 * processing. Use the directive's tokens in the error message.
805 do_diagnostic (pfile, code, print_dir)
807 enum error_type code;
810 if (_cpp_begin_message (pfile, code, 0, 0))
813 fprintf (stderr, "#%s ", pfile->directive->name);
814 pfile->state.prevent_expansion++;
815 cpp_output_line (pfile, stderr);
816 pfile->state.prevent_expansion--;
824 do_diagnostic (pfile, ERROR, 1);
831 /* We want #warning diagnostics to be emitted in system headers too. */
832 do_diagnostic (pfile, WARNING_SYSHDR, 1);
835 /* Report program identification. */
843 cpp_get_token (pfile, &str);
844 if (str.type != CPP_STRING)
845 cpp_error (pfile, "invalid #ident");
846 else if (pfile->cb.ident)
847 (*pfile->cb.ident) (pfile, pfile->directive_line, &str.val.str);
852 /* Pragmata handling. We handle some of these, and pass the rest on
853 to the front end. C99 defines three pragmas and says that no macro
854 expansion is to be performed on them; whether or not macro
855 expansion happens for other pragmas is implementation defined.
856 This implementation never macro-expands the text after #pragma. */
858 /* Sub-handlers for the pragmas needing treatment here.
859 They return 1 if the token buffer is to be popped, 0 if not. */
860 typedef void (*pragma_cb) PARAMS ((cpp_reader *));
863 struct pragma_entry *next;
869 struct pragma_entry *space;
874 cpp_register_pragma (pfile, space, name, handler)
880 struct pragma_entry **x, *new;
886 struct pragma_entry *p = pfile->pragmas;
887 len = strlen (space);
890 if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
897 cpp_ice (pfile, "unknown #pragma namespace %s", space);
902 new = (struct pragma_entry *)
903 _cpp_pool_alloc (&pfile->macro_pool, sizeof (struct pragma_entry));
905 new->len = strlen (name);
907 new->u.handler = handler;
914 cpp_register_pragma_space (pfile, space)
918 struct pragma_entry *new;
919 const struct pragma_entry *p = pfile->pragmas;
920 size_t len = strlen (space);
924 if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
925 /* Multiple different callers are allowed to register the same
931 new = (struct pragma_entry *)
932 _cpp_pool_alloc (&pfile->macro_pool, sizeof (struct pragma_entry));
938 new->next = pfile->pragmas;
939 pfile->pragmas = new;
943 _cpp_init_internal_pragmas (pfile)
947 cpp_register_pragma (pfile, 0, "poison", do_pragma_poison);
948 cpp_register_pragma (pfile, 0, "once", do_pragma_once);
951 cpp_register_pragma_space (pfile, "GCC");
953 cpp_register_pragma (pfile, "GCC", "poison", do_pragma_poison);
954 cpp_register_pragma (pfile, "GCC", "system_header", do_pragma_system_header);
955 cpp_register_pragma (pfile, "GCC", "dependency", do_pragma_dependency);
962 pragma_cb handler = NULL;
963 const struct pragma_entry *p;
965 unsigned int count = 0;
968 pfile->state.prevent_expansion++;
972 cpp_get_token (pfile, &tok);
973 if (tok.type == CPP_NAME)
975 const cpp_hashnode *node = tok.val.node;
976 size_t len = NODE_LEN (node);
980 if (strlen (p->name) == len
981 && !memcmp (p->name, NODE_NAME (node), len))
990 handler = p->u.handler;
998 /* FIXME. This is an awful kludge to get the front ends to update
999 their notion of line number for diagnostic purposes. The line
1000 number should be passed to the handler and they should do it
1001 themselves. Stand-alone CPP must ignore us, otherwise it will
1002 prefix the directive with spaces, hence the 1. Ugh. */
1003 if (pfile->cb.line_change)
1004 (*pfile->cb.line_change)(pfile, &tok, 1);
1008 else if (pfile->cb.def_pragma)
1010 _cpp_backup_tokens (pfile, count);
1011 (*pfile->cb.def_pragma) (pfile, pfile->directive_line);
1013 pfile->state.prevent_expansion--;
1017 do_pragma_once (pfile)
1020 cpp_warning (pfile, "#pragma once is obsolete");
1022 if (pfile->buffer->prev == NULL)
1023 cpp_warning (pfile, "#pragma once in main file");
1025 _cpp_never_reread (pfile->buffer->inc);
1031 do_pragma_poison (pfile)
1034 /* Poison these symbols so that all subsequent usage produces an
1039 pfile->state.poisoned_ok = 1;
1042 _cpp_lex_token (pfile, &tok);
1043 if (tok.type == CPP_EOF)
1045 if (tok.type != CPP_NAME)
1047 cpp_error (pfile, "invalid #pragma GCC poison directive");
1052 if (hp->flags & NODE_POISONED)
1055 if (hp->type == NT_MACRO)
1056 cpp_warning (pfile, "poisoning existing macro \"%s\"", NODE_NAME (hp));
1057 _cpp_free_definition (hp);
1058 hp->flags |= NODE_POISONED | NODE_DIAGNOSTIC;
1060 pfile->state.poisoned_ok = 0;
1063 /* Mark the current header as a system header. This will suppress
1064 some categories of warnings (notably those from -pedantic). It is
1065 intended for use in system libraries that cannot be implemented in
1066 conforming C, but cannot be certain that their headers appear in a
1067 system include directory. To prevent abuse, it is rejected in the
1068 primary source file. */
1070 do_pragma_system_header (pfile)
1073 cpp_buffer *buffer = pfile->buffer;
1075 if (buffer->prev == 0)
1076 cpp_warning (pfile, "#pragma system_header ignored outside include file");
1080 skip_rest_of_line (pfile);
1081 cpp_make_system_header (pfile, 1, 0);
1085 /* Check the modified date of the current include file against a specified
1086 file. Issue a diagnostic, if the specified file is newer. We use this to
1087 determine if a fixed header should be refixed. */
1089 do_pragma_dependency (pfile)
1092 cpp_token header, msg;
1095 if (parse_include (pfile, &header))
1098 ordering = _cpp_compare_file_date (pfile, &header);
1100 cpp_warning (pfile, "cannot find source %s",
1101 cpp_token_as_text (pfile, &header));
1102 else if (ordering > 0)
1104 cpp_warning (pfile, "current file is older than %s",
1105 cpp_token_as_text (pfile, &header));
1106 cpp_get_token (pfile, &msg);
1107 if (msg.type != CPP_EOF)
1109 _cpp_backup_tokens (pfile, 1);
1110 do_diagnostic (pfile, WARNING, 0);
1115 /* Check syntax is "(string-literal)". Returns 0 on success. */
1117 get__Pragma_string (pfile, string)
1123 cpp_get_token (pfile, &paren);
1124 if (paren.type != CPP_OPEN_PAREN)
1127 cpp_get_token (pfile, string);
1128 if (string->type != CPP_STRING && string->type != CPP_WSTRING)
1131 cpp_get_token (pfile, &paren);
1132 return paren.type != CPP_CLOSE_PAREN;
1135 /* Returns a malloced buffer containing a destringized cpp_string by
1136 removing the first \ of \" and \\ sequences. */
1137 static unsigned char *
1138 destringize (in, len)
1139 const cpp_string *in;
1142 const unsigned char *src, *limit;
1143 unsigned char *dest, *result;
1145 dest = result = (unsigned char *) xmalloc (in->len);
1146 for (src = in->text, limit = src + in->len; src < limit;)
1148 /* We know there is a character following the backslash. */
1149 if (*src == '\\' && (src[1] == '\\' || src[1] == '"'))
1154 *len = dest - result;
1159 _cpp_do__Pragma (pfile)
1163 unsigned char *buffer;
1166 if (get__Pragma_string (pfile, &string))
1167 cpp_error (pfile, "_Pragma takes a parenthesized string literal");
1170 /* Ideally, we'd like
1171 token1 _Pragma ("foo") token2
1178 Getting these correct line markers is a little tricky. */
1180 unsigned int orig_line = pfile->line;
1181 buffer = destringize (&string.val.str, &len);
1182 run_directive (pfile, T_PRAGMA, (char *) buffer, len);
1183 free ((PTR) buffer);
1184 pfile->line = orig_line;
1185 pfile->buffer->saved_flags = BOL;
1189 /* Just ignore #sccs, on systems where we define it at all. */
1190 #ifdef SCCS_DIRECTIVE
1193 cpp_reader *pfile ATTRIBUTE_UNUSED;
1204 if (! pfile->state.skipping)
1206 const cpp_hashnode *node = lex_macro_node (pfile);
1209 skip = node->type != NT_MACRO;
1215 push_conditional (pfile, skip, T_IFDEF, 0);
1223 const cpp_hashnode *node = 0;
1225 if (! pfile->state.skipping)
1227 node = lex_macro_node (pfile);
1229 skip = node->type == NT_MACRO;
1235 push_conditional (pfile, skip, T_IFNDEF, node);
1238 /* _cpp_parse_expr puts a macro in a "#if !defined ()" expression in
1239 pfile->mi_ind_cmacro so we can handle multiple-include
1240 optimisations. If macro expansion occurs in the expression, we
1241 cannot treat it as a controlling conditional, since the expansion
1242 could change in the future. That is handled by cpp_get_token. */
1250 if (! pfile->state.skipping)
1251 skip = _cpp_parse_expr (pfile) == 0;
1253 push_conditional (pfile, skip, T_IF, pfile->mi_ind_cmacro);
1256 /* Flip skipping state if appropriate and continue without changing
1257 if_stack; this is so that the error message for missing #endif's
1258 etc. will point to the original #if. */
1264 cpp_buffer *buffer = pfile->buffer;
1265 struct if_stack *ifs = buffer->if_stack;
1268 cpp_error (pfile, "#else without #if");
1271 if (ifs->type == T_ELSE)
1273 cpp_error (pfile, "#else after #else");
1274 cpp_error_with_line (pfile, ifs->line, 0,
1275 "the conditional began here");
1279 /* Skip any future (erroneous) #elses or #elifs. */
1280 pfile->state.skipping = ifs->skip_elses;
1281 ifs->skip_elses = true;
1283 /* Invalidate any controlling macro. */
1286 /* Only check EOL if was not originally skipping. */
1287 if (!ifs->was_skipping)
1292 /* handle a #elif directive by not changing if_stack either. see the
1293 comment above do_else. */
1299 cpp_buffer *buffer = pfile->buffer;
1300 struct if_stack *ifs = buffer->if_stack;
1303 cpp_error (pfile, "#elif without #if");
1306 if (ifs->type == T_ELSE)
1308 cpp_error (pfile, "#elif after #else");
1309 cpp_error_with_line (pfile, ifs->line, 0,
1310 "the conditional began here");
1314 /* Only evaluate this if we aren't skipping elses. During
1315 evaluation, set skipping to false to get lexer warnings. */
1316 if (ifs->skip_elses)
1317 pfile->state.skipping = 1;
1320 pfile->state.skipping = 0;
1321 pfile->state.skipping = ! _cpp_parse_expr (pfile);
1322 ifs->skip_elses = ! pfile->state.skipping;
1325 /* Invalidate any controlling macro. */
1330 /* #endif pops the if stack and resets pfile->state.skipping. */
1336 cpp_buffer *buffer = pfile->buffer;
1337 struct if_stack *ifs = buffer->if_stack;
1340 cpp_error (pfile, "#endif without #if");
1343 /* Only check EOL if was not originally skipping. */
1344 if (!ifs->was_skipping)
1347 /* If potential control macro, we go back outside again. */
1348 if (ifs->next == 0 && ifs->mi_cmacro)
1350 pfile->mi_valid = true;
1351 pfile->mi_cmacro = ifs->mi_cmacro;
1354 buffer->if_stack = ifs->next;
1355 pfile->state.skipping = ifs->was_skipping;
1356 obstack_free (&pfile->buffer_ob, ifs);
1360 /* Push an if_stack entry and set pfile->state.skipping accordingly.
1361 If this is a #if or #ifndef, CMACRO is a potentially controlling
1362 macro - we need to check here that we are at the top of the file. */
1365 push_conditional (pfile, skip, type, cmacro)
1369 const cpp_hashnode *cmacro;
1371 struct if_stack *ifs;
1372 cpp_buffer *buffer = pfile->buffer;
1374 ifs = xobnew (&pfile->buffer_ob, struct if_stack);
1375 ifs->line = pfile->directive_line;
1376 ifs->next = buffer->if_stack;
1377 ifs->skip_elses = pfile->state.skipping || !skip;
1378 ifs->was_skipping = pfile->state.skipping;
1380 /* This condition is effectively a test for top-of-file. */
1381 if (pfile->mi_valid && pfile->mi_cmacro == 0)
1382 ifs->mi_cmacro = cmacro;
1386 pfile->state.skipping = skip;
1387 buffer->if_stack = ifs;
1390 /* Read the tokens of the answer into the macro pool. Only commit the
1391 memory if we intend it as permanent storage, i.e. the #assert case.
1392 Returns 0 on success. */
1395 parse_answer (pfile, answerp, type)
1397 struct answer **answerp;
1400 cpp_token paren, *token;
1401 struct answer *answer;
1403 if (POOL_FRONT (&pfile->macro_pool) + sizeof (struct answer) >
1404 POOL_LIMIT (&pfile->macro_pool))
1405 _cpp_next_chunk (&pfile->macro_pool, sizeof (struct answer), 0);
1406 answer = (struct answer *) POOL_FRONT (&pfile->macro_pool);
1409 /* In a conditional, it is legal to not have an open paren. We
1410 should save the following token in this case. */
1411 cpp_get_token (pfile, &paren);
1413 /* If not a paren, see if we're OK. */
1414 if (paren.type != CPP_OPEN_PAREN)
1416 /* In a conditional no answer is a test for any answer. It
1417 could be followed by any token. */
1420 _cpp_backup_tokens (pfile, 1);
1424 /* #unassert with no answer is valid - it removes all answers. */
1425 if (type == T_UNASSERT && paren.type == CPP_EOF)
1428 cpp_error (pfile, "missing '(' after predicate");
1434 token = &answer->first[answer->count];
1435 /* Check we have room for the token. */
1436 if ((unsigned char *) (token + 1) >= POOL_LIMIT (&pfile->macro_pool))
1438 _cpp_next_chunk (&pfile->macro_pool, sizeof (cpp_token),
1439 (unsigned char **) &answer);
1440 token = &answer->first[answer->count];
1443 cpp_get_token (pfile, token);
1444 if (token->type == CPP_CLOSE_PAREN)
1447 if (token->type == CPP_EOF)
1449 cpp_error (pfile, "missing ')' to complete answer");
1455 if (answer->count == 0)
1457 cpp_error (pfile, "predicate's answer is empty");
1461 /* Drop whitespace at start. */
1462 answer->first->flags &= ~PREV_WHITE;
1465 if (type == T_ASSERT || type == T_UNASSERT)
1470 /* Parses an assertion, returning a pointer to the hash node of the
1471 predicate, or 0 on error. If an answer was supplied, it is placed
1472 in ANSWERP, otherwise it is set to 0. */
1473 static cpp_hashnode *
1474 parse_assertion (pfile, answerp, type)
1476 struct answer **answerp;
1479 cpp_hashnode *result = 0;
1480 cpp_token predicate;
1482 /* We don't expand predicates or answers. */
1483 pfile->state.prevent_expansion++;
1486 cpp_get_token (pfile, &predicate);
1487 if (predicate.type == CPP_EOF)
1488 cpp_error (pfile, "assertion without predicate");
1489 else if (predicate.type != CPP_NAME)
1490 cpp_error (pfile, "predicate must be an identifier");
1491 else if (parse_answer (pfile, answerp, type) == 0)
1493 unsigned int len = NODE_LEN (predicate.val.node);
1494 unsigned char *sym = alloca (len + 1);
1496 /* Prefix '#' to get it out of macro namespace. */
1498 memcpy (sym + 1, NODE_NAME (predicate.val.node), len);
1499 result = cpp_lookup (pfile, sym, len + 1);
1502 pfile->state.prevent_expansion--;
1506 /* Returns a pointer to the pointer to the answer in the answer chain,
1507 or a pointer to NULL if the answer is not in the chain. */
1508 static struct answer **
1509 find_answer (node, candidate)
1511 const struct answer *candidate;
1514 struct answer **result;
1516 for (result = &node->value.answers; *result; result = &(*result)->next)
1518 struct answer *answer = *result;
1520 if (answer->count == candidate->count)
1522 for (i = 0; i < answer->count; i++)
1523 if (! _cpp_equiv_tokens (&answer->first[i], &candidate->first[i]))
1526 if (i == answer->count)
1534 /* Test an assertion within a preprocessor conditional. Returns
1535 non-zero on failure, zero on success. On success, the result of
1536 the test is written into VALUE. */
1538 _cpp_test_assertion (pfile, value)
1542 struct answer *answer;
1545 node = parse_assertion (pfile, &answer, T_IF);
1547 *value = (node->type == NT_ASSERTION &&
1548 (answer == 0 || *find_answer (node, answer) != 0));
1550 /* We don't commit the memory for the answer - it's temporary only. */
1558 struct answer *new_answer;
1561 node = parse_assertion (pfile, &new_answer, T_ASSERT);
1564 /* Place the new answer in the answer list. First check there
1565 is not a duplicate. */
1566 new_answer->next = 0;
1567 if (node->type == NT_ASSERTION)
1569 if (*find_answer (node, new_answer))
1571 cpp_warning (pfile, "\"%s\" re-asserted", NODE_NAME (node) + 1);
1574 new_answer->next = node->value.answers;
1576 node->type = NT_ASSERTION;
1577 node->value.answers = new_answer;
1578 POOL_COMMIT (&pfile->macro_pool, (sizeof (struct answer)
1579 + (new_answer->count - 1)
1580 * sizeof (cpp_token)));
1589 struct answer *answer;
1591 node = parse_assertion (pfile, &answer, T_UNASSERT);
1592 /* It isn't an error to #unassert something that isn't asserted. */
1593 if (node && node->type == NT_ASSERTION)
1597 struct answer **p = find_answer (node, answer), *temp;
1599 /* Remove the answer from the list. */
1604 /* Did we free the last answer? */
1605 if (node->value.answers == 0)
1606 node->type = NT_VOID;
1609 _cpp_free_definition (node);
1612 /* We don't commit the memory for the answer - it's temporary only. */
1615 /* These are for -D, -U, -A. */
1617 /* Process the string STR as if it appeared as the body of a #define.
1618 If STR is just an identifier, define it with value 1.
1619 If STR has anything after the identifier, then it should
1620 be identifier=definition. */
1623 cpp_define (pfile, str)
1630 /* Copy the entire option so we can modify it.
1631 Change the first "=" in the string to a space. If there is none,
1632 tack " 1" on the end. */
1634 /* Length including the null. */
1635 count = strlen (str);
1636 buf = (char *) alloca (count + 2);
1637 memcpy (buf, str, count);
1639 p = strchr (str, '=');
1648 run_directive (pfile, T_DEFINE, buf, count);
1651 /* Slight variant of the above for use by initialize_builtins. */
1653 _cpp_define_builtin (pfile, str)
1657 run_directive (pfile, T_DEFINE, str, strlen (str));
1660 /* Process MACRO as if it appeared as the body of an #undef. */
1662 cpp_undef (pfile, macro)
1666 run_directive (pfile, T_UNDEF, macro, strlen (macro));
1669 /* Process the string STR as if it appeared as the body of a #assert. */
1671 cpp_assert (pfile, str)
1675 handle_assertion (pfile, str, T_ASSERT);
1678 /* Process STR as if it appeared as the body of an #unassert. */
1680 cpp_unassert (pfile, str)
1684 handle_assertion (pfile, str, T_UNASSERT);
1687 /* Common code for cpp_assert (-A) and cpp_unassert (-A-). */
1689 handle_assertion (pfile, str, type)
1694 size_t count = strlen (str);
1695 const char *p = strchr (str, '=');
1699 /* Copy the entire option so we can modify it. Change the first
1700 "=" in the string to a '(', and tack a ')' on the end. */
1701 char *buf = (char *) alloca (count + 1);
1703 memcpy (buf, str, count);
1709 run_directive (pfile, type, str, count);
1712 /* The number of errors for a given reader. */
1717 return pfile->errors;
1720 /* The options structure. */
1722 cpp_get_options (pfile)
1725 return &pfile->opts;
1728 /* The callbacks structure. */
1730 cpp_get_callbacks (pfile)
1736 /* The line map set. */
1737 const struct line_maps *
1738 cpp_get_line_maps (pfile)
1741 return &pfile->line_maps;
1744 /* Copy the given callbacks structure to our own. */
1746 cpp_set_callbacks (pfile, cb)
1753 /* Push a new buffer on the buffer stack. Returns the new buffer; it
1754 doesn't fail. It does not generate a file change call back; that
1755 is the responsibility of the caller. */
1757 cpp_push_buffer (pfile, buffer, len, from_stage3, return_at_eof)
1759 const U_CHAR *buffer;
1764 cpp_buffer *new = xobnew (&pfile->buffer_ob, cpp_buffer);
1766 /* Clears, amongst other things, if_stack and mi_cmacro. */
1767 memset (new, 0, sizeof (cpp_buffer));
1769 new->line_base = new->buf = new->cur = buffer;
1770 new->rlimit = buffer + len;
1772 /* No read ahead or extra char initially. */
1773 new->read_ahead = EOF;
1774 new->extra_char = EOF;
1775 new->from_stage3 = from_stage3;
1776 new->prev = pfile->buffer;
1777 new->return_at_eof = return_at_eof;
1778 new->saved_flags = BOL;
1780 pfile->buffer = new;
1785 /* If called from do_line, pops a single buffer. Otherwise pops all
1786 buffers until a real file is reached. Generates appropriate
1789 _cpp_pop_buffer (pfile)
1792 cpp_buffer *buffer = pfile->buffer;
1793 struct if_stack *ifs;
1795 /* Walk back up the conditional stack till we reach its level at
1796 entry to this file, issuing error messages. */
1797 for (ifs = buffer->if_stack; ifs; ifs = ifs->next)
1798 cpp_error_with_line (pfile, ifs->line, 0,
1799 "unterminated #%s", dtable[ifs->type].name);
1801 /* In case of a missing #endif. */
1802 pfile->state.skipping = 0;
1804 /* Update the reader's buffer before _cpp_do_file_change. */
1805 pfile->buffer = buffer->prev;
1808 _cpp_pop_file_buffer (pfile, buffer->inc);
1810 obstack_free (&pfile->buffer_ob, buffer);
1814 _cpp_init_directives (pfile)
1820 /* Register the directives. */
1821 for (i = 0; i < (unsigned int) N_DIRECTIVES; i++)
1823 node = cpp_lookup (pfile, dtable[i].name, dtable[i].length);
1824 node->directive_index = i + 1;