[PATCH v3] CSKY: Fix sprintf argument overlaping destination error.
Nick Clifton
nickc@redhat.com
Thu Sep 10 08:59:43 GMT 2020
Hi Cooper,
One of your recent CSKY patches triggered a build failure for 32-bit
hosts, because the definition of the CSKY_ISA_FLOAT_7E60 constant does
not fit into a long int. There was also a small issue with one of the
sprintf's trying to put long long values into a long format conversion
operator. I have applied the patch below as an obvious fix.
Cheers
Nick
include/ChangeLog
2020-09-10 Nick Clifton <nickc@redhat.com>
* opcode/csky.h (CSKY_ISA_FLOAT_7E60): Use a long long type for
this value.
opcodes/ChangeLog
2020-09-10 Nick Clifton <nickc@redhat.com>
* csky-dis.c (csky_output_operand): Coerce the immediate values to
long before printing.
diff --git a/include/opcode/csky.h b/include/opcode/csky.h
index 421454383e..717e8a949d 100644
--- a/include/opcode/csky.h
+++ b/include/opcode/csky.h
@@ -58,7 +58,7 @@
/* 807 support (803f & 807f). */
#define CSKY_ISA_FLOAT_3E4 (1L << 28)
/* 860 support. */
-#define CSKY_ISA_FLOAT_7E60 (1L << 36)
+#define CSKY_ISA_FLOAT_7E60 (1LL << 36)
/* Vector DSP support. */
#define CSKY_ISA_VDSP (1L << 29)
#define CSKY_ISA_VDSP_2 (1L << 30)
diff --git a/opcodes/csky-dis.c b/opcodes/csky-dis.c
index 78ff055c3d..450a9bed0b 100644
--- a/opcodes/csky-dis.c
+++ b/opcodes/csky-dis.c
@@ -675,7 +675,7 @@ csky_output_operand (char *str, struct operand const *oprnd,
}
double d = 0;
memcpy (&d, &dvalue, sizeof (double));
- sprintf (buf, "%lf\t// imm9:%4ld, imm4:%2ld", d, imm8, imm4);
+ sprintf (buf, "%lf\t// imm9:%4ld, imm4:%2ld", d, (long) imm8, (long) imm4);
strcat (str, buf);
break;
}
More information about the Binutils
mailing list