* cli/cli-dump.c (bfd_openr_with_cleanup): Use gdb_bfd_openr.
[deliverable/binutils-gdb.git] / gdb / macrotab.h
index 25b4c5f5f3c70a3c33b18e3fcae4c4129084a334..92f165611dea51843a5500734d13fc39e1baaaeb 100644 (file)
@@ -1,5 +1,5 @@
 /* Interface to C preprocessor macro tables for GDB.
-   Copyright (C) 2002, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2007-2012 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -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;
 };
 
@@ -305,11 +325,14 @@ struct macro_source_file *(macro_definition_location
                             int *definition_line));
 
 /* Callback function when walking a macro table.  NAME is the name of
-   the macro, and DEFINITION is the definition.  USER_DATA is an
-   arbitrary pointer which is passed by the caller to macro_for_each
-   or macro_for_each_in_scope.  */
+   the macro, and DEFINITION is the definition.  SOURCE is the file at the
+   start of the include path, and LINE is the line number of the SOURCE file
+   where the macro was defined.  USER_DATA is an arbitrary pointer which is
+   passed by the caller to macro_for_each or macro_for_each_in_scope.  */
 typedef void (*macro_callback_fn) (const char *name,
                                   const struct macro_definition *definition,
+                                  struct macro_source_file *source,
+                                  int line,
                                   void *user_data);
 
 /* Call the function FN for each macro in the macro table TABLE.
This page took 0.025304 seconds and 4 git commands to generate.