]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Revert "gas: drop scrubber states 14 and 15"
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 12 Aug 2024 15:43:20 +0000 (08:43 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 12 Aug 2024 17:42:02 +0000 (10:42 -0700)
This reverts commit 7dd0dfbde7ee31167a3b2e192a575493d26b7b0a.

This is a prerequisite for the PR gas/32073 fix.

gas/app.c
gas/config/tc-ia64.h
gas/config/tc-tic6x.h

index a47276e4816637534a8235e1faf3849f247083e7..b88b4c96137e427e99f1f2fa9511e25320745295 100644 (file)
--- 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
index 665272adde39a96175064347e1af9bdf86315b18..8ab05373f6ecf341aa4d0d1be120224a1b2fc4a8 100644 (file)
@@ -78,6 +78,9 @@ extern const char *ia64_target_format (void);
 #define LEX_QM         (LEX_NAME|LEX_BEGIN_NAME) /* allow `?' inside name */
 #define LEX_HASH       LEX_END_NAME    /* allow `#' ending a name */
 
+#define TC_PREDICATE_START_CHAR '('
+#define TC_PREDICATE_END_CHAR ')'
+
 extern const char ia64_symbol_chars[];
 #define tc_symbol_chars ia64_symbol_chars
 
index f21673e2d36ee92f8f7782abe9c8201a3e36f5a4..0b4223961e99bef74a0a0fe2eb6bb94ef9c84aa2 100644 (file)
@@ -24,6 +24,8 @@
 #define DOUBLEBAR_PARALLEL
 #define DWARF2_LINE_MIN_INSN_LENGTH 2
 #define MD_APPLY_SYM_VALUE(FIX) 0
+#define TC_PREDICATE_START_CHAR '['
+#define TC_PREDICATE_END_CHAR ']'
 /* For TI C6X, we keep spaces in what the preprocessor considers
    operands as they may separate functional unit specifiers from
    operands.  */