aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2024-08-09 11:48:32 +0200
committerJan Beulich <jbeulich@suse.com>2024-08-09 11:48:32 +0200
commitd5de496c0eda2a7f47a183362e3108920d44d8d5 (patch)
treeff431c71608e04b28354259500e38f2475df3d10
parent8d627d3b319fb0110e2e8f018202b8f231d56411 (diff)
downloadgdb-d5de496c0eda2a7f47a183362e3108920d44d8d5.zip
gdb-d5de496c0eda2a7f47a183362e3108920d44d8d5.tar.gz
gdb-d5de496c0eda2a7f47a183362e3108920d44d8d5.tar.bz2
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.
-rw-r--r--gas/app.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gas/app.c b/gas/app.c
index 89e9dd0..a45c03f 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