Remove the EXTERN define from stabsread.h

Message ID 20190122090009.5893-1-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey Jan. 22, 2019, 9 a.m. UTC
  This removes the EXTERN define from stabsread.h.  This is the only
spot that still uses this approach, and it interfered with sorting the

Tested by rebuilding.

gdb/ChangeLog
2019-01-22  Tom Tromey  <tom@tromey.com>

	* stabsread.c (EXTERN): Do not define.
	(symnum, next_symbol_text_func, processing_gcc_compilation)
	(within_function, global_sym_chain, global_stabs)
	(previous_stab_code, this_object_header_files)
	(n_this_object_header_files)
	(n_allocated_this_object_header_files): Define.
	* stabsread.h (EXTERN): Never define.  Use "extern".
---
 gdb/ChangeLog   | 10 ++++++++++
 gdb/stabsread.c | 18 +++++++++++++-----
 gdb/stabsread.h | 33 +++++++++++----------------------
 3 files changed, 34 insertions(+), 27 deletions(-)
  

Comments

Sergio Durigan Junior Jan. 22, 2019, 5:37 p.m. UTC | #1
On Tuesday, January 22 2019, Tom Tromey wrote:

> This removes the EXTERN define from stabsread.h.  This is the only
> spot that still uses this approach, and it interfered with sorting the

Makes sense to me, but you need to finish the sentence above :-).

Cheers,

