Allow individual targets to decide if string escapes should be allowed. Disable...
authorSergey Belyashov <sergey.belyashov@gmail.com>
Fri, 3 Jan 2020 16:23:19 +0000 (16:23 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 3 Jan 2020 16:23:19 +0000 (16:23 +0000)
PR 25311
* as.h (TC_STRING_ESCAPES): Provide a default definition.
* app.c (do_scrub_chars): Use TC_STRING_ESCAPES instead of
NO_STRING_ESCAPES.
* read.c (next_char_of_string): Likewise.
* config/tc-ppc.h (TC_STRING_ESCAPES): Define.
* config/tc-z80.h (TC_STRING_ESCAPES): Define.

gas/ChangeLog
gas/app.c
gas/as.h
gas/config/tc-ppc.h
gas/config/tc-z80.h
gas/read.c
gas/testsuite/gas/z80/strings.d

index 79b64a331169912087893a10aea100161b5ce5f3..5a16b9144aaa2ec23f04b2aeaca3155ba1825946 100644 (file)
@@ -1,3 +1,13 @@
+2020-01-03  Sergey Belyashov  <sergey.belyashov@gmail.com>
+
+       PR 25311
+       * as.h (TC_STRING_ESCAPES): Provide a default definition.
+       * app.c (do_scrub_chars): Use TC_STRING_ESCAPES instead of
+       NO_STRING_ESCAPES.
+       * read.c (next_char_of_string): Likewise.
+       * config/tc-ppc.h (TC_STRING_ESCAPES): Define.
+       * config/tc-z80.h (TC_STRING_ESCAPES): Define.
+
 2020-01-03  Nick Clifton  <nickc@redhat.com>
 
        * po/sv.po: Updated Swedish translation.
index 1bef63ef9e664f3f904d57cff0cbca92c6d04371..00c31bbf3906fe5ca85a191b9350cedf8a9072d9 100644 (file)
--- a/gas/app.c
+++ b/gas/app.c
@@ -602,13 +602,11 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen)
              state = old_state;
              PUT (ch);
            }
-#ifndef NO_STRING_ESCAPES
-         else if (ch == '\\')
+         else if (TC_STRING_ESCAPES && ch == '\\')
            {
              state = 6;
              PUT (ch);
            }
-#endif
          else if (scrub_m68k_mri && ch == '\n')
            {
              /* Just quietly terminate the string.  This permits lines like
index b57742a4f94fc848b6595ebca8596317a0a56770..b8d3d74f737614c8d606d55939d439bd1e3aedb3 100644 (file)
--- a/gas/as.h
+++ b/gas/as.h
@@ -588,6 +588,10 @@ COMMON int flag_m68k_mri;
 #define flag_m68k_mri 0
 #endif
 
+#ifndef TC_STRING_ESCAPES
+#define TC_STRING_ESCAPES 1
+#endif
+
 #ifdef WARN_COMMENTS
 COMMON int           warn_comment;
 COMMON unsigned int  found_comment;
index 870983c57845518c1debc3d1f3ceef9e015ce3c5..4df7982fcf608816756efc21fc3d29200c079795 100644 (file)
@@ -61,7 +61,7 @@ extern const char *ppc_target_format (void);
 
 /* Strings do not use backslash escapes under COFF.  */
 #ifdef OBJ_COFF
-#define NO_STRING_ESCAPES
+#define TC_STRING_ESCAPES 0
 #endif
 
 #ifdef OBJ_ELF
index 57490270913bb178b0cde066a1fad66ec18380b8..ae98d5d4d33d656aad79ccf3fa6304554032b443 100644 (file)
@@ -96,6 +96,7 @@ extern void z80_cons_fix_new (fragS *, int, int, expressionS *);
 /* We allow single quotes to delimit character constants as
    well, but it is cleaner to handle that in tc-z80.c.  */
 #define SINGLE_QUOTE_STRINGS
+#define TC_STRING_ESCAPES 0
 
 /* An `.lcomm' directive with no explicit alignment parameter will
    use this macro to set P2VAR to the alignment that a request for
index fa72d847cd8c507d87ce16fc20315cefc9f1e3e2..bf594f12a2dd3341998f63ab1a8e1bfaeea9a542 100644 (file)
@@ -5435,8 +5435,9 @@ next_char_of_string (void)
       bump_line_counters ();
       break;
 
-#ifndef NO_STRING_ESCAPES
     case '\\':
+      if (!TC_STRING_ESCAPES)
+       break;
       switch (c = *input_line_pointer++ & CHAR_MASK)
        {
        case 'b':
@@ -5538,7 +5539,6 @@ next_char_of_string (void)
          break;
        }
       break;
-#endif /* ! defined (NO_STRING_ESCAPES) */
 
     default:
       break;
index cd4223098e531140b853d5f5a4ab1a7e7785d2ce..6fe0594ab20741c3e7655e4902ab9646220e47a9 100644 (file)
@@ -8,7 +8,7 @@ Contents of section \.data:
  0010 44454642 20746578 745c6e64 38373833.*
  0020 4445464d 20746578 745c6e33 37383537.*
  0030 44422074 6578745c 6e333837 39383337.*
- 0040 2e617363 69692074 6578743a bf0c0a00.*
- 0050 2e617363 697a2074 6578740a 39393900.*
- 0060 2e737472 696e6720 74657874 0a090000.*
+ 0040 2e617363 69692074 6578745c 37325c32.*
+ 0050 37375c66 5c6e5c30 2e617363 697a2074.*
+ 0060 6578745c 6e393939 002e7374 72696e67.*
 #pass