summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorSergey Belyashov <sergey.belyashov@gmail.com>2020-01-03 16:23:19 +0000
committerNick Clifton <nickc@redhat.com>2020-01-03 16:23:19 +0000
commit16d87673993dc1dba10cd86996a9b016af38da12 (patch)
tree85dbb6aba85b82d6847e3092d95e4f4fb3e281d6 /gas
parentf2a3559d54602cecfec6d90f792be4a70ad918ab (diff)
downloadbinutils-gdb-16d87673993dc1dba10cd86996a9b016af38da12.tar.gz
Allow individual targets to decide if string escapes should be allowed. Disable for PPC and Z80.
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.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog10
-rw-r--r--gas/app.c4
-rw-r--r--gas/as.h4
-rw-r--r--gas/config/tc-ppc.h2
-rw-r--r--gas/config/tc-z80.h1
-rw-r--r--gas/read.c4
-rw-r--r--gas/testsuite/gas/z80/strings.d6
7 files changed, 22 insertions, 9 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 79b64a33116..5a16b9144aa 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/app.c b/gas/app.c
index 1bef63ef9e6..00c31bbf390 100644
--- 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
diff --git a/gas/as.h b/gas/as.h
index b57742a4f94..b8d3d74f737 100644
--- 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;
diff --git a/gas/config/tc-ppc.h b/gas/config/tc-ppc.h
index 870983c5784..4df7982fcf6 100644
--- a/gas/config/tc-ppc.h
+++ b/gas/config/tc-ppc.h
@@ -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
diff --git a/gas/config/tc-z80.h b/gas/config/tc-z80.h
index 57490270913..ae98d5d4d33 100644
--- a/gas/config/tc-z80.h
+++ b/gas/config/tc-z80.h
@@ -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
diff --git a/gas/read.c b/gas/read.c
index fa72d847cd8..bf594f12a2d 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -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;
diff --git a/gas/testsuite/gas/z80/strings.d b/gas/testsuite/gas/z80/strings.d
index cd4223098e5..6fe0594ab20 100644
--- a/gas/testsuite/gas/z80/strings.d
+++ b/gas/testsuite/gas/z80/strings.d
@@ -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