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. */
30 /* Chained list of answers to an assertion. */
38 /* Stack of conditionals currently in progress
39 (including both successful and failing conditionals). */
43 struct if_stack *next;
44 cpp_lexer_pos pos; /* line and column where condition started */
45 const cpp_hashnode *mi_cmacro;/* macro name for #ifndef around entire file */
46 unsigned char was_skipping; /* Value of pfile->skipping before this if. */
47 int type; /* type of last directive seen in this group */
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 run_directive PARAMS ((cpp_reader *, int,
87 const char *, size_t));
88 static int glue_header_name PARAMS ((cpp_reader *, cpp_token *));
89 static int parse_include PARAMS ((cpp_reader *, cpp_token *));
90 static void push_conditional PARAMS ((cpp_reader *, int, int,
91 const cpp_hashnode *));
92 static unsigned int read_flag PARAMS ((cpp_reader *, unsigned int));
93 static int strtoul_for_line PARAMS ((const U_CHAR *, unsigned int,
95 static void do_diagnostic PARAMS ((cpp_reader *, enum error_type, int));
96 static cpp_hashnode *lex_macro_node PARAMS ((cpp_reader *));
97 static void do_include_common PARAMS ((cpp_reader *, enum include_type));
98 static void do_pragma_once PARAMS ((cpp_reader *));
99 static void do_pragma_poison PARAMS ((cpp_reader *));
100 static void do_pragma_system_header PARAMS ((cpp_reader *));
101 static void do_pragma_dependency PARAMS ((cpp_reader *));
102 static int get__Pragma_string PARAMS ((cpp_reader *, cpp_token *));
103 static unsigned char *destringize PARAMS ((const cpp_string *,
105 static int parse_answer PARAMS ((cpp_reader *, struct answer **, int));
106 static cpp_hashnode *parse_assertion PARAMS ((cpp_reader *, struct answer **,
108 static struct answer ** find_answer PARAMS ((cpp_hashnode *,
109 const struct answer *));
110 static void handle_assertion PARAMS ((cpp_reader *, const char *, int));
112 /* This is the table of directive handlers. It is ordered by
113 frequency of occurrence; the numbers at the end are directive
114 counts from all the source code I have lying around (egcs and libc
115 CVS as of 1999-05-18, plus grub-0.5.91, linux-2.2.9, and
116 pcmcia-cs-3.0.9). This is no longer important as directive lookup
117 is now O(1). All extensions other than #warning and #include_next
118 are deprecated. The name is where the extension appears to have
121 #define DIRECTIVE_TABLE \
122 D(define, T_DEFINE = 0, KANDR, IN_I) /* 270554 */ \
123 D(include, T_INCLUDE, KANDR, INCL) /* 52262 */ \
124 D(endif, T_ENDIF, KANDR, COND) /* 45855 */ \
125 D(ifdef, T_IFDEF, KANDR, COND | IF_COND) /* 22000 */ \
126 D(if, T_IF, KANDR, COND | IF_COND) /* 18162 */ \
127 D(else, T_ELSE, KANDR, COND) /* 9863 */ \
128 D(ifndef, T_IFNDEF, KANDR, COND | IF_COND) /* 9675 */ \
129 D(undef, T_UNDEF, KANDR, IN_I) /* 4837 */ \
130 D(line, T_LINE, KANDR, IN_I) /* 2465 */ \
131 D(elif, T_ELIF, STDC89, COND) /* 610 */ \
132 D(error, T_ERROR, STDC89, 0) /* 475 */ \
133 D(pragma, T_PRAGMA, STDC89, IN_I) /* 195 */ \
134 D(warning, T_WARNING, EXTENSION, 0) /* 22 */ \
135 D(include_next, T_INCLUDE_NEXT, EXTENSION, INCL) /* 19 */ \
136 D(ident, T_IDENT, EXTENSION, IN_I) /* 11 */ \
137 D(import, T_IMPORT, EXTENSION, INCL) /* 0 ObjC */ \
138 D(assert, T_ASSERT, EXTENSION, 0) /* 0 SVR4 */ \
139 D(unassert, T_UNASSERT, EXTENSION, 0) /* 0 SVR4 */ \
140 SCCS_ENTRY /* 0 SVR4? */
142 /* #sccs is not always recognized. */
143 #ifdef SCCS_DIRECTIVE
144 # define SCCS_ENTRY D(sccs, T_SCCS, EXTENSION, 0)
146 # define SCCS_ENTRY /* nothing */
149 /* Use the table to generate a series of prototypes, an enum for the
150 directive names, and an array of directive handlers. */
152 /* The directive-processing functions are declared to return int
153 instead of void, because some old compilers have trouble with
154 pointers to functions returning void. */
156 /* Don't invoke CONCAT2 with any whitespace or K&R cc will fail. */
157 #define D(name, t, o, f) static void CONCAT2(do_,name) PARAMS ((cpp_reader *));
161 #define D(n, tag, o, f) tag,
169 /* Don't invoke CONCAT2 with any whitespace or K&R cc will fail. */
170 #define D(name, t, origin, flags) \
171 { CONCAT2(do_,name), (const U_CHAR *) STRINGX(name), \
172 sizeof STRINGX(name) - 1, origin, flags },
173 static const directive dtable[] =
178 #undef DIRECTIVE_TABLE
180 /* Skip any remaining tokens in a directive. */
182 skip_rest_of_line (pfile)
187 /* Discard all input lookaheads. */
188 while (pfile->la_read)
189 _cpp_release_lookahead (pfile);
191 /* Discard all stacked contexts. */
192 while (pfile->context != &pfile->base_context)
193 _cpp_pop_context (pfile);
195 /* Sweep up all tokens remaining on the line. */
196 pfile->state.prevent_expansion++;
197 while (!pfile->state.next_bol)
198 _cpp_lex_token (pfile, &token);
199 pfile->state.prevent_expansion--;
202 /* Ensure there are no stray tokens at the end of a directive. */
207 if (!pfile->state.next_bol)
211 _cpp_lex_token (pfile, &token);
212 if (token.type != CPP_EOF)
213 cpp_pedwarn (pfile, "extra tokens at end of #%s directive",
214 pfile->directive->name);
218 /* Called when entering a directive, _Pragma or command-line directive. */
220 start_directive (pfile)
223 cpp_buffer *buffer = pfile->buffer;
225 /* Setup in-directive state. */
226 pfile->state.in_directive = 1;
227 pfile->state.save_comments = 0;
229 /* Some handlers need the position of the # for diagnostics. */
230 pfile->directive_pos = pfile->lexer_pos;
232 /* Don't save directive tokens for external clients. */
233 pfile->la_saved = pfile->la_write;
236 /* Turn off skipping. */
237 buffer->was_skipping = pfile->skipping;
241 /* Called when leaving a directive, _Pragma or command-line directive. */
243 end_directive (pfile, skip_line)
247 cpp_buffer *buffer = pfile->buffer;
249 /* Restore pfile->skipping before skip_rest_of_line, so that e.g.
250 __VA_ARGS__ in the rest of the directive doesn't warn. */
251 pfile->skipping = buffer->was_skipping;
253 /* We don't skip for an assembler #. */
255 skip_rest_of_line (pfile);
258 pfile->la_write = pfile->la_saved;
259 pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments);
260 pfile->state.in_directive = 0;
261 pfile->state.angled_headers = 0;
262 pfile->state.line_extension = 0;
263 pfile->directive = 0;
266 /* Check if a token's name matches that of a known directive. Put in
267 this file to save exporting dtable and other unneeded information. */
269 _cpp_handle_directive (pfile, indented)
273 cpp_buffer *buffer = pfile->buffer;
274 const directive *dir = 0;
278 start_directive (pfile);
280 /* Lex the directive name directly. */
281 _cpp_lex_token (pfile, &dname);
283 if (dname.type == CPP_NAME)
285 unsigned int index = dname.val.node->directive_index;
287 dir = &dtable[index - 1];
289 else if (dname.type == CPP_NUMBER)
291 /* # followed by a number is equivalent to #line. Do not
292 recognize this form in assembly language source files or
293 skipped conditional groups. Complain about this form if
294 we're being pedantic, but not if this is regurgitated input
295 (preprocessed or fed back in by the C++ frontend). */
296 if (! buffer->was_skipping && CPP_OPTION (pfile, lang) != CLK_ASM)
298 dir = &dtable[T_LINE];
299 pfile->state.line_extension = 1;
300 _cpp_push_token (pfile, &dname, &pfile->directive_pos);
301 if (CPP_PEDANTIC (pfile) && ! CPP_OPTION (pfile, preprocessed))
302 cpp_pedwarn (pfile, "# followed by integer");
306 pfile->directive = dir;
309 /* Make sure we lex headers correctly, whether skipping or not. */
310 pfile->state.angled_headers = dir->flags & INCL;
312 /* If we are rescanning preprocessed input, only directives tagged
313 with IN_I are honored, and the warnings below are suppressed. */
314 if (CPP_OPTION (pfile, preprocessed))
316 /* Kluge alert. In order to be sure that code like this
319 does not cause '#define foo bar' to get executed when
320 compiled with -save-temps, we recognize directives in
321 -fpreprocessed mode only if the # is in column 1 and the
322 directive name starts in column 2. This output can only
323 be generated by the directive callbacks in cppmain.c (see
324 also the special case in scan_buffer). */
325 if (dir->flags & IN_I && !indented && !(dname.flags & PREV_WHITE))
326 (*dir->handler) (pfile);
327 /* That check misses '# 123' linemarkers. Let them through too. */
328 else if (dname.type == CPP_NUMBER)
329 (*dir->handler) (pfile);
332 /* We don't want to process this directive. Put back the
333 tokens so caller will see them (and issue an error,
335 _cpp_push_token (pfile, &dname, &pfile->directive_pos);
341 /* Traditionally, a directive is ignored unless its # is in
342 column 1. Therefore in code intended to work with K+R
343 compilers, directives added by C89 must have their #
344 indented, and directives present in traditional C must
345 not. This is true even of directives in skipped
346 conditional blocks. */
347 if (CPP_WTRADITIONAL (pfile))
349 if (dir == &dtable[T_ELIF])
351 "suggest not using #elif in traditional C");
352 else if (indented && dir->origin == KANDR)
354 "traditional C ignores #%s with the # indented",
356 else if (!indented && dir->origin != KANDR)
358 "suggest hiding #%s from traditional C with an indented #",
362 /* If we are skipping a failed conditional group, all
363 non-conditional directives are ignored. */
364 if (! buffer->was_skipping || (dir->flags & COND))
366 /* Issue -pedantic warnings for extensions. */
367 if (CPP_PEDANTIC (pfile) && dir->origin == EXTENSION)
368 cpp_pedwarn (pfile, "#%s is a GCC extension", dir->name);
370 /* If we have a directive that is not an opening
371 conditional, invalidate any control macro. */
372 if (! (dir->flags & IF_COND))
373 pfile->mi_state = MI_FAILED;
375 (*dir->handler) (pfile);
379 else if (dname.type != CPP_EOF && ! buffer->was_skipping)
381 /* An unknown directive. Don't complain about it in assembly
382 source: we don't know where the comments are, and # may
383 introduce assembler pseudo-ops. Don't complain about invalid
384 directives in skipped conditional groups (6.10 p4). */
385 if (CPP_OPTION (pfile, lang) == CLK_ASM)
387 /* Output the # and lookahead token for the assembler. */
388 _cpp_push_token (pfile, &dname, &pfile->directive_pos);
392 cpp_error (pfile, "invalid preprocessing directive #%s",
393 cpp_token_as_text (pfile, &dname));
396 end_directive (pfile, skip);
400 /* Directive handler wrapper used by the command line option
403 run_directive (pfile, dir_no, type, buf, count)
406 enum cpp_buffer_type type;
410 unsigned int output_line = pfile->lexer_pos.output_line;
413 buffer = cpp_push_buffer (pfile, (const U_CHAR *) buf, count, type, 0);
415 if (dir_no == T_PRAGMA)
417 /* A kludge to avoid line markers for _Pragma. */
418 pfile->lexer_pos.output_line = output_line;
419 /* Avoid interpretation of directives in a _Pragma string. */
420 pfile->state.next_bol = 0;
423 start_directive (pfile);
424 pfile->state.prevent_expansion++;
425 (void) (*dtable[dir_no].handler) (pfile);
426 pfile->state.prevent_expansion--;
428 end_directive (pfile, 1);
430 cpp_pop_buffer (pfile);
433 /* Checks for validity the macro name in #define, #undef, #ifdef and
434 #ifndef directives. */
435 static cpp_hashnode *
436 lex_macro_node (pfile)
441 /* Lex the macro name directly. */
442 _cpp_lex_token (pfile, &token);
444 /* The token immediately after #define must be an identifier. That
445 identifier is not allowed to be "defined". See predefined macro
446 names (6.10.8.4). In C++, it is not allowed to be any of the
447 <iso646.h> macro names (which are keywords in C++) either. */
449 if (token.type != CPP_NAME)
451 if (token.type == CPP_EOF)
452 cpp_error (pfile, "no macro name given in #%s directive",
453 pfile->directive->name);
454 else if (token.flags & NAMED_OP)
456 "\"%s\" cannot be used as a macro name as it is an operator in C++",
457 NODE_NAME (token.val.node));
459 cpp_error (pfile, "macro names must be identifiers");
463 cpp_hashnode *node = token.val.node;
465 /* In Objective C, some keywords begin with '@', but general
466 identifiers do not, and you're not allowed to #define them. */
467 if (node == pfile->spec_nodes.n_defined || NODE_NAME (node)[0] == '@')
468 cpp_error (pfile, "\"%s\" cannot be used as a macro name",
470 else if (!(node->flags & NODE_POISONED))
477 /* Process a #define directive. Most work is done in cppmacro.c. */
482 cpp_hashnode *node = lex_macro_node (pfile);
486 if (_cpp_create_definition (pfile, node))
487 if (pfile->cb.define)
488 (*pfile->cb.define) (pfile, node);
492 /* Handle #undef. Marks the identifier NT_VOID in the hash table. */
497 cpp_hashnode *node = lex_macro_node (pfile);
499 /* 6.10.3.5 paragraph 2: [#undef] is ignored if the specified identifier
500 is not currently defined as a macro name. */
501 if (node && node->type == NT_MACRO)
504 (*pfile->cb.undef) (pfile, node);
506 if (node->flags & NODE_WARN)
507 cpp_warning (pfile, "undefining \"%s\"", NODE_NAME (node));
509 _cpp_free_definition (node);
514 /* Helper routine used by parse_include. Reinterpret the current line
515 as an h-char-sequence (< ... >); we are looking at the first token
516 after the <. Returns zero on success. */
518 glue_header_name (pfile, header)
523 unsigned char *buffer, *token_mem;
524 size_t len, total_len = 0, capacity = 1024;
526 /* To avoid lexed tokens overwriting our glued name, we can only
527 allocate from the string pool once we've lexed everything. */
529 buffer = (unsigned char *) xmalloc (capacity);
532 cpp_get_token (pfile, &token);
534 if (token.type == CPP_GREATER || token.type == CPP_EOF)
537 len = cpp_token_len (&token);
538 if (total_len + len > capacity)
540 capacity = (capacity + len) * 2;
541 buffer = (unsigned char *) xrealloc (buffer, capacity);
544 if (token.flags & PREV_WHITE)
545 buffer[total_len++] = ' ';
547 total_len = cpp_spell_token (pfile, &token, &buffer[total_len]) - buffer;
550 if (token.type == CPP_EOF)
551 cpp_error (pfile, "missing terminating > character");
554 token_mem = _cpp_pool_alloc (&pfile->ident_pool, total_len + 1);
555 memcpy (token_mem, buffer, total_len);
556 token_mem[total_len] = '\0';
558 header->type = CPP_HEADER_NAME;
559 header->flags &= ~PREV_WHITE;
560 header->val.str.len = total_len;
561 header->val.str.text = token_mem;
565 return token.type == CPP_EOF;
568 /* Parse the header name of #include, #include_next, #import and
569 #pragma dependency. Returns zero on success. */
571 parse_include (pfile, header)
575 int is_pragma = pfile->directive == &dtable[T_PRAGMA];
576 const unsigned char *dir;
579 dir = U"pragma dependency";
581 dir = pfile->directive->name;
583 /* Allow macro expansion. */
584 cpp_get_token (pfile, header);
585 if (header->type != CPP_STRING && header->type != CPP_HEADER_NAME)
587 if (header->type != CPP_LESS)
589 cpp_error (pfile, "#%s expects \"FILENAME\" or <FILENAME>", dir);
592 if (glue_header_name (pfile, header))
596 if (header->val.str.len == 0)
598 cpp_error (pfile, "empty file name in #%s", dir);
605 /* Get out of macro context, if we are. */
606 skip_rest_of_line (pfile);
607 if (pfile->cb.include)
608 (*pfile->cb.include) (pfile, dir, header);
614 /* Handle #include, #include_next and #import. */
616 do_include_common (pfile, type)
618 enum include_type type;
622 if (!parse_include (pfile, &header))
624 /* Prevent #include recursion. */
625 if (pfile->buffer_stack_depth >= CPP_STACK_MAX)
626 cpp_fatal (pfile, "#include nested too deeply");
627 else if (pfile->context->prev)
628 cpp_ice (pfile, "attempt to push file buffer with contexts stacked");
631 /* For #include_next, if this is the primary source file,
632 warn and use the normal search logic. */
633 if (type == IT_INCLUDE_NEXT && ! pfile->buffer->prev)
635 cpp_warning (pfile, "#include_next in primary source file");
639 _cpp_execute_include (pfile, &header, type);
648 do_include_common (pfile, IT_INCLUDE);
655 if (!pfile->import_warning && CPP_OPTION (pfile, warn_import))
657 pfile->import_warning = 1;
659 "#import is obsolete, use an #ifndef wrapper in the header file");
662 do_include_common (pfile, IT_IMPORT);
666 do_include_next (pfile)
669 do_include_common (pfile, IT_INCLUDE_NEXT);
672 /* Subroutine of do_line. Read possible flags after file name. LAST
673 is the last flag seen; 0 if this is the first flag. Return the flag
674 if it is valid, 0 at the end of the directive. Otherwise complain. */
677 read_flag (pfile, last)
683 _cpp_lex_token (pfile, &token);
684 if (token.type == CPP_NUMBER && token.val.str.len == 1)
686 unsigned int flag = token.val.str.text[0] - '0';
688 if (flag > last && flag <= 4
689 && (flag != 4 || last == 3)
690 && (flag != 2 || last == 0))
694 if (token.type != CPP_EOF)
695 cpp_error (pfile, "invalid flag \"%s\" in line directive",
696 cpp_token_as_text (pfile, &token));
700 /* Another subroutine of do_line. Convert a number in STR, of length
701 LEN, to binary; store it in NUMP, and return 0 if the number was
702 well-formed, 1 if not. Temporary, hopefully. */
704 strtoul_for_line (str, len, nump)
709 unsigned long reg = 0;
723 /* Interpret #line command.
724 Note that the filename string (if any) is treated as if it were an
725 include filename. That means no escape handling. */
731 cpp_buffer *buffer = pfile->buffer;
732 const char *filename = buffer->nominal_fname;
733 unsigned int lineno = buffer->lineno;
734 enum cpp_fc_reason reason = FC_RENAME;
735 unsigned long new_lineno;
739 /* C99 raised the minimum limit on #line numbers. */
740 cap = CPP_OPTION (pfile, c99) ? 2147483647 : 32767;
742 /* #line commands expand macros. */
743 cpp_get_token (pfile, &token);
744 if (token.type != CPP_NUMBER
745 || strtoul_for_line (token.val.str.text, token.val.str.len, &new_lineno))
747 cpp_error (pfile, "\"%s\" after #line is not a positive integer",
748 cpp_token_as_text (pfile, &token));
752 if (CPP_PEDANTIC (pfile) && (new_lineno == 0 || new_lineno > cap))
753 cpp_pedwarn (pfile, "line number out of range");
755 cpp_get_token (pfile, &token);
756 if (token.type == CPP_STRING)
758 const char *fname = (const char *) token.val.str.text;
760 /* Only accept flags for the # 55 form. */
761 if (! pfile->state.line_extension)
765 int flag = 0, sysp = 0;
767 flag = read_flag (pfile, flag);
771 flag = read_flag (pfile, flag);
776 flag = read_flag (pfile, flag);
781 flag = read_flag (pfile, flag);
783 sysp = 2, read_flag (pfile, flag);
786 if (reason == FC_ENTER)
788 /* Fake a buffer stack for diagnostics. */
789 cpp_push_buffer (pfile, 0, 0, BUF_FAKE, fname);
790 /* Fake an include for cpp_included. */
791 _cpp_fake_include (pfile, fname);
792 buffer = pfile->buffer;
794 else if (reason == FC_LEAVE)
796 if (buffer->type != BUF_FAKE)
797 cpp_warning (pfile, "file \"%s\" left but not entered",
798 buffer->nominal_fname);
801 cpp_pop_buffer (pfile);
802 buffer = pfile->buffer;
803 #ifdef ENABLE_CHECKING
804 if (strcmp (buffer->nominal_fname, fname))
805 cpp_warning (pfile, "expected to return to file \"%s\"",
806 buffer->nominal_fname);
807 if (buffer->lineno + 1 != new_lineno)
808 cpp_warning (pfile, "expected to return to line number %u",
810 if (buffer->sysp != sysp)
811 cpp_warning (pfile, "header flags for \"%s\" have changed",
812 buffer->nominal_fname);
818 buffer->nominal_fname = fname;
820 else if (token.type != CPP_EOF)
822 cpp_error (pfile, "\"%s\" is not a valid filename",
823 cpp_token_as_text (pfile, &token));
827 /* Our line number is incremented after the directive is processed. */
828 buffer->lineno = new_lineno - 1;
829 _cpp_do_file_change (pfile, reason, filename, lineno);
832 /* Arrange the file_change callback. */
834 _cpp_do_file_change (pfile, reason, from_file, from_lineno)
836 enum cpp_fc_reason reason;
837 const char *from_file;
838 unsigned int from_lineno;
840 if (pfile->cb.file_change)
843 cpp_buffer *buffer = pfile->buffer;
846 fc.to.filename = buffer->nominal_fname;
847 fc.to.lineno = buffer->lineno + 1;
848 fc.sysp = buffer->sysp;
849 fc.externc = CPP_OPTION (pfile, cplusplus) && buffer->sysp == 2;
851 /* Caller doesn't need to handle FC_ENTER. */
852 if (reason == FC_ENTER)
856 from_file = buffer->prev->nominal_fname;
857 from_lineno = buffer->prev->lineno;
862 /* Special case for file "foo.i" with "# 1 foo.c" on first line. */
863 else if (reason == FC_RENAME && ! buffer->prev
864 && pfile->directive_pos.line == 1)
867 fc.from.filename = from_file;
868 fc.from.lineno = from_lineno;
869 pfile->cb.file_change (pfile, &fc);
874 * Report a warning or error detected by the program we are
875 * processing. Use the directive's tokens in the error message.
879 do_diagnostic (pfile, code, print_dir)
881 enum error_type code;
884 if (_cpp_begin_message (pfile, code, NULL, 0))
887 fprintf (stderr, "#%s ", pfile->directive->name);
888 pfile->state.prevent_expansion++;
889 cpp_output_line (pfile, stderr);
890 pfile->state.prevent_expansion--;
898 do_diagnostic (pfile, ERROR, 1);
905 /* We want #warning diagnostics to be emitted in system headers too. */
906 do_diagnostic (pfile, WARNING_SYSHDR, 1);
909 /* Report program identification. */
917 cpp_get_token (pfile, &str);
918 if (str.type != CPP_STRING)
919 cpp_error (pfile, "invalid #ident");
920 else if (pfile->cb.ident)
921 (*pfile->cb.ident) (pfile, &str.val.str);
926 /* Pragmata handling. We handle some of these, and pass the rest on
927 to the front end. C99 defines three pragmas and says that no macro
928 expansion is to be performed on them; whether or not macro
929 expansion happens for other pragmas is implementation defined.
930 This implementation never macro-expands the text after #pragma. */
932 /* Sub-handlers for the pragmas needing treatment here.
933 They return 1 if the token buffer is to be popped, 0 if not. */
936 struct pragma_entry *next;
941 void (*handler) PARAMS ((cpp_reader *));
942 struct pragma_entry *space;
947 cpp_register_pragma (pfile, space, name, handler)
951 void (*handler) PARAMS ((cpp_reader *));
953 struct pragma_entry **x, *new;
959 struct pragma_entry *p = pfile->pragmas;
960 len = strlen (space);
963 if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
970 cpp_ice (pfile, "unknown #pragma namespace %s", space);
975 new = xnew (struct pragma_entry);
977 new->len = strlen (name);
979 new->u.handler = handler;
986 cpp_register_pragma_space (pfile, space)
990 struct pragma_entry *new;
991 const struct pragma_entry *p = pfile->pragmas;
992 size_t len = strlen (space);
996 if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
997 /* Multiple different callers are allowed to register the same
1003 new = xnew (struct pragma_entry);
1009 new->next = pfile->pragmas;
1010 pfile->pragmas = new;
1014 _cpp_init_internal_pragmas (pfile)
1018 cpp_register_pragma (pfile, 0, "poison", do_pragma_poison);
1019 cpp_register_pragma (pfile, 0, "once", do_pragma_once);
1022 cpp_register_pragma_space (pfile, "GCC");
1024 cpp_register_pragma (pfile, "GCC", "poison", do_pragma_poison);
1025 cpp_register_pragma (pfile, "GCC", "system_header", do_pragma_system_header);
1026 cpp_register_pragma (pfile, "GCC", "dependency", do_pragma_dependency);
1033 const struct pragma_entry *p;
1038 pfile->state.prevent_expansion++;
1039 cpp_start_lookahead (pfile);
1042 cpp_get_token (pfile, &tok);
1043 if (tok.type == CPP_NAME)
1045 const cpp_hashnode *node = tok.val.node;
1046 size_t len = NODE_LEN (node);
1050 if (strlen (p->name) == len
1051 && !memcmp (p->name, NODE_NAME (node), len))
1060 (*p->u.handler) (pfile);
1069 cpp_stop_lookahead (pfile, drop);
1070 pfile->state.prevent_expansion--;
1072 if (!drop && pfile->cb.def_pragma)
1073 (*pfile->cb.def_pragma) (pfile);
1077 do_pragma_once (pfile)
1080 cpp_warning (pfile, "#pragma once is obsolete");
1082 if (pfile->buffer->prev == NULL)
1083 cpp_warning (pfile, "#pragma once in main file");
1085 _cpp_never_reread (pfile->buffer->inc);
1091 do_pragma_poison (pfile)
1094 /* Poison these symbols so that all subsequent usage produces an
1099 pfile->state.poisoned_ok = 1;
1102 _cpp_lex_token (pfile, &tok);
1103 if (tok.type == CPP_EOF)
1105 if (tok.type != CPP_NAME)
1107 cpp_error (pfile, "invalid #pragma GCC poison directive");
1112 if (hp->flags & NODE_POISONED)
1115 if (hp->type == NT_MACRO)
1116 cpp_warning (pfile, "poisoning existing macro \"%s\"", NODE_NAME (hp));
1117 _cpp_free_definition (hp);
1118 hp->flags |= NODE_POISONED | NODE_DIAGNOSTIC;
1120 pfile->state.poisoned_ok = 0;
1122 #if 0 /* Doesn't quite work yet. */
1123 if (tok.type == CPP_EOF && pfile->cb.poison)
1124 (*pfile->cb.poison) (pfile);
1128 /* Mark the current header as a system header. This will suppress
1129 some categories of warnings (notably those from -pedantic). It is
1130 intended for use in system libraries that cannot be implemented in
1131 conforming C, but cannot be certain that their headers appear in a
1132 system include directory. To prevent abuse, it is rejected in the
1133 primary source file. */
1135 do_pragma_system_header (pfile)
1138 cpp_buffer *buffer = pfile->buffer;
1140 if (buffer->prev == 0)
1141 cpp_warning (pfile, "#pragma system_header ignored outside include file");
1143 cpp_make_system_header (pfile, 1, 0);
1148 /* Check the modified date of the current include file against a specified
1149 file. Issue a diagnostic, if the specified file is newer. We use this to
1150 determine if a fixed header should be refixed. */
1152 do_pragma_dependency (pfile)
1155 cpp_token header, msg;
1158 if (parse_include (pfile, &header))
1161 ordering = _cpp_compare_file_date (pfile, &header);
1163 cpp_warning (pfile, "cannot find source %s",
1164 cpp_token_as_text (pfile, &header));
1165 else if (ordering > 0)
1167 cpp_warning (pfile, "current file is older than %s",
1168 cpp_token_as_text (pfile, &header));
1169 cpp_start_lookahead (pfile);
1170 cpp_get_token (pfile, &msg);
1171 cpp_stop_lookahead (pfile, msg.type == CPP_EOF);
1172 if (msg.type != CPP_EOF)
1173 do_diagnostic (pfile, WARNING, 0);
1177 /* Check syntax is "(string-literal)". Returns 0 on success. */
1179 get__Pragma_string (pfile, string)
1185 cpp_get_token (pfile, &paren);
1186 if (paren.type != CPP_OPEN_PAREN)
1189 cpp_get_token (pfile, string);
1190 if (string->type != CPP_STRING && string->type != CPP_WSTRING)
1193 cpp_get_token (pfile, &paren);
1194 return paren.type != CPP_CLOSE_PAREN;
1197 /* Returns a malloced buffer containing a destringized cpp_string by
1198 removing the first \ of \" and \\ sequences. */
1199 static unsigned char *
1200 destringize (in, len)
1201 const cpp_string *in;
1204 const unsigned char *src, *limit;
1205 unsigned char *dest, *result;
1207 dest = result = (unsigned char *) xmalloc (in->len);
1208 for (src = in->text, limit = src + in->len; src < limit;)
1210 /* We know there is a character following the backslash. */
1211 if (*src == '\\' && (src[1] == '\\' || src[1] == '"'))
1216 *len = dest - result;
1221 _cpp_do__Pragma (pfile)
1225 unsigned char *buffer;
1228 if (get__Pragma_string (pfile, &string))
1230 cpp_error (pfile, "_Pragma takes a parenthesized string literal");
1234 buffer = destringize (&string.val.str, &len);
1235 run_directive (pfile, T_PRAGMA, BUF_PRAGMA, (char *) buffer, len);
1236 free ((PTR) buffer);
1239 /* Just ignore #sccs, on systems where we define it at all. */
1240 #ifdef SCCS_DIRECTIVE
1243 cpp_reader *pfile ATTRIBUTE_UNUSED;
1254 if (! pfile->buffer->was_skipping)
1256 const cpp_hashnode *node = lex_macro_node (pfile);
1259 skip = node->type != NT_MACRO;
1265 push_conditional (pfile, skip, T_IFDEF, 0);
1273 const cpp_hashnode *node = 0;
1275 if (! pfile->buffer->was_skipping)
1277 node = lex_macro_node (pfile);
1279 skip = node->type == NT_MACRO;
1285 push_conditional (pfile, skip, T_IFNDEF, node);
1288 /* #if cooperates with parse_defined to handle multiple-include
1289 optimisations. If macro expansions or identifiers appear in the
1290 expression, we cannot treat it as a controlling conditional, since
1291 their values could change in the future. */
1298 const cpp_hashnode *cmacro = 0;
1300 if (! pfile->buffer->was_skipping)
1302 /* Controlling macro of #if ! defined () */
1303 pfile->mi_ind_cmacro = 0;
1304 skip = _cpp_parse_expr (pfile) == 0;
1305 cmacro = pfile->mi_ind_cmacro;
1308 push_conditional (pfile, skip, T_IF, cmacro);
1311 /* Flip skipping state if appropriate and continue without changing
1312 if_stack; this is so that the error message for missing #endif's
1313 etc. will point to the original #if. */
1319 cpp_buffer *buffer = pfile->buffer;
1320 struct if_stack *ifs = buffer->if_stack;
1323 cpp_error (pfile, "#else without #if");
1326 if (ifs->type == T_ELSE)
1328 cpp_error (pfile, "#else after #else");
1329 cpp_error_with_line (pfile, ifs->pos.line, ifs->pos.col,
1330 "the conditional began here");
1334 /* Buffer->was_skipping is 1 if all conditionals in this chain
1335 have been false, 2 if a conditional has been true. */
1336 if (! ifs->was_skipping && buffer->was_skipping != 2)
1337 buffer->was_skipping = ! buffer->was_skipping;
1339 /* Invalidate any controlling macro. */
1346 /* handle a #elif directive by not changing if_stack either. see the
1347 comment above do_else. */
1353 cpp_buffer *buffer = pfile->buffer;
1354 struct if_stack *ifs = buffer->if_stack;
1357 cpp_error (pfile, "#elif without #if");
1360 if (ifs->type == T_ELSE)
1362 cpp_error (pfile, "#elif after #else");
1363 cpp_error_with_line (pfile, ifs->pos.line, ifs->pos.col,
1364 "the conditional began here");
1368 /* Don't evaluate #elif if our higher level is skipping. */
1369 if (! ifs->was_skipping)
1371 /* Buffer->was_skipping is 1 if all conditionals in this
1372 chain have been false, 2 if a conditional has been true. */
1373 if (buffer->was_skipping == 1)
1374 buffer->was_skipping = ! _cpp_parse_expr (pfile);
1376 buffer->was_skipping = 2;
1378 /* Invalidate any controlling macro. */
1384 /* #endif pops the if stack and resets pfile->skipping. */
1390 cpp_buffer *buffer = pfile->buffer;
1391 struct if_stack *ifs = buffer->if_stack;
1394 cpp_error (pfile, "#endif without #if");
1397 /* If potential control macro, we go back outside again. */
1398 if (ifs->next == 0 && ifs->mi_cmacro)
1400 pfile->mi_state = MI_OUTSIDE;
1401 pfile->mi_cmacro = ifs->mi_cmacro;
1404 buffer->if_stack = ifs->next;
1405 buffer->was_skipping = ifs->was_skipping;
1406 obstack_free (&pfile->buffer_ob, ifs);
1412 /* Push an if_stack entry and set pfile->skipping accordingly.
1413 If this is a #ifndef starting at the beginning of a file,
1414 CMACRO is the macro name tested by the #ifndef. */
1417 push_conditional (pfile, skip, type, cmacro)
1421 const cpp_hashnode *cmacro;
1423 struct if_stack *ifs;
1424 cpp_buffer *buffer = pfile->buffer;
1426 ifs = xobnew (&pfile->buffer_ob, struct if_stack);
1427 ifs->pos = pfile->directive_pos;
1428 ifs->next = buffer->if_stack;
1429 ifs->was_skipping = buffer->was_skipping;
1431 if (pfile->mi_state == MI_OUTSIDE && pfile->mi_cmacro == 0)
1432 ifs->mi_cmacro = cmacro;
1436 buffer->was_skipping = skip;
1437 buffer->if_stack = ifs;
1440 /* Read the tokens of the answer into the macro pool. Only commit the
1441 memory if we intend it as permanent storage, i.e. the #assert case.
1442 Returns 0 on success. */
1445 parse_answer (pfile, answerp, type)
1447 struct answer **answerp;
1450 cpp_token paren, *token;
1451 struct answer *answer;
1453 if (POOL_FRONT (&pfile->macro_pool) + sizeof (struct answer) >
1454 POOL_LIMIT (&pfile->macro_pool))
1455 _cpp_next_chunk (&pfile->macro_pool, sizeof (struct answer), 0);
1456 answer = (struct answer *) POOL_FRONT (&pfile->macro_pool);
1459 /* In a conditional, it is legal to not have an open paren. We
1460 should save the following token in this case. */
1462 cpp_start_lookahead (pfile);
1463 cpp_get_token (pfile, &paren);
1465 cpp_stop_lookahead (pfile, paren.type == CPP_OPEN_PAREN);
1467 /* If not a paren, see if we're OK. */
1468 if (paren.type != CPP_OPEN_PAREN)
1470 /* In a conditional no answer is a test for any answer. It
1471 could be followed by any token. */
1475 /* #unassert with no answer is valid - it removes all answers. */
1476 if (type == T_UNASSERT && paren.type == CPP_EOF)
1479 cpp_error (pfile, "missing '(' after predicate");
1485 token = &answer->first[answer->count];
1486 /* Check we have room for the token. */
1487 if ((unsigned char *) (token + 1) >= POOL_LIMIT (&pfile->macro_pool))
1489 _cpp_next_chunk (&pfile->macro_pool, sizeof (cpp_token),
1490 (unsigned char **) &answer);
1491 token = &answer->first[answer->count];
1494 cpp_get_token (pfile, token);
1495 if (token->type == CPP_CLOSE_PAREN)
1498 if (token->type == CPP_EOF)
1500 cpp_error (pfile, "missing ')' to complete answer");
1506 if (answer->count == 0)
1508 cpp_error (pfile, "predicate's answer is empty");
1512 /* Drop whitespace at start. */
1513 answer->first->flags &= ~PREV_WHITE;
1516 if (type == T_ASSERT || type == T_UNASSERT)
1521 /* Parses an assertion, returning a pointer to the hash node of the
1522 predicate, or 0 on error. If an answer was supplied, it is placed
1523 in ANSWERP, otherwise it is set to 0. */
1524 static cpp_hashnode *
1525 parse_assertion (pfile, answerp, type)
1527 struct answer **answerp;
1530 cpp_hashnode *result = 0;
1531 cpp_token predicate;
1533 /* We don't expand predicates or answers. */
1534 pfile->state.prevent_expansion++;
1537 cpp_get_token (pfile, &predicate);
1538 if (predicate.type == CPP_EOF)
1539 cpp_error (pfile, "assertion without predicate");
1540 else if (predicate.type != CPP_NAME)
1541 cpp_error (pfile, "predicate must be an identifier");
1542 else if (parse_answer (pfile, answerp, type) == 0)
1544 unsigned int len = NODE_LEN (predicate.val.node);
1545 unsigned char *sym = alloca (len + 1);
1547 /* Prefix '#' to get it out of macro namespace. */
1549 memcpy (sym + 1, NODE_NAME (predicate.val.node), len);
1550 result = cpp_lookup (pfile, sym, len + 1);
1553 pfile->state.prevent_expansion--;
1557 /* Returns a pointer to the pointer to the answer in the answer chain,
1558 or a pointer to NULL if the answer is not in the chain. */
1559 static struct answer **
1560 find_answer (node, candidate)
1562 const struct answer *candidate;
1565 struct answer **result;
1567 for (result = &node->value.answers; *result; result = &(*result)->next)
1569 struct answer *answer = *result;
1571 if (answer->count == candidate->count)
1573 for (i = 0; i < answer->count; i++)
1574 if (! _cpp_equiv_tokens (&answer->first[i], &candidate->first[i]))
1577 if (i == answer->count)
1585 /* Test an assertion within a preprocessor conditional. Returns
1586 non-zero on failure, zero on success. On success, the result of
1587 the test is written into VALUE. */
1589 _cpp_test_assertion (pfile, value)
1593 struct answer *answer;
1596 node = parse_assertion (pfile, &answer, T_IF);
1598 *value = (node->type == NT_ASSERTION &&
1599 (answer == 0 || *find_answer (node, answer) != 0));
1601 /* We don't commit the memory for the answer - it's temporary only. */
1609 struct answer *new_answer;
1612 node = parse_assertion (pfile, &new_answer, T_ASSERT);
1615 /* Place the new answer in the answer list. First check there
1616 is not a duplicate. */
1617 new_answer->next = 0;
1618 if (node->type == NT_ASSERTION)
1620 if (*find_answer (node, new_answer))
1622 cpp_warning (pfile, "\"%s\" re-asserted", NODE_NAME (node) + 1);
1625 new_answer->next = node->value.answers;
1627 node->type = NT_ASSERTION;
1628 node->value.answers = new_answer;
1629 POOL_COMMIT (&pfile->macro_pool, (sizeof (struct answer)
1630 + (new_answer->count - 1)
1631 * sizeof (cpp_token)));
1640 struct answer *answer;
1642 node = parse_assertion (pfile, &answer, T_UNASSERT);
1643 /* It isn't an error to #unassert something that isn't asserted. */
1644 if (node && node->type == NT_ASSERTION)
1648 struct answer **p = find_answer (node, answer), *temp;
1650 /* Remove the answer from the list. */
1655 /* Did we free the last answer? */
1656 if (node->value.answers == 0)
1657 node->type = NT_VOID;
1660 _cpp_free_definition (node);
1663 /* We don't commit the memory for the answer - it's temporary only. */
1666 /* These are for -D, -U, -A. */
1668 /* Process the string STR as if it appeared as the body of a #define.
1669 If STR is just an identifier, define it with value 1.
1670 If STR has anything after the identifier, then it should
1671 be identifier=definition. */
1674 cpp_define (pfile, str)
1681 /* Copy the entire option so we can modify it.
1682 Change the first "=" in the string to a space. If there is none,
1683 tack " 1" on the end. */
1685 /* Length including the null. */
1686 count = strlen (str);
1687 buf = (char *) alloca (count + 2);
1688 memcpy (buf, str, count);
1690 p = strchr (str, '=');
1699 run_directive (pfile, T_DEFINE, BUF_CL_OPTION, buf, count);
1702 /* Slight variant of the above for use by initialize_builtins. */
1704 _cpp_define_builtin (pfile, str)
1708 run_directive (pfile, T_DEFINE, BUF_BUILTIN, str, strlen (str));
1711 /* Process MACRO as if it appeared as the body of an #undef. */
1713 cpp_undef (pfile, macro)
1717 run_directive (pfile, T_UNDEF, BUF_CL_OPTION, macro, strlen (macro));
1720 /* Process the string STR as if it appeared as the body of a #assert. */
1722 cpp_assert (pfile, str)
1726 handle_assertion (pfile, str, T_ASSERT);
1729 /* Process STR as if it appeared as the body of an #unassert. */
1731 cpp_unassert (pfile, str)
1735 handle_assertion (pfile, str, T_UNASSERT);
1738 /* Common code for cpp_assert (-A) and cpp_unassert (-A-). */
1740 handle_assertion (pfile, str, type)
1745 size_t count = strlen (str);
1746 const char *p = strchr (str, '=');
1750 /* Copy the entire option so we can modify it. Change the first
1751 "=" in the string to a '(', and tack a ')' on the end. */
1752 char *buf = (char *) alloca (count + 1);
1754 memcpy (buf, str, count);
1760 run_directive (pfile, type, BUF_CL_OPTION, str, count);
1763 /* The number of errors for a given reader. */
1768 return pfile->errors;
1771 /* The options structure. */
1773 cpp_get_options (pfile)
1776 return &pfile->opts;
1779 /* The callbacks structure. */
1781 cpp_get_callbacks (pfile)
1787 /* Copy the given callbacks structure to our own. */
1789 cpp_set_callbacks (pfile, cb)
1796 /* Push a new buffer on the buffer stack. Returns the new buffer; it
1797 doesn't fail. It does not generate a file change call back; that
1798 is the responsibility of the caller. */
1800 cpp_push_buffer (pfile, buffer, len, type, filename)
1802 const U_CHAR *buffer;
1804 enum cpp_buffer_type type;
1805 const char *filename;
1807 cpp_buffer *new = xobnew (&pfile->buffer_ob, cpp_buffer);
1809 if (type == BUF_FAKE)
1811 /* A copy of the current buffer, just with a new name and type. */
1812 memcpy (new, pfile->buffer, sizeof (cpp_buffer));
1813 new->type = BUF_FAKE;
1817 if (type == BUF_BUILTIN)
1818 filename = _("<builtin>");
1819 else if (type == BUF_CL_OPTION)
1820 filename = _("<command line>");
1821 else if (type == BUF_PRAGMA)
1822 filename = "<_Pragma>";
1824 /* Clears, amongst other things, if_stack and mi_cmacro. */
1825 memset (new, 0, sizeof (cpp_buffer));
1827 new->line_base = new->buf = new->cur = buffer;
1828 new->rlimit = buffer + len;
1831 /* No read ahead or extra char initially. */
1832 new->read_ahead = EOF;
1833 new->extra_char = EOF;
1835 /* Preprocessed files, builtins, _Pragma and command line
1836 options don't do trigraph and escaped newline processing. */
1837 new->from_stage3 = type != BUF_FILE || CPP_OPTION (pfile, preprocessed);
1839 pfile->lexer_pos.output_line = 1;
1842 if (*filename == '\0')
1843 new->nominal_fname = _("<stdin>");
1845 new->nominal_fname = filename;
1847 new->prev = pfile->buffer;
1849 new->include_stack_listed = 0;
1852 pfile->state.next_bol = 1;
1853 pfile->buffer_stack_depth++;
1854 pfile->buffer = new;
1859 /* If called from do_line, pops a single buffer. Otherwise pops all
1860 buffers until a real file is reached. Generates appropriate
1863 cpp_pop_buffer (pfile)
1867 struct if_stack *ifs;
1871 buffer = pfile->buffer;
1872 /* Walk back up the conditional stack till we reach its level at
1873 entry to this file, issuing error messages. */
1874 for (ifs = buffer->if_stack; ifs; ifs = ifs->next)
1875 cpp_error_with_line (pfile, ifs->pos.line, ifs->pos.col,
1876 "unterminated #%s", dtable[ifs->type].name);
1878 if (buffer->type == BUF_FAKE)
1879 buffer->prev->cur = buffer->cur;
1880 else if (buffer->type == BUF_FILE)
1881 _cpp_pop_file_buffer (pfile, buffer);
1883 pfile->buffer = buffer->prev;
1884 pfile->buffer_stack_depth--;
1886 /* Callbacks only generated for faked or real files. */
1887 if (buffer->type != BUF_FILE && buffer->type != BUF_FAKE)
1890 /* No callback for EOF of last file. */
1894 /* do_line does its own call backs. */
1895 pfile->buffer->include_stack_listed = 0;
1896 if (pfile->directive == &dtable[T_LINE])
1899 _cpp_do_file_change (pfile, FC_LEAVE, buffer->nominal_fname,
1901 if (pfile->buffer->type == BUF_FILE)
1904 cpp_warning (pfile, "file \"%s\" entered but not left",
1905 buffer->nominal_fname);
1908 obstack_free (&pfile->buffer_ob, buffer);
1909 return pfile->buffer;
1913 _cpp_init_directives (pfile)
1919 /* Register the directives. */
1920 for (i = 0; i < (unsigned int) N_DIRECTIVES; i++)
1922 node = cpp_lookup (pfile, dtable[i].name, dtable[i].length);
1923 node->directive_index = i + 1;