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
This commit is contained in:
parent
5c5d1cd68a
commit
2c8f0515bb
7 changed files with 62 additions and 29 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 *));
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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))
|
||||
|
|
21
gcc/cpplib.c
21
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. */
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue