gas: pru: Fix trailing whitespace handling

With commit 6ae8a30d44, arguments followed
by a C-style comment ended up with a trailing space.  That extra space
character confused the PRU register name matching, leading to spurious
errors about unrecognized registers.  This affected existing code like
newlib's setjmp.s for pru.

Fix by stripping the trailing whitespace for any argument.

Even with 6ae8a30d44 reverted, this patch
is safe to be applied.

Successfully regression-tested with GCC and newlib testsuites for pru-unknown-elf.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
This commit is contained in:
Dimitar Dimitrov
2024-08-12 22:25:57 +03:00
parent a6f8fe0a9e
commit 5c8f918639
3 changed files with 25 additions and 0 deletions

View File

@@ -1401,6 +1401,7 @@ pru_parse_args (pru_insn_infoS *insn ATTRIBUTE_UNUSED, char *argstr,
char *p;
char *end = NULL;
int i;
size_t len;
p = argstr;
i = 0;
bool terminate = false;
@@ -1437,6 +1438,13 @@ pru_parse_args (pru_insn_infoS *insn ATTRIBUTE_UNUSED, char *argstr,
as_bad (_("too many arguments"));
}
/* Strip trailing whitespace. */
len = strlen (parsed_args[i]);
for (char *temp = parsed_args[i] + len - 1;
len && ISSPACE (*temp);
temp--, len--)
*temp = '\0';
if (*parsestr == '\0' || (p != NULL && *p == '\0'))
terminate = true;
++i;

View File

@@ -0,0 +1,11 @@
#objdump: -dr --prefix-addresses --show-raw-insn
#name: whitespace parsing
# Test the whitespace parsing
.*: +file format elf32-pru
Disassembly of section .text:
0+0000 <[^>]*> 1300e2e1 mov r1, sp
0+0004 <[^>]*> 1300e2e1 mov r1, sp
0+0008 <[^>]*> 1300e2e1 mov r1, sp

View File

@@ -0,0 +1,6 @@
# Source file used to test the whitespace parsing.
foo:
mov r1 /* comment */, r2 /* ... */
mov r1 /* comment */, r2 /* ... */
mov /* x */ r1 /* comment */ , r2 /* ... */