diff options
author | Zack Weinberg <zack@wolery.cumb.org> | 2000-08-29 18:37:37 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2000-08-29 18:37:37 +0000 |
commit | 2c8f0515bbed378f1e87e1b52e2913d058cbed16 (patch) | |
tree | 7f03453e92f612da7c6531488d3878a73dbda657 /gcc | |
parent | 5c5d1cd68a748299a244a6b9fd7c3fce2f09d582 (diff) | |
download | gcc-2c8f0515bbed378f1e87e1b52e2913d058cbed16.zip gcc-2c8f0515bbed378f1e87e1b52e2913d058cbed16.tar.gz gcc-2c8f0515bbed378f1e87e1b52e2913d058cbed16.tar.bz2 |
cpperror.c (print_file_and_line): If line is (unsigned int)-1, print just the filename.
* cpperror.c (print_file_and_line): If line is (unsigned int)-1,
print just the filename.
* cpplex.c (_cpp_run_directive): Add additional argument, the
name to give the synthetic buffer. This defaults to
translated "<command line>".
* cpplib.c (cpp_define, cpp_undef, cpp_assert, cpp_unassert):
Adjust to match.
(_cpp_define_builtin): New function.
* cppinit.c (initialize_builtins): Use _cpp_define_builtin.
* cpphash.h: Update prototypes.
* tradcpp.c (main): Process -D and -U simultaneously, in the
order they appeared on the command line.
From-SVN: r36043
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/cpperror.c | 18 | ||||
-rw-r--r-- | gcc/cpphash.h | 5 | ||||
-rw-r--r-- | gcc/cppinit.c | 15 | ||||
-rw-r--r-- | gcc/cpplex.c | 9 | ||||
-rw-r--r-- | gcc/cpplib.c | 21 | ||||
-rw-r--r-- | gcc/tradcpp.c | 7 |
7 files changed, 62 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index add224b..6e84eb6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2000-08-29 Zack Weinberg <zack@wolery.cumb.org> + + * cpperror.c (print_file_and_line): If line is (unsigned int)-1, + print just the filename. + * cpplex.c (_cpp_run_directive): Add additional argument, the + name to give the synthetic buffer. This defaults to + translated "<command line>". + * cpplib.c (cpp_define, cpp_undef, cpp_assert, cpp_unassert): + Adjust to match. + (_cpp_define_builtin): New function. + * cppinit.c (initialize_builtins): Use _cpp_define_builtin. + * cpphash.h: Update prototypes. + + * tradcpp.c (main): Process -D and -U simultaneously, in the + order they appeared on the command line. + 2000-08-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * c-decl.c (define_label): Call warning_with_file_and_line and diff --git a/gcc/cpperror.c b/gcc/cpperror.c index edf1992..a6c7b2d 100644 --- a/gcc/cpperror.c +++ b/gcc/cpperror.c @@ -91,17 +91,15 @@ print_file_and_line (filename, line, column) const char *filename; unsigned int line, column; { - if (line == 0) - fputs (_("<command line>: "), stderr); + if (filename == 0 || *filename == '\0') + filename = "<stdin>"; + + if (line == (unsigned int)-1) + fprintf (stderr, "%s: ", filename); + else if (column > 0) + fprintf (stderr, "%s:%u:%u: ", filename, line, column); else - { - if (filename == 0 || *filename == '\0') - filename = "<stdin>"; - if (column > 0) - fprintf (stderr, "%s:%u:%u: ", filename, line, column); - else - fprintf (stderr, "%s:%u: ", filename, line); - } + fprintf (stderr, "%s:%u: ", filename, line); } /* Set up for an error message: print the file and line, bump the error diff --git a/gcc/cpphash.h b/gcc/cpphash.h index 23e1d81..45abb69 100644 --- a/gcc/cpphash.h +++ b/gcc/cpphash.h @@ -267,7 +267,8 @@ extern int _cpp_equiv_tokens PARAMS ((const cpp_token *, const cpp_token *)); extern void _cpp_run_directive PARAMS ((cpp_reader *, const struct directive *, - const char *, size_t)); + const char *, size_t, + const char *)); extern unsigned int _cpp_get_line PARAMS ((cpp_reader *, unsigned int *)); extern const cpp_token *_cpp_get_token PARAMS ((cpp_reader *)); @@ -284,6 +285,8 @@ extern cpp_hashnode *_cpp_parse_assertion PARAMS ((cpp_reader *, struct answer **)); extern struct answer **_cpp_find_answer PARAMS ((cpp_hashnode *, const cpp_toklist *)); +extern void _cpp_define_builtin PARAMS ((cpp_reader *, const char *)); + extern void _cpp_init_stacks PARAMS ((cpp_reader *)); extern void _cpp_cleanup_stacks PARAMS ((cpp_reader *)); extern void _cpp_init_internal_pragmas PARAMS ((cpp_reader *)); diff --git a/gcc/cppinit.c b/gcc/cppinit.c index f1ed54f..fbccfc3 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -610,9 +610,9 @@ initialize_builtins (pfile) if (b->flags & VERS) { - /* Allocate enough space for 'name="value"\0'. */ - str = xmalloc (b->len + strlen (version_string) + 4); - sprintf (str, "%s=\"%s\"", b->name, version_string); + /* Allocate enough space for 'name "value"\n\0'. */ + str = alloca (b->len + strlen (version_string) + 5); + sprintf (str, "%s \"%s\"\n", b->name, version_string); } else { @@ -621,13 +621,12 @@ initialize_builtins (pfile) else val = b->value; - /* Allocate enough space for "name=value\0". */ - str = xmalloc (b->len + strlen (val) + 2); - sprintf(str, "%s=%s", b->name, val); + /* Allocate enough space for "name value\n\0". */ + str = alloca (b->len + strlen (val) + 3); + sprintf(str, "%s %s\n", b->name, val); } - cpp_define (pfile, str); - free (str); + _cpp_define_builtin (pfile, str); } else { diff --git a/gcc/cpplex.c b/gcc/cpplex.c index ba53e5c..37d1de8 100644 --- a/gcc/cpplex.c +++ b/gcc/cpplex.c @@ -3565,16 +3565,23 @@ _cpp_skip_rest_of_line (pfile) /* Directive handler wrapper used by the command line option processor. */ void -_cpp_run_directive (pfile, dir, buf, count) +_cpp_run_directive (pfile, dir, buf, count, name) cpp_reader *pfile; const struct directive *dir; const char *buf; size_t count; + const char *name; { if (cpp_push_buffer (pfile, (const U_CHAR *)buf, count) != NULL) { unsigned int prev_lvl = 0; + if (name) + CPP_BUFFER (pfile)->nominal_fname = name; + else + CPP_BUFFER (pfile)->nominal_fname = _("<command line>"); + CPP_BUFFER (pfile)->lineno = (unsigned int)-1; + /* Scan the line now, else prevent_macro_expansion won't work. */ lex_next (pfile, 1); if (! (dir->flags & EXPAND)) diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 2cc956d..3273dce 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -1410,7 +1410,20 @@ cpp_define (pfile, str) strcpy (&buf[count-4], " 1\n"); } - _cpp_run_directive (pfile, &dtable[T_DEFINE], buf, count - 1); + _cpp_run_directive (pfile, &dtable[T_DEFINE], buf, count - 1, 0); +} + +/* Slight variant of the above for use by initialize_builtins, which (a) + knows how to set up the buffer itself, (b) needs a different "filename" + tag. */ +void +_cpp_define_builtin (pfile, str) + cpp_reader *pfile; + const char *str; +{ + _cpp_run_directive (pfile, &dtable[T_DEFINE], + str, strlen (str), + _("<builtin>")); } /* Process MACRO as if it appeared as the body of an #undef. */ @@ -1419,7 +1432,7 @@ cpp_undef (pfile, macro) cpp_reader *pfile; const char *macro; { - _cpp_run_directive (pfile, &dtable[T_UNDEF], macro, strlen (macro)); + _cpp_run_directive (pfile, &dtable[T_UNDEF], macro, strlen (macro), 0); } /* Process the string STR as if it appeared as the body of a #assert. */ @@ -1428,7 +1441,7 @@ cpp_assert (pfile, str) cpp_reader *pfile; const char *str; { - _cpp_run_directive (pfile, &dtable[T_ASSERT], str, strlen (str)); + _cpp_run_directive (pfile, &dtable[T_ASSERT], str, strlen (str), 0); } /* Process STR as if it appeared as the body of an #unassert. */ @@ -1437,7 +1450,7 @@ cpp_unassert (pfile, str) cpp_reader *pfile; const char *str; { - _cpp_run_directive (pfile, &dtable[T_UNASSERT], str, strlen (str)); + _cpp_run_directive (pfile, &dtable[T_UNASSERT], str, strlen (str), 0); } /* Determine whether the identifier ID, of length LEN, is a defined macro. */ diff --git a/gcc/tradcpp.c b/gcc/tradcpp.c index 5e88c02..125e2cb 100644 --- a/gcc/tradcpp.c +++ b/gcc/tradcpp.c @@ -711,14 +711,11 @@ main (argc, argv) and option processing. */ initialize_builtins (); - /* Do defines specified with -D. */ + /* Do defines specified with -D and undefines specified with -U. */ for (i = 1; i < argc; i++) if (pend_defs[i]) make_definition ((U_CHAR *)pend_defs[i]); - - /* Do undefines specified with -U. */ - for (i = 1; i < argc; i++) - if (pend_undefs[i]) + else if (pend_undefs[i]) make_undef ((U_CHAR *)pend_undefs[i]); /* Unless -fnostdinc, |