Modernise yyerror
authorAlan Modra <amodra@gmail.com>
Sat, 6 Nov 2021 10:18:14 +0000 (20:48 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 6 Nov 2021 10:45:49 +0000 (21:15 +1030)
Newer versions of bison emit a prototype for yyerror
void yyerror (const char *);
This clashes with some of our old code that declares yyerror to return
an int.  Fix that in most cases by modernizing yyerror.  bfin-parse.y
uses the return value all over the place, so for there disable
generation of the prototype as specified by posix.

binutils/
* arparse.y (yyerror): Return void.
* dlltool.c (yyerror): Likewise.
* dlltool.h (yyerror): Likewise.
* sysinfo.y (yyerror): Likewise.
* windmc.h (yyerror): Likewise.
* mclex.c (mc_error): Extract from ..
(yyerror): ..here, both now returning void.
gas/
* config/bfin-parse.y (yyerror): Define.
(yyerror): Make static.
* itbl-parse.y (yyerror): Return void.
ld/
* deffilep.y (def_error): Return void.

binutils/arparse.y
binutils/dlltool.c
binutils/dlltool.h
binutils/mclex.c
binutils/sysinfo.y
binutils/windmc.h
gas/config/bfin-parse.y
gas/itbl-parse.y
ld/deffilep.y

index 5fee56262a1d6cb7d7f55c565944a2618d9065ab..7ea5e7ff0db6274a3670d9e794f2b1f47cc540e7 100644 (file)
@@ -31,7 +31,7 @@
 #include "arsup.h"
 extern int verbose;
 extern int yylex (void);
-static int yyerror (const char *);
+static void yyerror (const char *);
 %}
 
 %union {
@@ -193,11 +193,10 @@ verbose_command:
 
 %%
 
-static int
+static void
 yyerror (const char *x ATTRIBUTE_UNUSED)
 {
   extern int linenumber;
 
   printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
-  return 0;
 }
index e6fafb4dc8473eed40bc0c1cced543ccce833e53..4f337f78d24e67acf93fcbaeecb97bc2ac7e65e9 100644 (file)
@@ -990,13 +990,11 @@ static int d_nforwards = 0;       /* Number of forwarded exports.  */
 static int d_is_dll;
 static int d_is_exe;
 
-int
+void
 yyerror (const char * err ATTRIBUTE_UNUSED)
 {
   /* xgettext:c-format */
   non_fatal (_("Syntax error in def file %s:%d"), def_file, linenumber);
-
-  return 0;
 }
 
 void
index 72d05378022b965eca53624665f1d01e766980dd..74e9b817161682bb5dc3f7ae07b54f7b510ea736 100644 (file)
@@ -31,7 +31,7 @@ extern void def_section (const char *, int);
 extern void def_stacksize (int, int);
 extern void def_version (int, int);
 extern int  yyparse (void);
-extern int  yyerror (const char *);
+extern void yyerror (const char *);
 extern int  yylex (void);
 
 extern int yydebug;
index aa1814cc7451152a1874f8e85b5c7a3c15cbe8ad..670e88652e9c5a971c87f4f3ad52ee24deb48fad 100644 (file)
@@ -103,14 +103,19 @@ mc_fatal (const char *s, ...)
 }
 
 
-int
-yyerror (const char *s, ...)
+static void
+mc_error (const char *s, ...)
 {
   va_list argp;
   va_start (argp, s);
   show_msg ("parser", s, argp);
   va_end (argp);
-  return 1;
+}
+
+void
+yyerror (const char *s)
+{
+  mc_error (s);
 }
 
 static unichar *
@@ -451,7 +456,7 @@ yylex (void)
        yylval.ustr = get_diff (input_stream_pos, start_token);
        return MCIDENT;
       }
-    yyerror ("illegal character 0x%x.", ch);
+    mc_error ("illegal character 0x%x.", ch);
   }
   return -1;
 }
index 3d09fc0f9581ea5fe1ee5555e00f0fe88e5e3886..7aca49ef7f8b9ea7a65405465bee512afc19aaa4 100644 (file)
@@ -33,7 +33,7 @@ static int rdepth;
 static char *names[] = {" ","[n]","[n][m]"};
 static char *pnames[]= {"","*","**"};
 
-static int yyerror (char *s);
+static void yyerror (const char *s);
 extern int yylex (void);
 %}
 
@@ -434,9 +434,8 @@ if (writecode == 'd')
 return 0;
 }
 
-static int
-yyerror (char *s)
+static void
+yyerror (const char *s)
 {
   fprintf(stderr, "%s\n" , s);
-  return 0;
 }
index edea8735801e0e29bef26d0611491790418a9eef..e3ef2e314cedcfff7502e564602ef8bde19e2dab 100644 (file)
@@ -80,7 +80,7 @@ mc_node_lang *mc_add_node_lang (mc_node *, const mc_keyword *, rc_uint_type);
 mc_node *mc_add_node (void);
 
 /* Standard yacc/flex stuff.  */
-int yyerror (const char *, ...);
+void yyerror (const char *);
 int yylex (void);
 int yyparse (void);
 
index 980cf98d57a859a94449efab56da853433b06ca6..5b93d4a66116679f359242a4e9987fcde957caee 100644 (file)
 #include "elf/common.h"
 #include "elf/bfin.h"
 
+/* This file uses an old-style yyerror returning int.  Disable
+   generation of a modern prototype for yyerror.  */
+#define yyerror yyerror
+
 #define DSP32ALU(aopcde, HL, dst1, dst0, src0, src1, s, x, aop) \
        bfin_gen_dsp32alu (HL, aopcde, aop, s, x, dst0, dst1, src0, src1)
 
@@ -160,7 +164,6 @@ static Expr_Node *unary  (Expr_Op_Type, Expr_Node *);
 static void notethat (const char *, ...);
 
 extern char *yytext;
-int yyerror (const char *);
 
 /* Used to set SRCx fields to all 1s as described in the PRM.  */
 static Register reg7 = {REG_R7, 0};
@@ -177,7 +180,7 @@ void error (const char *format, ...)
     as_bad ("%s", buffer);
 }
 
-int
+static int
 yyerror (const char *msg)
 {
   if (msg[0] == '\0')
index c06b4a803d93149929bd2dbd2ff35859133305c5..7f56c73cfc45851ce0bd2c51f45dc63095ffa747 100644 (file)
@@ -274,7 +274,7 @@ FIXME! hex is ambiguous with any digit
 
 static int sbit, ebit;
 static struct itbl_entry *insn=0;
-static int yyerror (const char *);
+static void yyerror (const char *);
 
 %}
 
@@ -449,9 +449,8 @@ value:
        ;
 %%
 
-static int
+static void
 yyerror (const char *msg)
 {
   printf ("line %d: %s\n", insntbl_line, msg);
-  return 0;
 }
index e58d0e0bcb5b855471d7349af7d5fdafd5f8ebb9..6bed6437fe2a63836ffd3cdde4c26ec23cdc4326 100644 (file)
@@ -102,7 +102,7 @@ static void def_version (int, int);
 static void def_directive (char *);
 static void def_aligncomm (char *str, int align);
 static int def_parse (void);
-static int def_error (const char *);
+static void def_error (const char *);
 static int def_lex (void);
 
 static int lex_forced_token = 0;
@@ -1261,12 +1261,11 @@ def_aligncomm (char *str, int align)
     }
 }
 
-static int
+static void
 def_error (const char *err)
 {
   einfo ("%P: %s:%d: %s\n",
         def_filename ? def_filename : "<unknown-file>", linenumber, err);
-  return 0;
 }