aboutsummaryrefslogtreecommitdiff
path: root/gas/app.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2024-08-12 08:43:20 -0700
committerH.J. Lu <hjl.tools@gmail.com>2024-08-12 10:42:02 -0700
commit65d41fb015af0048347a25d0665bb1263eb982b0 (patch)
treeefa5b7de962870e78e6e00ebee88d97670c57cd4 /gas/app.c
parent3fc9d4e2e5a90158f1506d84b3486da1c3529177 (diff)
downloadfsf-binutils-gdb-65d41fb015af0048347a25d0665bb1263eb982b0.zip
fsf-binutils-gdb-65d41fb015af0048347a25d0665bb1263eb982b0.tar.gz
fsf-binutils-gdb-65d41fb015af0048347a25d0665bb1263eb982b0.tar.bz2
Revert "gas: drop scrubber states 14 and 15"
This reverts commit 7dd0dfbde7ee31167a3b2e192a575493d26b7b0a. This is a prerequisite for the PR gas/32073 fix.
Diffstat (limited to 'gas/app.c')
-rw-r--r--gas/app.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gas/app.c b/gas/app.c
index a47276e..b88b4c9 100644
--- a/gas/app.c
+++ b/gas/app.c
@@ -485,6 +485,12 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen,
13: After seeing a vertical bar, looking for a second
vertical bar as a parallel expression separator.
#endif
+#ifdef TC_PREDICATE_START_CHAR
+ 14: After seeing a predicate start character at state 0, looking
+ for a predicate end character as predicate.
+ 15: After seeing a predicate start character at state 1, looking
+ for a predicate end character as predicate.
+#endif
#ifdef TC_Z80
16: After seeing an 'a' or an 'A' at the start of a symbol
17: After seeing an 'f' or an 'F' in state 16
@@ -771,6 +777,29 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen,
/* flushchar: */
ch = GET ();
+#ifdef TC_PREDICATE_START_CHAR
+ if (ch == TC_PREDICATE_START_CHAR && (state == 0 || state == 1))
+ {
+ state += 14;
+ PUT (ch);
+ continue;
+ }
+ else if (state == 14 || state == 15)
+ {
+ if (ch == TC_PREDICATE_END_CHAR)
+ {
+ state -= 14;
+ PUT (ch);
+ ch = GET ();
+ }
+ else
+ {
+ PUT (ch);
+ continue;
+ }
+ }
+#endif
+
recycle:
#if defined TC_ARM && defined OBJ_ELF