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 bool skip_elses; /* Can future #else / #elif be skipped? */
47 bool was_skipping; /* If were skipping on entry. */
48 int type; /* Most recent conditional, for diagnostics. */
51 /* Values for the origin field of struct directive. KANDR directives
52 come from traditional (K&R) C. STDC89 directives come from the
53 1989 C standard. EXTENSION directives are extensions. */
58 /* Values for the flags field of struct directive. COND indicates a
59 conditional; IF_COND an opening conditional. INCL means to treat
60 "..." and <...> as q-char and h-char sequences respectively. IN_I
61 means this directive should be handled even if -fpreprocessed is in
62 effect (these are the directives with callback hooks). */
64 #define IF_COND (1 << 1)
68 /* Defines one #-directive, including how to handle it. */
69 typedef void (*directive_handler) PARAMS ((cpp_reader *));
70 typedef struct directive directive;
73 directive_handler handler; /* Function to handle directive. */
74 const U_CHAR *name; /* Name of directive. */
75 unsigned short length; /* Length of name. */
76 unsigned char origin; /* Origin of directive. */
77 unsigned char flags; /* Flags describing this directive. */
80 /* Forward declarations. */
82 static void skip_rest_of_line PARAMS ((cpp_reader *));
83 static void check_eol PARAMS ((cpp_reader *));
84 static void start_directive PARAMS ((cpp_reader *));
85 static void end_directive PARAMS ((cpp_reader *, int));
86 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->lexer_pos.output_line > pfile->line)
183 /* Skip any remaining tokens in a directive. */
185 skip_rest_of_line (pfile)
190 /* Discard all input lookaheads. */
191 while (pfile->la_read)
192 _cpp_release_lookahead (pfile);
194 /* Discard all stacked contexts. */
195 while (pfile->context != &pfile->base_context)
196 _cpp_pop_context (pfile);
198 /* Sweep up all tokens remaining on the line. */
199 while (! SEEN_EOL ())
200 _cpp_lex_token (pfile, &token);
203 /* Ensure there are no stray tokens at the end of a directive. */
212 _cpp_lex_token (pfile, &token);
213 if (token.type != CPP_EOF)
214 cpp_pedwarn (pfile, "extra tokens at end of #%s directive",
215 pfile->directive->name);
219 /* Called when entering a directive, _Pragma or command-line directive. */
221 start_directive (pfile)
224 /* Setup in-directive state. */
225 pfile->state.in_directive = 1;
226 pfile->state.save_comments = 0;
228 /* Some handlers need the position of the # for diagnostics. */
229 pfile->directive_pos = pfile->lexer_pos;
230 pfile->directive_line = pfile->line;
232 /* Don't save directive tokens for external clients. */
233 pfile->la_saved = pfile->la_write;
237 /* Called when leaving a directive, _Pragma or command-line directive. */
239 end_directive (pfile, skip_line)
243 /* We don't skip for an assembler #. */
246 skip_rest_of_line (pfile);
247 /* "Accept" the newline now. */
252 pfile->la_write = pfile->la_saved;
253 pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments);
254 pfile->state.in_directive = 0;
255 pfile->state.angled_headers = 0;
256 pfile->state.line_extension = 0;
257 pfile->directive = 0;
260 /* Check if a token's name matches that of a known directive. Put in
261 this file to save exporting dtable and other unneeded information. */
263 _cpp_handle_directive (pfile, indented)
267 const directive *dir = 0;
271 start_directive (pfile);
273 /* Lex the directive name directly. */
274 _cpp_lex_token (pfile, &dname);
276 if (dname.type == CPP_NAME)
278 unsigned int index = dname.val.node->directive_index;
280 dir = &dtable[index - 1];
282 else if (dname.type == CPP_NUMBER)
284 /* # followed by a number is equivalent to #line. Do not
285 recognize this form in assembly language source files or
286 skipped conditional groups. Complain about this form if
287 we're being pedantic, but not if this is regurgitated input
288 (preprocessed or fed back in by the C++ frontend). */
289 if (! pfile->state.skipping && CPP_OPTION (pfile, lang) != CLK_ASM)
291 dir = &dtable[T_LINE];
292 pfile->state.line_extension = 1;
293 _cpp_push_token (pfile, &dname, &pfile->directive_pos);
294 if (CPP_PEDANTIC (pfile) && ! CPP_OPTION (pfile, preprocessed))
295 cpp_pedwarn (pfile, "# followed by integer");
299 pfile->directive = dir;
302 /* Make sure we lex headers correctly, whether skipping or not. */
303 pfile->state.angled_headers = dir->flags & INCL;
305 /* If we are rescanning preprocessed input, only directives tagged
306 with IN_I are honored, and the warnings below are suppressed. */
307 if (CPP_OPTION (pfile, preprocessed))
309 /* Kluge alert. In order to be sure that code like this
312 does not cause '#define foo bar' to get executed when
313 compiled with -save-temps, we recognize directives in
314 -fpreprocessed mode only if the # is in column 1 and the
315 directive name starts in column 2. This output can only
316 be generated by the directive callbacks in cppmain.c (see
317 also the special case in scan_buffer). */
318 if (dir->flags & IN_I && !indented && !(dname.flags & PREV_WHITE))
319 (*dir->handler) (pfile);
320 /* That check misses '# 123' linemarkers. Let them through too. */
321 else if (dname.type == CPP_NUMBER)
322 (*dir->handler) (pfile);
325 /* We don't want to process this directive. Put back the
326 tokens so caller will see them (and issue an error,
328 _cpp_push_token (pfile, &dname, &pfile->directive_pos);
334 /* Traditionally, a directive is ignored unless its # is in
335 column 1. Therefore in code intended to work with K+R
336 compilers, directives added by C89 must have their #
337 indented, and directives present in traditional C must
338 not. This is true even of directives in skipped
339 conditional blocks. */
340 if (CPP_WTRADITIONAL (pfile))
342 if (dir == &dtable[T_ELIF])
344 "suggest not using #elif in traditional C");
345 else if (indented && dir->origin == KANDR)
347 "traditional C ignores #%s with the # indented",
349 else if (!indented && dir->origin != KANDR)
351 "suggest hiding #%s from traditional C with an indented #",
355 /* If we are skipping a failed conditional group, all
356 non-conditional directives are ignored. */
357 if (! pfile->state.skipping || (dir->flags & COND))
359 /* Issue -pedantic warnings for extensions. */
360 if (CPP_PEDANTIC (pfile) && dir->origin == EXTENSION)
361 cpp_pedwarn (pfile, "#%s is a GCC extension", dir->name);
363 /* If we have a directive that is not an opening
364 conditional, invalidate any control macro. */
365 if (! (dir->flags & IF_COND))
366 pfile->mi_valid = false;
368 (*dir->handler) (pfile);
372 else if (dname.type != CPP_EOF && ! pfile->state.skipping)
374 /* An unknown directive. Don't complain about it in assembly
375 source: we don't know where the comments are, and # may
376 introduce assembler pseudo-ops. Don't complain about invalid
377 directives in skipped conditional groups (6.10 p4). */
378 if (CPP_OPTION (pfile, lang) == CLK_ASM)
380 /* Output the # and lookahead token for the assembler. */
381 _cpp_push_token (pfile, &dname, &pfile->directive_pos);
385 cpp_error (pfile, "invalid preprocessing directive #%s",
386 cpp_token_as_text (pfile, &dname));
389 if (pfile->state.in_directive)
390 end_directive (pfile, skip);
394 /* Directive handler wrapper used by the command line option
397 run_directive (pfile, dir_no, type, buf, count)
400 enum cpp_buffer_type type;
406 buffer = cpp_push_buffer (pfile, (const U_CHAR *) buf, count, type, 0, 1);
407 start_directive (pfile);
408 pfile->state.prevent_expansion++;
409 pfile->directive = &dtable[dir_no];
410 (void) (*pfile->directive->handler) (pfile);
411 pfile->state.prevent_expansion--;
413 end_directive (pfile, 1);
414 _cpp_pop_buffer (pfile);
417 /* Checks for validity the macro name in #define, #undef, #ifdef and
418 #ifndef directives. */
419 static cpp_hashnode *
420 lex_macro_node (pfile)
426 /* Lex the macro name directly. */
427 _cpp_lex_token (pfile, &token);
429 /* The token immediately after #define must be an identifier. That
430 identifier may not be "defined", per C99 6.10.8p4.
431 In C++, it may not be any of the "named operators" either,
432 per C++98 [lex.digraph], [lex.key].
433 Finally, the identifier may not have been poisoned. (In that case
434 the lexer has issued the error message for us.) */
436 if (token.type != CPP_NAME)
438 if (token.type == CPP_EOF)
439 cpp_error (pfile, "no macro name given in #%s directive",
440 pfile->directive->name);
441 else if (token.flags & NAMED_OP)
443 "\"%s\" cannot be used as a macro name as it is an operator in C++",
444 NODE_NAME (token.val.node));
446 cpp_error (pfile, "macro names must be identifiers");
451 node = token.val.node;
452 if (node->flags & NODE_POISONED)
455 if (node == pfile->spec_nodes.n_defined)
457 cpp_error (pfile, "\"%s\" cannot be used as a macro name",
465 /* Process a #define directive. Most work is done in cppmacro.c. */
470 cpp_hashnode *node = lex_macro_node (pfile);
474 if (_cpp_create_definition (pfile, node))
475 if (pfile->cb.define)
476 (*pfile->cb.define) (pfile, pfile->directive_line, node);
480 /* Handle #undef. Marks the identifier NT_VOID in the hash table. */
485 cpp_hashnode *node = lex_macro_node (pfile);
487 /* 6.10.3.5 paragraph 2: [#undef] is ignored if the specified identifier
488 is not currently defined as a macro name. */
489 if (node && node->type == NT_MACRO)
492 (*pfile->cb.undef) (pfile, pfile->directive_line, node);
494 if (node->flags & NODE_WARN)
495 cpp_warning (pfile, "undefining \"%s\"", NODE_NAME (node));
497 _cpp_free_definition (node);
502 /* Helper routine used by parse_include. Reinterpret the current line
503 as an h-char-sequence (< ... >); we are looking at the first token
504 after the <. Returns zero on success. */
506 glue_header_name (pfile, header)
511 unsigned char *buffer, *token_mem;
512 size_t len, total_len = 0, capacity = 1024;
514 /* To avoid lexed tokens overwriting our glued name, we can only
515 allocate from the string pool once we've lexed everything. */
517 buffer = (unsigned char *) xmalloc (capacity);
520 cpp_get_token (pfile, &token);
522 if (token.type == CPP_GREATER || token.type == CPP_EOF)
525 len = cpp_token_len (&token);
526 if (total_len + len > capacity)
528 capacity = (capacity + len) * 2;
529 buffer = (unsigned char *) xrealloc (buffer, capacity);
532 if (token.flags & PREV_WHITE)
533 buffer[total_len++] = ' ';
535 total_len = cpp_spell_token (pfile, &token, &buffer[total_len]) - buffer;
538 if (token.type == CPP_EOF)
539 cpp_error (pfile, "missing terminating > character");
542 token_mem = _cpp_pool_alloc (&pfile->ident_pool, total_len + 1);
543 memcpy (token_mem, buffer, total_len);
544 token_mem[total_len] = '\0';
546 header->type = CPP_HEADER_NAME;
547 header->flags &= ~PREV_WHITE;
548 header->val.str.len = total_len;
549 header->val.str.text = token_mem;
553 return token.type == CPP_EOF;
556 /* Parse the header name of #include, #include_next, #import and
557 #pragma dependency. Returns zero on success. */
559 parse_include (pfile, header)
563 const unsigned char *dir;
565 if (pfile->directive == &dtable[T_PRAGMA])
566 dir = U"pragma dependency";
568 dir = pfile->directive->name;
570 /* Allow macro expansion. */
571 cpp_get_token (pfile, header);
572 if (header->type != CPP_STRING && header->type != CPP_HEADER_NAME)
574 if (header->type != CPP_LESS)
576 cpp_error (pfile, "#%s expects \"FILENAME\" or <FILENAME>", dir);
579 if (glue_header_name (pfile, header))
583 if (header->val.str.len == 0)
585 cpp_error (pfile, "empty file name in #%s", dir);
592 /* Handle #include, #include_next and #import. */
594 do_include_common (pfile, type)
596 enum include_type type;
600 /* For #include_next, if this is the primary source file, warn and
601 use the normal search logic. */
602 if (type == IT_INCLUDE_NEXT && ! pfile->buffer->prev)
604 cpp_warning (pfile, "#include_next in primary source file");
607 else if (type == IT_IMPORT && CPP_OPTION (pfile, warn_import))
609 CPP_OPTION (pfile, warn_import) = 0;
611 "#import is obsolete, use an #ifndef wrapper in the header file");
614 if (!parse_include (pfile, &header))
616 /* Prevent #include recursion. */
617 if (pfile->buffer_stack_depth >= CPP_STACK_MAX)
618 cpp_fatal (pfile, "#include nested too deeply");
622 /* Get out of macro context, if we are. */
623 end_directive (pfile, 1);
624 if (pfile->cb.include)
625 (*pfile->cb.include) (pfile, pfile->directive_line,
626 pfile->directive->name, &header);
628 _cpp_execute_include (pfile, &header, type);
637 do_include_common (pfile, IT_INCLUDE);
644 do_include_common (pfile, IT_IMPORT);
648 do_include_next (pfile)
651 do_include_common (pfile, IT_INCLUDE_NEXT);
654 /* Subroutine of do_line. Read possible flags after file name. LAST
655 is the last flag seen; 0 if this is the first flag. Return the flag
656 if it is valid, 0 at the end of the directive. Otherwise complain. */
659 read_flag (pfile, last)
665 _cpp_lex_token (pfile, &token);
666 if (token.type == CPP_NUMBER && token.val.str.len == 1)
668 unsigned int flag = token.val.str.text[0] - '0';
670 if (flag > last && flag <= 4
671 && (flag != 4 || last == 3)
672 && (flag != 2 || last == 0))
676 if (token.type != CPP_EOF)
677 cpp_error (pfile, "invalid flag \"%s\" in line directive",
678 cpp_token_as_text (pfile, &token));
682 /* Another subroutine of do_line. Convert a number in STR, of length
683 LEN, to binary; store it in NUMP, and return 0 if the number was
684 well-formed, 1 if not. Temporary, hopefully. */
686 strtoul_for_line (str, len, nump)
691 unsigned long reg = 0;
705 /* Interpret #line command.
706 Note that the filename string (if any) is treated as if it were an
707 include filename. That means no escape handling. */
713 cpp_buffer *buffer = pfile->buffer;
714 enum lc_reason reason = LC_RENAME;
715 unsigned long new_lineno;
719 /* C99 raised the minimum limit on #line numbers. */
720 cap = CPP_OPTION (pfile, c99) ? 2147483647 : 32767;
722 /* #line commands expand macros. */
723 cpp_get_token (pfile, &token);
724 if (token.type != CPP_NUMBER
725 || strtoul_for_line (token.val.str.text, token.val.str.len, &new_lineno))
727 cpp_error (pfile, "\"%s\" after #line is not a positive integer",
728 cpp_token_as_text (pfile, &token));
732 if (CPP_PEDANTIC (pfile) && ! pfile->state.line_extension
733 && (new_lineno == 0 || new_lineno > cap))
734 cpp_pedwarn (pfile, "line number out of range");
736 cpp_get_token (pfile, &token);
737 if (token.type == CPP_STRING)
739 const char *fname = (const char *) token.val.str.text;
741 /* Only accept flags for the # 55 form. */
742 if (! pfile->state.line_extension)
746 int flag = 0, sysp = 0;
748 flag = read_flag (pfile, flag);
752 flag = read_flag (pfile, flag);
757 flag = read_flag (pfile, flag);
762 flag = read_flag (pfile, flag);
764 sysp = 2, read_flag (pfile, flag);
767 if (reason == LC_ENTER)
769 /* Fake a buffer stack for diagnostics. */
770 cpp_push_buffer (pfile, 0, 0, BUF_FAKE, fname, 0);
771 /* Fake an include for cpp_included. */
772 _cpp_fake_include (pfile, fname);
773 buffer = pfile->buffer;
775 else if (reason == LC_LEAVE)
777 if (buffer->type != BUF_FAKE)
779 cpp_warning (pfile, "file \"%s\" left but not entered",
780 buffer->nominal_fname);
785 _cpp_pop_buffer (pfile);
786 pfile->lexer_pos.output_line++;
787 buffer = pfile->buffer;
788 #ifdef ENABLE_CHECKING
789 if (strcmp (buffer->nominal_fname, fname))
790 cpp_warning (pfile, "expected to return to file \"%s\"",
791 buffer->nominal_fname);
792 if (buffer->sysp != sysp)
793 cpp_warning (pfile, "header flags for \"%s\" have changed",
794 buffer->nominal_fname);
800 buffer->nominal_fname = fname;
802 else if (token.type != CPP_EOF)
804 cpp_error (pfile, "\"%s\" is not a valid filename",
805 cpp_token_as_text (pfile, &token));
809 end_directive (pfile, 1);
810 _cpp_do_file_change (pfile, reason, new_lineno);
813 /* Arrange the file_change callback. pfile->line has changed to
814 FILE_LINE of the current buffer, for reason REASON. */
816 _cpp_do_file_change (pfile, reason, file_line)
818 enum lc_reason reason;
819 unsigned int file_line;
823 buffer = pfile->buffer;
824 pfile->map = add_line_map (&pfile->line_maps, reason,
825 pfile->line, buffer->nominal_fname, file_line);
827 if (pfile->cb.file_change)
832 fc.line = pfile->line;
834 fc.sysp = buffer->sysp;
835 fc.externc = CPP_OPTION (pfile, cplusplus) && buffer->sysp == 2;
837 (*pfile->cb.file_change) (pfile, &fc);
842 * Report a warning or error detected by the program we are
843 * processing. Use the directive's tokens in the error message.
847 do_diagnostic (pfile, code, print_dir)
849 enum error_type code;
852 if (_cpp_begin_message (pfile, code, NULL, 0))
855 fprintf (stderr, "#%s ", pfile->directive->name);
856 pfile->state.prevent_expansion++;
857 cpp_output_line (pfile, stderr);
858 pfile->state.prevent_expansion--;
866 do_diagnostic (pfile, ERROR, 1);
873 /* We want #warning diagnostics to be emitted in system headers too. */
874 do_diagnostic (pfile, WARNING_SYSHDR, 1);
877 /* Report program identification. */
885 cpp_get_token (pfile, &str);
886 if (str.type != CPP_STRING)
887 cpp_error (pfile, "invalid #ident");
888 else if (pfile->cb.ident)
889 (*pfile->cb.ident) (pfile, pfile->directive_line, &str.val.str);
894 /* Pragmata handling. We handle some of these, and pass the rest on
895 to the front end. C99 defines three pragmas and says that no macro
896 expansion is to be performed on them; whether or not macro
897 expansion happens for other pragmas is implementation defined.
898 This implementation never macro-expands the text after #pragma. */
900 /* Sub-handlers for the pragmas needing treatment here.
901 They return 1 if the token buffer is to be popped, 0 if not. */
902 typedef void (*pragma_cb) PARAMS ((cpp_reader *));
905 struct pragma_entry *next;
911 struct pragma_entry *space;
916 cpp_register_pragma (pfile, space, name, handler)
922 struct pragma_entry **x, *new;
928 struct pragma_entry *p = pfile->pragmas;
929 len = strlen (space);
932 if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
939 cpp_ice (pfile, "unknown #pragma namespace %s", space);
944 new = xnew (struct pragma_entry);
946 new->len = strlen (name);
948 new->u.handler = handler;
955 cpp_register_pragma_space (pfile, space)
959 struct pragma_entry *new;
960 const struct pragma_entry *p = pfile->pragmas;
961 size_t len = strlen (space);
965 if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
966 /* Multiple different callers are allowed to register the same
972 new = xnew (struct pragma_entry);
978 new->next = pfile->pragmas;
979 pfile->pragmas = new;
983 _cpp_init_internal_pragmas (pfile)
987 cpp_register_pragma (pfile, 0, "poison", do_pragma_poison);
988 cpp_register_pragma (pfile, 0, "once", do_pragma_once);
991 cpp_register_pragma_space (pfile, "GCC");
993 cpp_register_pragma (pfile, "GCC", "poison", do_pragma_poison);
994 cpp_register_pragma (pfile, "GCC", "system_header", do_pragma_system_header);
995 cpp_register_pragma (pfile, "GCC", "dependency", do_pragma_dependency);
1002 pragma_cb handler = NULL;
1003 const struct pragma_entry *p;
1007 pfile->state.prevent_expansion++;
1008 cpp_start_lookahead (pfile);
1011 cpp_get_token (pfile, &tok);
1012 if (tok.type == CPP_NAME)
1014 const cpp_hashnode *node = tok.val.node;
1015 size_t len = NODE_LEN (node);
1019 if (strlen (p->name) == len
1020 && !memcmp (p->name, NODE_NAME (node), len))
1029 handler = p->u.handler;
1037 cpp_stop_lookahead (pfile, handler != NULL);
1038 pfile->state.prevent_expansion--;
1042 else if (pfile->cb.def_pragma)
1043 (*pfile->cb.def_pragma) (pfile, pfile->directive_line);
1047 do_pragma_once (pfile)
1050 cpp_warning (pfile, "#pragma once is obsolete");
1052 if (pfile->buffer->prev == NULL)
1053 cpp_warning (pfile, "#pragma once in main file");
1055 _cpp_never_reread (pfile->buffer->inc);
1061 do_pragma_poison (pfile)
1064 /* Poison these symbols so that all subsequent usage produces an
1069 pfile->state.poisoned_ok = 1;
1072 _cpp_lex_token (pfile, &tok);
1073 if (tok.type == CPP_EOF)
1075 if (tok.type != CPP_NAME)
1077 cpp_error (pfile, "invalid #pragma GCC poison directive");
1082 if (hp->flags & NODE_POISONED)
1085 if (hp->type == NT_MACRO)
1086 cpp_warning (pfile, "poisoning existing macro \"%s\"", NODE_NAME (hp));
1087 _cpp_free_definition (hp);
1088 hp->flags |= NODE_POISONED | NODE_DIAGNOSTIC;
1090 pfile->state.poisoned_ok = 0;
1093 /* Mark the current header as a system header. This will suppress
1094 some categories of warnings (notably those from -pedantic). It is
1095 intended for use in system libraries that cannot be implemented in
1096 conforming C, but cannot be certain that their headers appear in a
1097 system include directory. To prevent abuse, it is rejected in the
1098 primary source file. */
1100 do_pragma_system_header (pfile)
1103 cpp_buffer *buffer = pfile->buffer;
1105 if (buffer->prev == 0)
1106 cpp_warning (pfile, "#pragma system_header ignored outside include file");
1110 end_directive (pfile, 1);
1111 cpp_make_system_header (pfile, 1, 0);
1115 /* Check the modified date of the current include file against a specified
1116 file. Issue a diagnostic, if the specified file is newer. We use this to
1117 determine if a fixed header should be refixed. */
1119 do_pragma_dependency (pfile)
1122 cpp_token header, msg;
1125 if (parse_include (pfile, &header))
1128 ordering = _cpp_compare_file_date (pfile, &header);
1130 cpp_warning (pfile, "cannot find source %s",
1131 cpp_token_as_text (pfile, &header));
1132 else if (ordering > 0)
1134 cpp_warning (pfile, "current file is older than %s",
1135 cpp_token_as_text (pfile, &header));
1136 cpp_start_lookahead (pfile);
1137 cpp_get_token (pfile, &msg);
1138 cpp_stop_lookahead (pfile, msg.type == CPP_EOF);
1139 if (msg.type != CPP_EOF)
1140 do_diagnostic (pfile, WARNING, 0);
1144 /* Check syntax is "(string-literal)". Returns 0 on success. */
1146 get__Pragma_string (pfile, string)
1152 cpp_get_token (pfile, &paren);
1153 if (paren.type != CPP_OPEN_PAREN)
1156 cpp_get_token (pfile, string);
1157 if (string->type != CPP_STRING && string->type != CPP_WSTRING)
1160 cpp_get_token (pfile, &paren);
1161 return paren.type != CPP_CLOSE_PAREN;
1164 /* Returns a malloced buffer containing a destringized cpp_string by
1165 removing the first \ of \" and \\ sequences. */
1166 static unsigned char *
1167 destringize (in, len)
1168 const cpp_string *in;
1171 const unsigned char *src, *limit;
1172 unsigned char *dest, *result;
1174 dest = result = (unsigned char *) xmalloc (in->len);
1175 for (src = in->text, limit = src + in->len; src < limit;)
1177 /* We know there is a character following the backslash. */
1178 if (*src == '\\' && (src[1] == '\\' || src[1] == '"'))
1183 *len = dest - result;
1188 _cpp_do__Pragma (pfile)
1192 unsigned char *buffer;
1194 cpp_lexer_pos orig_pos;
1196 orig_pos = pfile->lexer_pos;
1197 if (get__Pragma_string (pfile, &string))
1198 cpp_error (pfile, "_Pragma takes a parenthesized string literal");
1201 buffer = destringize (&string.val.str, &len);
1202 run_directive (pfile, T_PRAGMA, BUF_PRAGMA, (char *) buffer, len);
1203 free ((PTR) buffer);
1204 pfile->lexer_pos = orig_pos;
1205 pfile->line = pfile->lexer_pos.line;
1209 /* Just ignore #sccs, on systems where we define it at all. */
1210 #ifdef SCCS_DIRECTIVE
1213 cpp_reader *pfile ATTRIBUTE_UNUSED;
1224 if (! pfile->state.skipping)
1226 const cpp_hashnode *node = lex_macro_node (pfile);
1229 skip = node->type != NT_MACRO;
1235 push_conditional (pfile, skip, T_IFDEF, 0);
1243 const cpp_hashnode *node = 0;
1245 if (! pfile->state.skipping)
1247 node = lex_macro_node (pfile);
1249 skip = node->type == NT_MACRO;
1255 push_conditional (pfile, skip, T_IFNDEF, node);
1258 /* _cpp_parse_expr puts a macro in a "#if !defined ()" expression in
1259 pfile->mi_ind_cmacro so we can handle multiple-include
1260 optimisations. If macro expansion occurs in the expression, we
1261 cannot treat it as a controlling conditional, since the expansion
1262 could change in the future. That is handled by cpp_get_token. */
1270 if (! pfile->state.skipping)
1271 skip = _cpp_parse_expr (pfile) == 0;
1273 push_conditional (pfile, skip, T_IF, pfile->mi_ind_cmacro);
1276 /* Flip skipping state if appropriate and continue without changing
1277 if_stack; this is so that the error message for missing #endif's
1278 etc. will point to the original #if. */
1284 cpp_buffer *buffer = pfile->buffer;
1285 struct if_stack *ifs = buffer->if_stack;
1288 cpp_error (pfile, "#else without #if");
1291 if (ifs->type == T_ELSE)
1293 cpp_error (pfile, "#else after #else");
1294 cpp_error_with_line (pfile, ifs->pos.line, ifs->pos.col,
1295 "the conditional began here");
1299 /* Skip any future (erroneous) #elses or #elifs. */
1300 pfile->state.skipping = ifs->skip_elses;
1301 ifs->skip_elses = true;
1303 /* Invalidate any controlling macro. */
1306 /* Only check EOL if was not originally skipping. */
1307 if (!ifs->was_skipping)
1312 /* handle a #elif directive by not changing if_stack either. see the
1313 comment above do_else. */
1319 cpp_buffer *buffer = pfile->buffer;
1320 struct if_stack *ifs = buffer->if_stack;
1323 cpp_error (pfile, "#elif without #if");
1326 if (ifs->type == T_ELSE)
1328 cpp_error (pfile, "#elif after #else");
1329 cpp_error_with_line (pfile, ifs->pos.line, ifs->pos.col,
1330 "the conditional began here");
1334 /* Only evaluate this if we aren't skipping elses. During
1335 evaluation, set skipping to false to get lexer warnings. */
1336 if (ifs->skip_elses)
1337 pfile->state.skipping = 1;
1340 pfile->state.skipping = 0;
1341 pfile->state.skipping = ! _cpp_parse_expr (pfile);
1342 ifs->skip_elses = ! pfile->state.skipping;
1345 /* Invalidate any controlling macro. */
1350 /* #endif pops the if stack and resets pfile->state.skipping. */
1356 cpp_buffer *buffer = pfile->buffer;
1357 struct if_stack *ifs = buffer->if_stack;
1360 cpp_error (pfile, "#endif without #if");
1363 /* Only check EOL if was not originally skipping. */
1364 if (!ifs->was_skipping)
1367 /* If potential control macro, we go back outside again. */
1368 if (ifs->next == 0 && ifs->mi_cmacro)
1370 pfile->mi_valid = true;
1371 pfile->mi_cmacro = ifs->mi_cmacro;
1374 buffer->if_stack = ifs->next;
1375 pfile->state.skipping = ifs->was_skipping;
1376 obstack_free (&pfile->buffer_ob, ifs);
1380 /* Push an if_stack entry and set pfile->state.skipping accordingly.
1381 If this is a #if or #ifndef, CMACRO is a potentially controlling
1382 macro - we need to check here that we are at the top of the file. */
1385 push_conditional (pfile, skip, type, cmacro)
1389 const cpp_hashnode *cmacro;
1391 struct if_stack *ifs;
1392 cpp_buffer *buffer = pfile->buffer;
1394 ifs = xobnew (&pfile->buffer_ob, struct if_stack);
1395 ifs->pos = pfile->directive_pos;
1396 ifs->next = buffer->if_stack;
1397 ifs->skip_elses = pfile->state.skipping || !skip;
1398 ifs->was_skipping = pfile->state.skipping;
1400 /* This condition is effectively a test for top-of-file. */
1401 if (pfile->mi_valid && pfile->mi_cmacro == 0)
1402 ifs->mi_cmacro = cmacro;
1406 pfile->state.skipping = skip;
1407 buffer->if_stack = ifs;
1410 /* Read the tokens of the answer into the macro pool. Only commit the
1411 memory if we intend it as permanent storage, i.e. the #assert case.
1412 Returns 0 on success. */
1415 parse_answer (pfile, answerp, type)
1417 struct answer **answerp;
1420 cpp_token paren, *token;
1421 struct answer *answer;
1423 if (POOL_FRONT (&pfile->macro_pool) + sizeof (struct answer) >
1424 POOL_LIMIT (&pfile->macro_pool))
1425 _cpp_next_chunk (&pfile->macro_pool, sizeof (struct answer), 0);
1426 answer = (struct answer *) POOL_FRONT (&pfile->macro_pool);
1429 /* In a conditional, it is legal to not have an open paren. We
1430 should save the following token in this case. */
1432 cpp_start_lookahead (pfile);
1433 cpp_get_token (pfile, &paren);
1435 cpp_stop_lookahead (pfile, paren.type == CPP_OPEN_PAREN);
1437 /* If not a paren, see if we're OK. */
1438 if (paren.type != CPP_OPEN_PAREN)
1440 /* In a conditional no answer is a test for any answer. It
1441 could be followed by any token. */
1445 /* #unassert with no answer is valid - it removes all answers. */
1446 if (type == T_UNASSERT && paren.type == CPP_EOF)
1449 cpp_error (pfile, "missing '(' after predicate");
1455 token = &answer->first[answer->count];
1456 /* Check we have room for the token. */
1457 if ((unsigned char *) (token + 1) >= POOL_LIMIT (&pfile->macro_pool))
1459 _cpp_next_chunk (&pfile->macro_pool, sizeof (cpp_token),
1460 (unsigned char **) &answer);
1461 token = &answer->first[answer->count];
1464 cpp_get_token (pfile, token);
1465 if (token->type == CPP_CLOSE_PAREN)
1468 if (token->type == CPP_EOF)
1470 cpp_error (pfile, "missing ')' to complete answer");
1476 if (answer->count == 0)
1478 cpp_error (pfile, "predicate's answer is empty");
1482 /* Drop whitespace at start. */
1483 answer->first->flags &= ~PREV_WHITE;
1486 if (type == T_ASSERT || type == T_UNASSERT)
1491 /* Parses an assertion, returning a pointer to the hash node of the
1492 predicate, or 0 on error. If an answer was supplied, it is placed
1493 in ANSWERP, otherwise it is set to 0. */
1494 static cpp_hashnode *
1495 parse_assertion (pfile, answerp, type)
1497 struct answer **answerp;
1500 cpp_hashnode *result = 0;
1501 cpp_token predicate;
1503 /* We don't expand predicates or answers. */
1504 pfile->state.prevent_expansion++;
1507 cpp_get_token (pfile, &predicate);
1508 if (predicate.type == CPP_EOF)
1509 cpp_error (pfile, "assertion without predicate");
1510 else if (predicate.type != CPP_NAME)
1511 cpp_error (pfile, "predicate must be an identifier");
1512 else if (parse_answer (pfile, answerp, type) == 0)
1514 unsigned int len = NODE_LEN (predicate.val.node);
1515 unsigned char *sym = alloca (len + 1);
1517 /* Prefix '#' to get it out of macro namespace. */
1519 memcpy (sym + 1, NODE_NAME (predicate.val.node), len);
1520 result = cpp_lookup (pfile, sym, len + 1);
1523 pfile->state.prevent_expansion--;
1527 /* Returns a pointer to the pointer to the answer in the answer chain,
1528 or a pointer to NULL if the answer is not in the chain. */
1529 static struct answer **
1530 find_answer (node, candidate)
1532 const struct answer *candidate;
1535 struct answer **result;
1537 for (result = &node->value.answers; *result; result = &(*result)->next)
1539 struct answer *answer = *result;
1541 if (answer->count == candidate->count)
1543 for (i = 0; i < answer->count; i++)
1544 if (! _cpp_equiv_tokens (&answer->first[i], &candidate->first[i]))
1547 if (i == answer->count)
1555 /* Test an assertion within a preprocessor conditional. Returns
1556 non-zero on failure, zero on success. On success, the result of
1557 the test is written into VALUE. */
1559 _cpp_test_assertion (pfile, value)
1563 struct answer *answer;
1566 node = parse_assertion (pfile, &answer, T_IF);
1568 *value = (node->type == NT_ASSERTION &&
1569 (answer == 0 || *find_answer (node, answer) != 0));
1571 /* We don't commit the memory for the answer - it's temporary only. */
1579 struct answer *new_answer;
1582 node = parse_assertion (pfile, &new_answer, T_ASSERT);
1585 /* Place the new answer in the answer list. First check there
1586 is not a duplicate. */
1587 new_answer->next = 0;
1588 if (node->type == NT_ASSERTION)
1590 if (*find_answer (node, new_answer))
1592 cpp_warning (pfile, "\"%s\" re-asserted", NODE_NAME (node) + 1);
1595 new_answer->next = node->value.answers;
1597 node->type = NT_ASSERTION;
1598 node->value.answers = new_answer;
1599 POOL_COMMIT (&pfile->macro_pool, (sizeof (struct answer)
1600 + (new_answer->count - 1)
1601 * sizeof (cpp_token)));
1610 struct answer *answer;
1612 node = parse_assertion (pfile, &answer, T_UNASSERT);
1613 /* It isn't an error to #unassert something that isn't asserted. */
1614 if (node && node->type == NT_ASSERTION)
1618 struct answer **p = find_answer (node, answer), *temp;
1620 /* Remove the answer from the list. */
1625 /* Did we free the last answer? */
1626 if (node->value.answers == 0)
1627 node->type = NT_VOID;
1630 _cpp_free_definition (node);
1633 /* We don't commit the memory for the answer - it's temporary only. */
1636 /* These are for -D, -U, -A. */
1638 /* Process the string STR as if it appeared as the body of a #define.
1639 If STR is just an identifier, define it with value 1.
1640 If STR has anything after the identifier, then it should
1641 be identifier=definition. */
1644 cpp_define (pfile, str)
1651 /* Copy the entire option so we can modify it.
1652 Change the first "=" in the string to a space. If there is none,
1653 tack " 1" on the end. */
1655 /* Length including the null. */
1656 count = strlen (str);
1657 buf = (char *) alloca (count + 2);
1658 memcpy (buf, str, count);
1660 p = strchr (str, '=');
1669 run_directive (pfile, T_DEFINE, BUF_CL_OPTION, buf, count);
1672 /* Slight variant of the above for use by initialize_builtins. */
1674 _cpp_define_builtin (pfile, str)
1678 run_directive (pfile, T_DEFINE, BUF_BUILTIN, str, strlen (str));
1681 /* Process MACRO as if it appeared as the body of an #undef. */
1683 cpp_undef (pfile, macro)
1687 run_directive (pfile, T_UNDEF, BUF_CL_OPTION, macro, strlen (macro));
1690 /* Process the string STR as if it appeared as the body of a #assert. */
1692 cpp_assert (pfile, str)
1696 handle_assertion (pfile, str, T_ASSERT);
1699 /* Process STR as if it appeared as the body of an #unassert. */
1701 cpp_unassert (pfile, str)
1705 handle_assertion (pfile, str, T_UNASSERT);
1708 /* Common code for cpp_assert (-A) and cpp_unassert (-A-). */
1710 handle_assertion (pfile, str, type)
1715 size_t count = strlen (str);
1716 const char *p = strchr (str, '=');
1720 /* Copy the entire option so we can modify it. Change the first
1721 "=" in the string to a '(', and tack a ')' on the end. */
1722 char *buf = (char *) alloca (count + 1);
1724 memcpy (buf, str, count);
1730 run_directive (pfile, type, BUF_CL_OPTION, str, count);
1733 /* The number of errors for a given reader. */
1738 return pfile->errors;
1741 /* The options structure. */
1743 cpp_get_options (pfile)
1746 return &pfile->opts;
1749 /* The callbacks structure. */
1751 cpp_get_callbacks (pfile)
1757 /* The line map set. */
1759 cpp_get_line_maps (pfile)
1762 return &pfile->line_maps;
1765 /* Copy the given callbacks structure to our own. */
1767 cpp_set_callbacks (pfile, cb)
1774 /* Push a new buffer on the buffer stack. Returns the new buffer; it
1775 doesn't fail. It does not generate a file change call back; that
1776 is the responsibility of the caller. */
1778 cpp_push_buffer (pfile, buffer, len, type, filename, return_at_eof)
1780 const U_CHAR *buffer;
1782 enum cpp_buffer_type type;
1783 const char *filename;
1786 cpp_buffer *new = xobnew (&pfile->buffer_ob, cpp_buffer);
1788 if (type == BUF_FAKE)
1790 /* A copy of the current buffer, just with a new name and type. */
1791 memcpy (new, pfile->buffer, sizeof (cpp_buffer));
1792 new->type = BUF_FAKE;
1796 if (type == BUF_BUILTIN)
1797 filename = _("<builtin>");
1798 else if (type == BUF_CL_OPTION)
1799 filename = _("<command line>");
1800 else if (type == BUF_PRAGMA)
1801 filename = "<_Pragma>";
1803 /* Clears, amongst other things, if_stack and mi_cmacro. */
1804 memset (new, 0, sizeof (cpp_buffer));
1806 new->line_base = new->buf = new->cur = buffer;
1807 new->rlimit = buffer + len;
1810 /* No read ahead or extra char initially. */
1811 new->read_ahead = EOF;
1812 new->extra_char = EOF;
1814 /* Preprocessed files, builtins, _Pragma and command line
1815 options don't do trigraph and escaped newline processing. */
1816 new->from_stage3 = type != BUF_FILE || CPP_OPTION (pfile, preprocessed);
1819 if (*filename == '\0')
1820 new->nominal_fname = _("<stdin>");
1822 new->nominal_fname = filename;
1824 new->prev = pfile->buffer;
1826 new->include_stack_listed = 0;
1827 new->return_at_eof = return_at_eof;
1829 pfile->state.next_bol = 1;
1830 pfile->buffer_stack_depth++;
1831 pfile->buffer = new;
1836 /* If called from do_line, pops a single buffer. Otherwise pops all
1837 buffers until a real file is reached. Generates appropriate
1840 _cpp_pop_buffer (pfile)
1844 struct if_stack *ifs;
1848 buffer = pfile->buffer;
1849 /* Walk back up the conditional stack till we reach its level at
1850 entry to this file, issuing error messages. */
1851 for (ifs = buffer->if_stack; ifs; ifs = ifs->next)
1852 cpp_error_with_line (pfile, ifs->pos.line, ifs->pos.col,
1853 "unterminated #%s", dtable[ifs->type].name);
1855 if (buffer->type == BUF_FAKE)
1857 buffer->prev->cur = buffer->cur;
1858 buffer->prev->line_base = buffer->line_base;
1859 buffer->prev->read_ahead = buffer->read_ahead;
1861 else if (buffer->type == BUF_FILE)
1862 _cpp_pop_file_buffer (pfile, buffer);
1864 pfile->buffer = buffer->prev;
1865 pfile->buffer_stack_depth--;
1867 /* Callbacks only generated for faked or real files. */
1868 if (buffer->type != BUF_FILE && buffer->type != BUF_FAKE)
1871 /* No callback for EOF of last file. */
1875 /* do_line does its own call backs. */
1876 pfile->buffer->include_stack_listed = 0;
1877 if (pfile->directive == &dtable[T_LINE])
1880 _cpp_do_file_change (pfile, LC_LEAVE, pfile->buffer->return_to_line);
1881 if (pfile->buffer->type == BUF_FILE)
1884 cpp_warning (pfile, "file \"%s\" entered but not left",
1885 buffer->nominal_fname);
1888 obstack_free (&pfile->buffer_ob, buffer);
1890 /* The output line can fall out of sync if we missed the final
1891 newline from the previous buffer, for example because of an
1892 unterminated comment. Similarly, skipping needs to be cleared in
1893 case of a missing #endif. */
1894 pfile->lexer_pos.output_line = pfile->line;
1895 pfile->state.skipping = 0;
1899 _cpp_init_directives (pfile)
1905 /* Register the directives. */
1906 for (i = 0; i < (unsigned int) N_DIRECTIVES; i++)
1908 node = cpp_lookup (pfile, dtable[i].name, dtable[i].length);
1909 node->directive_index = i + 1;