Module Name: src
Committed By: christos
Date: Fri Jan 27 23:36:04 UTC 2023
Modified Files:
src/external/gpl3/binutils/dist/gas: app.c
Log Message:
When trying to scrub characters in a macro to convert:
# 123 "foo.c" 1 -> .linefile 123"foo.c"1
check if there is space first. Otherwise give up.
On the vax it was trying to scrub:
# 2672 "foo.c" 1
emul %r2,%r0,$0,%r4
# 0 "" 2
and ended up with an incomplete string:
.linefile 2672"foo.c"1
emul %r2,%r0,$0,%r4
.
And then when the assembler tried to parse the next line after the emul
barfed with unknown pseudo-op .
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.9 -r1.2 src/external/gpl3/binutils/dist/gas/app.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/binutils/dist/gas/app.c
diff -u src/external/gpl3/binutils/dist/gas/app.c:1.1.1.9 src/external/gpl3/binutils/dist/gas/app.c:1.2
--- src/external/gpl3/binutils/dist/gas/app.c:1.1.1.9 Fri Dec 23 14:01:17 2022
+++ src/external/gpl3/binutils/dist/gas/app.c Fri Jan 27 18:36:04 2023
@@ -410,7 +410,7 @@ do_scrub_chars (size_t (*get) (char *, s
{
char *to = tostart;
char *toend = tostart + tolen;
- char *from;
+ char *from, *savefrom;
char *fromend;
size_t fromlen;
int ch, ch2 = 0;
@@ -1234,6 +1234,7 @@ do_scrub_chars (size_t (*get) (char *, s
thought out. On i386, we want '/' as line comment start
AND we want C style comments. hence this hack. The
whole lexical process should be reworked. xoxorich. */
+ savefrom = from;
if (ch == '/')
{
ch2 = GET ();
@@ -1294,6 +1295,11 @@ do_scrub_chars (size_t (*get) (char *, s
out_string = "\tlinefile ";
else
out_string = "\t.linefile ";
+ if (toend - to < strlen(out_string) + strlen(from) + 1)
+ {
+ from = savefrom - 1;
+ goto tofull;
+ }
PUT (*out_string++);
break;
}