[binutils-gdb] gas: don't recognize '8' and '9' as octal escape chars in strings

Jan Beulich jbeulich@sourceware.org
Fri Jul 17 07:25:50 GMT 2026


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a97e7d1eb509f3de0aa9d89a68389b910d9f2de4

commit a97e7d1eb509f3de0aa9d89a68389b910d9f2de4
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Jul 17 09:23:35 2026 +0200

    gas: don't recognize '8' and '9' as octal escape chars in strings
    
    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).

Diff:
---
 gas/read.c                     |  4 +---
 gas/testsuite/gas/ia64/alias.s | 10 +++++-----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/gas/read.c b/gas/read.c
index 1a7537ba2a1..ae481007c32 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -6221,14 +6221,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';
diff --git a/gas/testsuite/gas/ia64/alias.s b/gas/testsuite/gas/ia64/alias.s
index 9ac18014fa6..d54f69fbed0 100644
--- 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-cvs mailing list