]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas: respect CR_EOL also for scrubbing
authorJan Beulich <jbeulich@suse.com>
Fri, 9 Aug 2024 09:48:32 +0000 (11:48 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 9 Aug 2024 09:48:32 +0000 (11:48 +0200)
While apparently intended to be only externally controlled (e.g. via
specifying CFLAGS at make invocation), we should still keep scrubber and
lexer in sync in this regard. There's one place which imo was previously
wrong already, but would go further wrong and hence is being adjusted
right here: An .mri directive can be terminated by any kind of "line"
(really: statement) separators.

gas/app.c

index 89e9dd0ac826d6bddbabaa83cb5153f77dd18331..a45c03f8384f8540a3398dfc0e136259f3040355 100644 (file)
--- a/gas/app.c
+++ b/gas/app.c
@@ -93,7 +93,11 @@ static char last_char;
 static char lex[256] = {
   [' ']  = LEX_IS_WHITESPACE,
   ['\t'] = LEX_IS_WHITESPACE,
+#ifdef CR_EOL
+  ['\r'] = LEX_IS_LINE_SEPARATOR,
+#else
   ['\r'] = LEX_IS_WHITESPACE,
+#endif
   ['\n'] = LEX_IS_NEWLINE,
   [':'] = LEX_IS_COLON,
   ['$'] = LEX_IS_SYMBOL_COMPONENT,
@@ -857,7 +861,9 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen,
              ++mri_state;
            }
          else if (*mri_state != '\0'
-                  || (!IS_WHITESPACE (ch) && !IS_NEWLINE (ch)))
+                  || (!IS_WHITESPACE (ch)
+                      && !IS_LINE_SEPARATOR (ch)
+                      && !IS_NEWLINE (ch)))
            {
              /* We did not get the expected character, or we didn't
                 get a valid terminating character after seeing the