[PATCH 2/3] gas: don't recognize '8' and '9' as octal escape chars in strings
Jan Beulich
jbeulich@suse.com
Fri Jun 19 08:17:57 GMT 2026
It's not clear why these were covered; it has been like this from the very
beginning of (available) source history. Yet more oddly, an old ia64
testcase actually uses such malformed escape sequences (which are being
adjusted).
--- a/gas/read.c
+++ b/gas/read.c
@@ -6206,14 +6206,12 @@ next_char_of_string (void)
case '5':
case '6':
case '7':
- case '8':
- case '9':
{
unsigned number;
int i;
for (i = 0, number = 0;
- ISDIGIT (c) && i < 3;
+ i < 3 && c >= '0' && c <= '7';
c = *input_line_pointer++, i++)
{
number = number * 8 + c - '0';
--- a/gas/testsuite/gas/ia64/alias.s
+++ b/gas/testsuite/gas/ia64/alias.s
@@ -1,11 +1,11 @@
.section .foo,"aw","progbits"
.secalias .foo,"1234"
.secalias .foo,"1234"
- .alias foo, "\"\80\84\""
- .alias foo, "\"\80\84\""
+ .alias foo, "\"\100\104\""
+ .alias foo, "\"\100\104\""
foo:
- stringz "\"\80\84\""
+ stringz "\"\x40\x44\""
.secalias .foo,"1234"
.secalias .foo,"1234"
- .alias foo, "\"\80\84\""
- .alias foo, "\"\80\84\""
+ .alias foo, "\"\x40\x44\""
+ .alias foo, "\"\x40\x44\""
More information about the Binutils
mailing list