aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-08-29 18:37:37 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-08-29 18:37:37 +0000
commit2c8f0515bbed378f1e87e1b52e2913d058cbed16 (patch)
tree7f03453e92f612da7c6531488d3878a73dbda657 /gcc
parent5c5d1cd68a748299a244a6b9fd7c3fce2f09d582 (diff)
downloadgcc-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/ChangeLog16
-rw-r--r--gcc/cpperror.c18
-rw-r--r--gcc/cpphash.h5
-rw-r--r--gcc/cppinit.c15
-rw-r--r--gcc/cpplex.c9
-rw-r--r--gcc/cpplib.c21
-rw-r--r--gcc/tradcpp.c7
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,