diff options
author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-06-21 23:08:17 +0000 |
---|---|---|
committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-06-21 23:08:17 +0000 |
commit | 6af24d0a730f978321a2c3132560ef33d12b3085 (patch) | |
tree | 6e4efa3389b627b15921c495d03be0193553df87 | |
parent | 0ffe71f7375269ebe1aebdbd09208ac8c57dd870 (diff) | |
download | gcc-6af24d0a730f978321a2c3132560ef33d12b3085.tar.gz |
* cppfiles.c (cpp_make_system_header): New function.
* cpplib.h: Prototype it.
* cpplib.c (do_line, do_pragma_system_header): Use it.
* fix-header.c (read_scan_file): Use it.
* fix-header.c (check_macro_names): Cast second arg of
cpp_defined to const unsigned char *.
(read_scan_file): Make getchar_call const unsigned char.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34641 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/cppfiles.c | 17 | ||||
-rw-r--r-- | gcc/cpplib.c | 10 | ||||
-rw-r--r-- | gcc/cpplib.h | 2 | ||||
-rw-r--r-- | gcc/fix-header.c | 6 |
5 files changed, 38 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30afc10a814..f5099262a9c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,16 @@ 2000-06-21 Zack Weinberg <zack@wolery.cumb.org> + * cppfiles.c (cpp_make_system_header): New function. + * cpplib.h: Prototype it. + * cpplib.c (do_line, do_pragma_system_header): Use it. + * fix-header.c (read_scan_file): Use it. + + * fix-header.c (check_macro_names): Cast second arg of + cpp_defined to const unsigned char *. + (read_scan_file): Make getchar_call const unsigned char. + +2000-06-21 Zack Weinberg <zack@wolery.cumb.org> + * cppfiles.c: Include splay-tree.h, not hashtab.h. (redundant_include_p, make_IHASH, hash_IHASH, eq_IHASH): Delete. (destroy_include_file_node): New. diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index 422a123a1e0..1598a3ee883 100644 --- a/gcc/cppfiles.c +++ b/gcc/cppfiles.c @@ -308,6 +308,23 @@ _cpp_fake_include (pfile, fname) return (const char *)name; } +/* Not everyone who wants to set system-header-ness on a buffer can + see the details of struct include_file. This is an exported interface + because fix-header needs it. */ +void +cpp_make_system_header (pfile, pbuf, flag) + cpp_reader *pfile; + cpp_buffer *pbuf; + int flag; +{ + if (flag < 0 || flag > 2) + cpp_ice (pfile, "cpp_make_system_header: bad flag %d\n", flag); + else if (!pbuf->inc) + cpp_ice (pfile, "cpp_make_system_header called on non-file buffer"); + else + pbuf->inc->sysp = flag; +} + #define PRINT_THIS_DEP(p, b) (CPP_PRINT_DEPS(p) > (b||p->system_include_depth)) void _cpp_execute_include (pfile, f, len, no_reinclude, search_start) diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 3fc39dc06a4..93798fac36f 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -603,23 +603,23 @@ do_line (pfile) if (action_number == 1) { pfile->buffer_stack_depth++; - ip->inc->sysp = 0; + cpp_make_system_header (pfile, ip, 0); read_line_number (pfile, &action_number); } else if (action_number == 2) { pfile->buffer_stack_depth--; - ip->inc->sysp = 0; + cpp_make_system_header (pfile, ip, 0); read_line_number (pfile, &action_number); } if (action_number == 3) { - ip->inc->sysp = 1; + cpp_make_system_header (pfile, ip, 1); read_line_number (pfile, &action_number); } if (action_number == 4) { - ip->inc->sysp = 2; + cpp_make_system_header (pfile, ip, 2); read_line_number (pfile, &action_number); } } @@ -978,7 +978,7 @@ do_pragma_system_header (pfile) if (CPP_PREV_BUFFER (ip) == NULL) cpp_warning (pfile, "#pragma system_header outside include file"); else - ip->inc->sysp = 1; + cpp_make_system_header (pfile, ip, 1); return 1; } diff --git a/gcc/cpplib.h b/gcc/cpplib.h index e79c2c8b742..88efdf789bb 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -714,6 +714,8 @@ extern cpp_hashnode *cpp_lookup PARAMS ((cpp_reader *, /* In cppfiles.c */ extern int cpp_included PARAMS ((cpp_reader *, const char *)); extern int cpp_read_file PARAMS ((cpp_reader *, const char *)); +extern void cpp_make_system_header PARAMS ((cpp_reader *, + cpp_buffer *, int)); #ifdef __cplusplus } diff --git a/gcc/fix-header.c b/gcc/fix-header.c index 3740ce05ca9..473ef7aee99 100644 --- a/gcc/fix-header.c +++ b/gcc/fix-header.c @@ -606,7 +606,7 @@ check_macro_names (pfile, names) while (*names) { len = strlen (names); - if (cpp_defined (pfile, names, len)) + if (cpp_defined (pfile, (const unsigned char *)names, len)) recognized_macro (names); names += len + 1; } @@ -640,7 +640,7 @@ read_scan_file (in_fname, argc, argv) exit (FATAL_EXIT_CODE); /* We are scanning a system header, so mark it as such. */ - CPP_BUFFER (&scan_in)->system_header_p = 1; + cpp_make_system_header (&scan_in, CPP_BUFFER (&scan_in), 1); scan_decls (&scan_in, argc, argv); for (cur_symbols = &symbol_table[0]; cur_symbols->names; cur_symbols++) @@ -657,7 +657,7 @@ read_scan_file (in_fname, argc, argv) if (special_file_handling == stdio_h && (fn = lookup_std_proto ("_filbuf", 7)) != NULL) { - static char getchar_call[] = "getchar();"; + static const unsigned char getchar_call[] = "getchar();"; int old_written = CPP_WRITTEN (&scan_in); int seen_filbuf = 0; cpp_buffer *buf = CPP_BUFFER (&scan_in); |