Add support for reading Aarch64 core dumps.
[binutils-gdb.git] / binutils / rclex.c
index ef0961b61ca69297b5a6f1d695fa977524a9127b..692f713caf326b43f002a3c0e3528f3e20b56e35 100644 (file)
@@ -1,7 +1,6 @@
 /* rclex.c -- lexer for Windows rc files parser  */
 
-/* Copyright 1997, 1998, 1999, 2001, 2002, 2003, 2005, 2006, 2007
-   Free Software Foundation, Inc.
+/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
 
    Written by Kai Tietz, Onevision.
 
@@ -9,7 +8,7 @@
 
    This program 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 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -22,6 +21,7 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
    02110-1301, USA.  */
 
+
 /* This is a lexer used by the Windows rc file parser.  It basically
    just recognized a bunch of keywords.  */
 
@@ -389,9 +389,9 @@ handle_quotes (rc_uint_type *len)
        }
       else
        {
-         rcparse_warning ("unexpected character after '\"'");
          ++t;
-         assert (ISSPACE (*t));
+         if (! ISSPACE (*t))
+           rcparse_warning ("unexpected character after '\"'");
          while (ISSPACE (*t))
            {
              if ((*t) == '\n')
@@ -678,7 +678,7 @@ static void
 rclex_string (void)
 {
   int c;
-  
+
   while ((c = rclex_peekch ()) != -1)
     {
       if (c == '\n')
@@ -692,6 +692,18 @@ rclex_string (void)
         }
       else if (rclex_readch () == '"')
        {
+         /* PR 6714
+            Skip any whitespace after the end of the double quotes.  */
+         do
+           {
+             c = rclex_peekch ();
+             if (ISSPACE (c))
+               rclex_readch ();
+             else
+               c = -1;
+           }
+         while (c != -1);
+               
          if (rclex_peekch () == '"')
            rclex_readch ();
          else
@@ -843,7 +855,11 @@ yylex (void)
        default:
          if (ISIDST (ch) || ch=='$')
            {
-             while ((ch = rclex_peekch ()) != -1 && (ISIDNUM (ch) || ch == '$' || ch == '.'))
+             while ((ch = rclex_peekch ()) != -1
+                    && (ISIDNUM (ch) || ch == '$' || ch == '.'
+                        || ch == ':' || ch == '\\' || ch == '/'
+                        || ch == '_' || ch == '-')
+                   )
                rclex_readch ();
              ch = IGNORE_CPP (rclex_translatekeyword (rclex_tok));
              if (ch == STRING)