> Tested by rebuilding.
>
> gdb/ChangeLog
> 2019-01-22  Tom Tromey  <tom@tromey.com>
>
> 	* stabsread.c (EXTERN): Do not define.
> 	(symnum, next_symbol_text_func, processing_gcc_compilation)
> 	(within_function, global_sym_chain, global_stabs)
> 	(previous_stab_code, this_object_header_files)
> 	(n_this_object_header_files)
> 	(n_allocated_this_object_header_files): Define.
> 	* stabsread.h (EXTERN): Never define.  Use "extern".
> ---
>  gdb/ChangeLog   | 10 ++++++++++
>  gdb/stabsread.c | 18 +++++++++++++-----
>  gdb/stabsread.h | 33 +++++++++++----------------------
>  3 files changed, 34 insertions(+), 27 deletions(-)
>
> diff --git a/gdb/stabsread.c b/gdb/stabsread.c
> index fc41c8fc86..fc3db8f19b 100644
> --- a/gdb/stabsread.c
> +++ b/gdb/stabsread.c
> @@ -47,11 +47,19 @@
>  #include "bcache.h"
>  #include <ctype.h>
>  
> -/* Ask stabsread.h to define the vars it normally declares `extern'.  */
> -#define	EXTERN
> -/**/
> -#include "stabsread.h"		/* Our own declarations */
> -#undef	EXTERN
> +#include "stabsread.h"
> +
> +/* See stabsread.h for these globals.  */
> +unsigned int symnum;
> +const char *(*next_symbol_text_func) (struct objfile *);
> +unsigned char processing_gcc_compilation;
> +int within_function;
> +struct symbol *global_sym_chain[HASHSIZE];
> +struct pending_stabs *global_stabs;
> +int previous_stab_code;
> +int *this_object_header_files;
> +int n_this_object_header_files;
> +int n_allocated_this_object_header_files;
>  
>  struct nextfield
>  {
> diff --git a/gdb/stabsread.h b/gdb/stabsread.h
> index 868ad0b21d..b872aadb87 100644
> --- a/gdb/stabsread.h
> +++ b/gdb/stabsread.h
> @@ -20,16 +20,7 @@ struct objfile;
>  enum language;
>  
>  /* Definitions, prototypes, etc for stabs debugging format support
> -   functions.
> -
> -   Variables declared in this file can be defined by #define-ing
> -   the name EXTERN to null.  It is used to declare variables that
> -   are normally extern, but which get defined in a single module
> -   using this technique.  */
> -
> -#ifndef EXTERN
> -#define	EXTERN extern
> -#endif
> +   functions.  */
>  
>  #define HASHSIZE 127		/* Size of things hashed via
>  				   hashname().  */
> @@ -40,23 +31,23 @@ extern int hashname (const char *name);
>  
>  /* Count symbols as they are processed, for error messages.  */
>  
> -EXTERN unsigned int symnum;
> +extern unsigned int symnum;
>  
>  #define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
>  
>  /* Function to invoke get the next symbol.  Return the symbol name.  */
>  
> -EXTERN const char *(*next_symbol_text_func) (struct objfile *);
> +extern const char *(*next_symbol_text_func) (struct objfile *);
>  
>  /* Global variable which, when set, indicates that we are processing a
>     .o file compiled with gcc */
>  
> -EXTERN unsigned char processing_gcc_compilation;
> +extern unsigned char processing_gcc_compilation;
>  
>  /* Nonzero if within a function (so symbols should be local, if
>     nothing says specifically).  */
>  
> -EXTERN int within_function;
> +extern int within_function;
>  
>  /* Hash table of global symbols whose values are not known yet.
>     They are chained thru the SYMBOL_VALUE_CHAIN, since we don't
> @@ -66,7 +57,7 @@ EXTERN int within_function;
>     it refers to a FORTRAN common block rather than the usual meaning, and
>     the such LOC_BLOCK symbols use their fields in nonstandard ways.  */
>  
> -EXTERN struct symbol *global_sym_chain[HASHSIZE];
> +extern struct symbol *global_sym_chain[HASHSIZE];
>  
>  extern void common_block_start (const char *, struct objfile *);
>  extern void common_block_end (struct objfile *);
> @@ -80,12 +71,12 @@ struct pending_stabs
>      char *stab[1];
>    };
>  
> -EXTERN struct pending_stabs *global_stabs;
> +extern struct pending_stabs *global_stabs;
>  
>  /* The type code that process_one_symbol saw on its previous invocation.
>     Used to detect pairs of N_SO symbols.  */
>  
> -EXTERN int previous_stab_code;
> +extern int previous_stab_code;
>  
>  /* Support for Sun changes to dbx symbol format.  */
>  
> @@ -150,11 +141,11 @@ struct header_file
>     and not to any header file.  FILENUM != 1 is interpreted by looking it up
>     in the following table, which contains indices in header_files.  */
>  
> -EXTERN int *this_object_header_files;
> +extern int *this_object_header_files;
>  
> -EXTERN int n_this_object_header_files;
> +extern int n_this_object_header_files;
>  
> -EXTERN int n_allocated_this_object_header_files;
> +extern int n_allocated_this_object_header_files;
>  
>  extern void cleanup_undefined_stabs_types (struct objfile *);
>  
> @@ -228,5 +219,3 @@ extern void init_header_files (void);
>     to.  Get these symbols from the minimal symbol table.  */
>  
>  extern void scan_file_globals (struct objfile *objfile);
> -
> -#undef EXTERN
> -- 
> 2.17.2
  
Tom Tromey Jan. 22, 2019, 10:58 p.m. UTC | #2
>>>>> "Sergio" == Sergio Durigan Junior <sergiodj@redhat.com> writes:

Sergio> On Tuesday, January 22 2019, Tom Tromey wrote:
>> This removes the EXTERN define from stabsread.h.  This is the only
>> spot that still uses this approach, and it interfered with sorting the

Sergio> Makes sense to me, but you need to finish the sentence above :-).

The missing line started with "#include", and git interpreted the "#" as
a comment.

What's funny is that this has never happened to me before, and now it's
happened twice in one day on different projects...

I'm going to check this in with an updated commit message.

Tom
  

Patch

diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index fc41c8fc86..fc3db8f19b 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -47,11 +47,19 @@ 
 #include "bcache.h"
 #include <ctype.h>
 
