Silence warnings about incompatible plugins.
[deliverable/binutils-gdb.git] / gas / config / m68k-parse.y
index 4dc9e0bf1f782930477271c8363ace76e8f77bc0..11874298c0f4b6aaf203578e3d712ba42901ff13 100644 (file)
@@ -1,13 +1,12 @@
 /* m68k.y -- bison grammar for m68k operand parsing
 /* m68k.y -- bison grammar for m68k operand parsing
-   Copyright 1995, 1996, 1997, 1998, 2001, 2003, 2004
-   Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Ken Raeburn and Ian Lance Taylor, Cygnus Support
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Written by Ken Raeburn and Ian Lance Taylor, Cygnus Support
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
    any later version.
 
    GAS is distributed in the hope that it will be useful,
 #define        yylval  m68k_lval
 #define        yychar  m68k_char
 #define        yydebug m68k_debug
 #define        yylval  m68k_lval
 #define        yychar  m68k_char
 #define        yydebug m68k_debug
-#define        yypact  m68k_pact       
-#define        yyr1    m68k_r1                 
-#define        yyr2    m68k_r2                 
-#define        yydef   m68k_def                
-#define        yychk   m68k_chk                
-#define        yypgo   m68k_pgo                
-#define        yyact   m68k_act                
+#define        yypact  m68k_pact
+#define        yyr1    m68k_r1
+#define        yyr2    m68k_r2
+#define        yydef   m68k_def
+#define        yychk   m68k_chk
+#define        yypgo   m68k_pgo
+#define        yyact   m68k_act
 #define        yyexca  m68k_exca
 #define yyerrflag m68k_errflag
 #define yynerrs        m68k_nerrs
 #define        yyexca  m68k_exca
 #define yyerrflag m68k_errflag
 #define yynerrs        m68k_nerrs
@@ -83,9 +82,9 @@
 
 /* Internal functions.  */
 
 
 /* Internal functions.  */
 
-static enum m68k_register m68k_reg_parse PARAMS ((char **));
-static int yylex PARAMS ((void));
-static void yyerror PARAMS ((const char *));
+static enum m68k_register m68k_reg_parse (char **);
+static int yylex (void);
+static void yyerror (const char *);
 
 /* The parser sets fields pointed to by this global variable.  */
 static struct m68k_op *op;
 
 /* The parser sets fields pointed to by this global variable.  */
 static struct m68k_op *op;
@@ -686,8 +685,7 @@ static char *strorig;
    *CCP.  Otherwise don't change *CCP, and return 0.  */
 
 static enum m68k_register
    *CCP.  Otherwise don't change *CCP, and return 0.  */
 
 static enum m68k_register
-m68k_reg_parse (ccp)
-     register char **ccp;
+m68k_reg_parse (char **ccp)
 {
   char *start = *ccp;
   char c;
 {
   char *start = *ccp;
   char c;
@@ -749,14 +747,13 @@ m68k_reg_parse (ccp)
 /* The lexer.  */
 
 static int
 /* The lexer.  */
 
 static int
-yylex ()
+yylex (void)
 {
   enum m68k_register reg;
   char *s;
   int parens;
   int c = 0;
   int tail = 0;
 {
   enum m68k_register reg;
   char *s;
   int parens;
   int c = 0;
   int tail = 0;
-  char *hold;
 
   if (*str == ' ')
     ++str;
 
   if (*str == ' ')
     ++str;
@@ -915,11 +912,10 @@ yylex ()
 
          ++s;
 
 
          ++s;
 
-         hold = input_line_pointer;
-         input_line_pointer = s;
+         temp_ilp (s);
          expression (&scale);
          s = input_line_pointer;
          expression (&scale);
          s = input_line_pointer;
-         input_line_pointer = hold;
+         restore_ilp ();
 
          if (scale.X_op != O_constant)
            yyerror (_("scale specification must resolve to a number"));
 
          if (scale.X_op != O_constant)
            yyerror (_("scale specification must resolve to a number"));
@@ -1010,7 +1006,20 @@ yylex ()
 
     yylval.exp.pic_reloc = pic_none;
     cp = s - tail;
 
     yylval.exp.pic_reloc = pic_none;
     cp = s - tail;
-    if (cp - 6 > str && cp[-6] == '@')
+    if (cp - 7 > str && cp[-7] == '@')
+      {
+       if (strncmp (cp - 7, "@TLSLDM", 7) == 0)
+         {
+           yylval.exp.pic_reloc = pic_tls_ldm;
+           tail += 7;
+         }
+       else if (strncmp (cp - 7, "@TLSLDO", 7) == 0)
+         {
+           yylval.exp.pic_reloc = pic_tls_ldo;
+           tail += 7;
+         }
+      }
+    else if (cp - 6 > str && cp[-6] == '@')
       {
        if (strncmp (cp - 6, "@PLTPC", 6) == 0)
          {
       {
        if (strncmp (cp - 6, "@PLTPC", 6) == 0)
          {
@@ -1022,6 +1031,21 @@ yylex ()
            yylval.exp.pic_reloc = pic_got_pcrel;
            tail += 6;
          }
            yylval.exp.pic_reloc = pic_got_pcrel;
            tail += 6;
          }
+       else if (strncmp (cp - 6, "@TLSGD", 6) == 0)
+         {
+           yylval.exp.pic_reloc = pic_tls_gd;
+           tail += 6;
+         }
+       else if (strncmp (cp - 6, "@TLSIE", 6) == 0)
+         {
+           yylval.exp.pic_reloc = pic_tls_ie;
+           tail += 6;
+         }
+       else if (strncmp (cp - 6, "@TLSLE", 6) == 0)
+         {
+           yylval.exp.pic_reloc = pic_tls_le;
+           tail += 6;
+         }
       }
     else if (cp - 4 > str && cp[-4] == '@')
       {
       }
     else if (cp - 4 > str && cp[-4] == '@')
       {
@@ -1045,11 +1069,10 @@ yylex ()
       s[-tail] = 0;
     }
 
       s[-tail] = 0;
     }
 
-  hold = input_line_pointer;
-  input_line_pointer = str;
+  temp_ilp (str);
   expression (&yylval.exp.exp);
   str = input_line_pointer;
   expression (&yylval.exp.exp);
   str = input_line_pointer;
-  input_line_pointer = hold;
+  restore_ilp ();
 
   if (tail != 0)
     {
 
   if (tail != 0)
     {
@@ -1064,9 +1087,7 @@ yylex ()
    from outside this file.  */
 
 int
    from outside this file.  */
 
 int
-m68k_ip_op (s, oparg)
-     char *s;
-     struct m68k_op *oparg;
+m68k_ip_op (char *s, struct m68k_op *oparg)
 {
   memset (oparg, 0, sizeof *oparg);
   oparg->error = NULL;
 {
   memset (oparg, 0, sizeof *oparg);
   oparg->error = NULL;
@@ -1084,8 +1105,7 @@ m68k_ip_op (s, oparg)
 /* The error handler.  */
 
 static void
 /* The error handler.  */
 
 static void
-yyerror (s)
-     const char *s;
+yyerror (const char *s)
 {
   op->error = s;
 }
 {
   op->error = s;
 }
This page took 0.02442 seconds and 4 git commands to generate.