diff options
author | Sergey Belyashov <sergey.belyashov@gmail.com> | 2020-01-03 16:23:19 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-01-03 16:23:19 +0000 |
commit | 16d87673993dc1dba10cd86996a9b016af38da12 (patch) | |
tree | 85dbb6aba85b82d6847e3092d95e4f4fb3e281d6 /gas | |
parent | f2a3559d54602cecfec6d90f792be4a70ad918ab (diff) | |
download | binutils-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/ChangeLog | 10 | ||||
-rw-r--r-- | gas/app.c | 4 | ||||
-rw-r--r-- | gas/as.h | 4 | ||||
-rw-r--r-- | gas/config/tc-ppc.h | 2 | ||||
-rw-r--r-- | gas/config/tc-z80.h | 1 | ||||
-rw-r--r-- | gas/read.c | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/z80/strings.d | 6 |
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 @@ -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 |