-/* Ask stabsread.h to define the vars it normally declares `extern'.  */
-#define	EXTERN
-/**/
-#include "stabsread.h"		/* Our own declarations */
-#undef	EXTERN
+#include "stabsread.h"
+
+/* See stabsread.h for these globals.  */
+unsigned int symnum;
+const char *(*next_symbol_text_func) (struct objfile *);
+unsigned char processing_gcc_compilation;
+int within_function;
+struct symbol *global_sym_chain[HASHSIZE];
+struct pending_stabs *global_stabs;
+int previous_stab_code;
+int *this_object_header_files;
+int n_this_object_header_files;
+int n_allocated_this_object_header_files;
 
 struct nextfield
 {
diff --git a/gdb/stabsread.h b/gdb/stabsread.h
index 868ad0b21d..b872aadb87 100644
--- a/gdb/stabsread.h
+++ b/gdb/stabsread.h
@@ -20,16 +20,7 @@  struct objfile;
 enum language;
 
 /* Definitions, prototypes, etc for stabs debugging format support
-   functions.
-
-   Variables declared in this file can be defined by #define-ing
-   the name EXTERN to null.  It is used to declare variables that
-   are normally extern, but which get defined in a single module
-   using this technique.  */
-
-#ifndef EXTERN
-#define	EXTERN extern
-#endif
+   functions.  */
 
 #define HASHSIZE 127		/* Size of things hashed via
 				   hashname().  */
@@ -40,23 +31,23 @@  extern int hashname (const char *name);
 
 /* Count symbols as they are processed, for error messages.  */
 
-EXTERN unsigned int symnum;
+extern unsigned int symnum;
 
 #define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
 
 /* Function to invoke get the next symbol.  Return the symbol name.  */
 
-EXTERN const char *(*next_symbol_text_func) (struct objfile *);
+extern const char *(*next_symbol_text_func) (struct objfile *);
 
 /* Global variable which, when set, indicates that we are processing a
    .o file compiled with gcc */
 
-EXTERN unsigned char processing_gcc_compilation;
+extern unsigned char processing_gcc_compilation;
 
 /* Nonzero if within a function (so symbols should be local, if
    nothing says specifically).  */
 
-EXTERN int within_function;
+extern int within_function;
 
 /* Hash table of global symbols whose values are not known yet.
    They are chained thru the SYMBOL_VALUE_CHAIN, since we don't
@@ -66,7 +57,7 @@  EXTERN int within_function;
    it refers to a FORTRAN common block rather than the usual meaning, and
    the such LOC_BLOCK symbols use their fields in nonstandard ways.  */
 
-EXTERN struct symbol *global_sym_chain[HASHSIZE];
+extern struct symbol *global_sym_chain[HASHSIZE];
 
 extern void common_block_start (const char *, struct objfile *);
 extern void common_block_end (struct objfile *);
@@ -80,12 +71,12 @@  struct pending_stabs
     char *stab[1];
   };
 
-EXTERN struct pending_stabs *global_stabs;
+extern struct pending_stabs *global_stabs;
 
 /* The type code that process_one_symbol saw on its previous invocation.
    Used to detect pairs of N_SO symbols.  */
 
-EXTERN int previous_stab_code;
+extern int previous_stab_code;
 
 /* Support for Sun changes to dbx symbol format.  */
 
@@ -150,11 +141,11 @@  struct header_file
    and not to any header file.  FILENUM != 1 is interpreted by looking it up
    in the following table, which contains indices in header_files.  */
 
-EXTERN int *this_object_header_files;
+extern int *this_object_header_files;
 
-EXTERN int n_this_object_header_files;
+extern int n_this_object_header_files;
 
-EXTERN int n_allocated_this_object_header_files;
+extern int n_allocated_this_object_header_files;
 
 extern void cleanup_undefined_stabs_types (struct objfile *);
 
@@ -228,5 +219,3 @@  extern void init_header_files (void);
    to.  Get these symbols from the minimal symbol table.  */
 
 extern void scan_file_globals (struct objfile *objfile);
-
-#undef EXTERN