| Index: gdb/macrotab.h
|
| diff --git a/gdb/macrotab.h b/gdb/macrotab.h
|
| index 8316cc375d61a8f34fca15d94734c6bb9888675e..92f165611dea51843a5500734d13fc39e1baaaeb 100644
|
| --- a/gdb/macrotab.h
|
| +++ b/gdb/macrotab.h
|
| @@ -212,6 +212,10 @@ struct macro_source_file *macro_include (struct macro_source_file *source,
|
| int line,
|
| const char *included);
|
|
|
| +/* Define any special macros, like __FILE__ or __LINE__. This should
|
| + be called once, on the main source file. */
|
| +
|
| +void macro_define_special (struct macro_table *table);
|
|
|
| /* Find any source file structure for a file named NAME, either
|
| included into SOURCE, or SOURCE itself. Return zero if we have
|
| @@ -261,6 +265,17 @@ enum macro_kind
|
| macro_function_like
|
| };
|
|
|
| +/* Different kinds of special macros. */
|
| +
|
| +enum macro_special_kind
|
| +{
|
| + /* Ordinary. */
|
| + macro_ordinary,
|
| + /* The special macro __FILE__. */
|
| + macro_FILE,
|
| + /* The special macro __LINE__. */
|
| + macro_LINE
|
| +};
|
|
|
| /* A preprocessor symbol definition. */
|
| struct macro_definition
|
| @@ -273,12 +288,17 @@ struct macro_definition
|
|
|
| /* If `kind' is `macro_function_like', the number of arguments it
|
| takes, and their names. The names, and the array of pointers to
|
| - them, are in the table's bcache, if it has one. */
|
| - int argc : 31;
|
| + them, are in the table's bcache, if it has one. If `kind' is
|
| + `macro_object_like', then this is actually a `macro_special_kind'
|
| + describing the macro. */
|
| + int argc : 30;
|
| const char * const *argv;
|
|
|
| - /* The replacement string (body) of the macro. This is in the
|
| - table's bcache, if it has one. */
|
| + /* The replacement string (body) of the macro. For ordinary macros,
|
| + this is in the table's bcache, if it has one. For special macros
|
| + like __FILE__, this value is only valid until the next use of any
|
| + special macro definition; that is, it is reset each time any
|
| + special macro is looked up or iterated over. */
|
| const char *replacement;
|
| };
|
|
|
|
|