From e08f7da38459b29b19fd5766eb68864e203a1c93 Mon Sep 17 00:00:00 2001 From: kevans Date: Mon, 6 Apr 2020 23:20:20 +0000 Subject: [PATCH] indent: fix the -fno-common build Spread the globals far and wide, hopefully to the files that make the most sense. -fno-common will become the default in GCC10/LLVM11. MFC after: 3 days --- usr.bin/indent/indent.c | 24 +++++++++ usr.bin/indent/indent_globs.h | 97 ++++++++++++++++++----------------- usr.bin/indent/io.c | 9 ++++ usr.bin/indent/parse.c | 4 ++ 4 files changed, 88 insertions(+), 46 deletions(-) diff --git a/usr.bin/indent/indent.c b/usr.bin/indent/indent.c index 1dcce85e232b..b9dfe5f89537 100644 --- a/usr.bin/indent/indent.c +++ b/usr.bin/indent/indent.c @@ -59,6 +59,30 @@ __FBSDID("$FreeBSD$"); #include "indent_codes.h" #include "indent.h" +/* Globals */ +FILE *input, *output; +char *labbuf, *s_lab, *e_lab, *l_lab; +char *codebuf, *s_code, *e_code, *l_code; +char *combuf, *s_com, *e_com, *l_com; +char *tokenbuf, *s_token, *e_token, *l_token; +char *in_buffer, *in_buffer_limit; +char *buf_ptr, *buf_end; + +char sc_buf[sc_size]; + +char *save_com, *sc_end; +char *bp_save; +char *be_save; + +struct options opt; +int line_no; + +struct parser_state ps; +int ifdef_level; +struct parser_state state_stack[5]; +struct parser_state match_state[5]; + + static void bakcopy(void); static void indent_declaration(int, int); diff --git a/usr.bin/indent/indent_globs.h b/usr.bin/indent/indent_globs.h index 51e70b19ec25..ffb70861f5d2 100644 --- a/usr.bin/indent/indent_globs.h +++ b/usr.bin/indent/indent_globs.h @@ -49,8 +49,8 @@ #define true 1 -FILE *input; /* the fid for the input file */ -FILE *output; /* the output file */ +extern FILE *input; /* the fid for the input file */ +extern FILE *output; /* the output file */ #define CHECK_SIZE_CODE(desired_size) \ if (e_code + (desired_size) >= l_code) { \ @@ -104,41 +104,43 @@ FILE *output; /* the output file */ s_token = tokenbuf + 1; \ } -char *labbuf; /* buffer for label */ -char *s_lab; /* start ... */ -char *e_lab; /* .. and end of stored label */ -char *l_lab; /* limit of label buffer */ +extern char *labbuf; /* buffer for label */ +extern char *s_lab; /* start ... */ +extern char *e_lab; /* .. and end of stored label */ +extern char *l_lab; /* limit of label buffer */ -char *codebuf; /* buffer for code section */ -char *s_code; /* start ... */ -char *e_code; /* .. and end of stored code */ -char *l_code; /* limit of code section */ +extern char *codebuf; /* buffer for code section */ +extern char *s_code; /* start ... */ +extern char *e_code; /* .. and end of stored code */ +extern char *l_code; /* limit of code section */ -char *combuf; /* buffer for comments */ -char *s_com; /* start ... */ -char *e_com; /* ... and end of stored comments */ -char *l_com; /* limit of comment buffer */ +extern char *combuf; /* buffer for comments */ +extern char *s_com; /* start ... */ +extern char *e_com; /* ... and end of stored comments */ +extern char *l_com; /* limit of comment buffer */ #define token s_token -char *tokenbuf; /* the last token scanned */ -char *s_token; -char *e_token; -char *l_token; +extern char *tokenbuf; /* the last token scanned */ +extern char *s_token; +extern char *e_token; +extern char *l_token; -char *in_buffer; /* input buffer */ -char *in_buffer_limit; /* the end of the input buffer */ -char *buf_ptr; /* ptr to next character to be taken from - * in_buffer */ -char *buf_end; /* ptr to first after last char in in_buffer */ +extern char *in_buffer; /* input buffer */ +extern char *in_buffer_limit; /* the end of the input buffer */ +extern char *buf_ptr; /* ptr to next character to be taken + * from in_buffer */ +extern char *buf_end; /* ptr to first after last char in + * in_buffer */ -char sc_buf[sc_size]; /* input text is saved here when looking for - * the brace after an if, while, etc */ -char *save_com; /* start of the comment stored in sc_buf */ -char *sc_end; /* pointer into save_com buffer */ +extern char sc_buf[sc_size]; /* input text is saved here when looking + * for the brace after an if, while, etc */ +extern char *save_com; /* start of the comment stored in + * sc_buf */ +extern char *sc_end; /* pointer into save_com buffer */ -char *bp_save; /* saved value of buf_ptr when taking input - * from save_com */ -char *be_save; /* similarly saved value of buf_end */ +extern char *bp_save; /* saved value of buf_ptr when taking + * input from save_com */ +extern char *be_save; /* similarly saved value of buf_end */ struct options { @@ -217,21 +219,22 @@ struct options { * uses all spaces */ int verbose; /* when true, non-essential error messages * are printed */ -} opt; +}; +extern struct options opt; -int found_err; -int n_real_blanklines; -int prefix_blankline_requested; -int postfix_blankline_requested; -int break_comma; /* when true and not in parens, break after a +extern int found_err; +extern int n_real_blanklines; +extern int prefix_blankline_requested; +extern int postfix_blankline_requested; +extern int break_comma; /* when true and not in parens, break after a * comma */ -float case_ind; /* indentation level to be used for a "case +extern float case_ind; /* indentation level to be used for a "case * n:" */ -int code_lines; /* count of lines with code */ -int had_eof; /* set to true when input is exhausted */ -int line_no; /* the current line number. */ -int inhibit_formatting; /* true if INDENT OFF is in effect */ -int suppress_blanklines;/* set iff following blanklines should be +extern int code_lines; /* count of lines with code */ +extern int had_eof; /* set to true when input is exhausted */ +extern int line_no; /* the current line number. */ +extern int inhibit_formatting; /* true if INDENT OFF is in effect */ +extern int suppress_blanklines;/* set iff following blanklines should be * suppressed */ #define STACKSIZE 256 @@ -312,8 +315,10 @@ struct parser_state { int tos; /* pointer to top of stack */ char procname[100]; /* The name of the current procedure */ int just_saw_decl; -} ps; +}; -int ifdef_level; -struct parser_state state_stack[5]; -struct parser_state match_state[5]; +extern struct parser_state ps; + +extern int ifdef_level; +extern struct parser_state state_stack[5]; +extern struct parser_state match_state[5]; diff --git a/usr.bin/indent/io.c b/usr.bin/indent/io.c index 1c5df5882b3e..4a27a74ff6fa 100644 --- a/usr.bin/indent/io.c +++ b/usr.bin/indent/io.c @@ -52,6 +52,15 @@ __FBSDID("$FreeBSD$"); #include "indent_globs.h" #include "indent.h" +/* Globals */ +int found_err; +int n_real_blanklines; +int prefix_blankline_requested, postfix_blankline_requested; +int code_lines; +int had_eof; +int inhibit_formatting; +int suppress_blanklines; + int comment_open; static int paren_target; static int pad_output(int current, int target); diff --git a/usr.bin/indent/parse.c b/usr.bin/indent/parse.c index c383eb64b40a..fc5f80311523 100644 --- a/usr.bin/indent/parse.c +++ b/usr.bin/indent/parse.c @@ -50,6 +50,10 @@ __FBSDID("$FreeBSD$"); #include "indent_codes.h" #include "indent.h" +/* Globals */ +int break_comma; +float case_ind; + static void reduce(void); void