From d5de496c0eda2a7f47a183362e3108920d44d8d5 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 9 Aug 2024 11:48:32 +0200 Subject: [PATCH] gas: respect CR_EOL also for scrubbing 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 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gas/app.c b/gas/app.c index 89e9dd0ac82..a45c03f8384 100644 --- 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 -- 2.47.3