Fix code to check for illegal element numbers when accessing AArch64 vector registers in AArch64 sim.
* cpustate.c (GET_VEC_ELEMENT): Fix off by one error checking for an invalid element index. (SET_VEC_ELEMENT): Likewise.
This commit is contained in:
parent
941319d151
commit
4c0ca98e58
@ -4,6 +4,10 @@
|
|||||||
Print hex equivalents of floats and doubles.
|
Print hex equivalents of floats and doubles.
|
||||||
Check element number against array size when accessing vector
|
Check element number against array size when accessing vector
|
||||||
registers.
|
registers.
|
||||||
|
(GET_VEC_ELEMENT): Fix off by one error checking for an invalid
|
||||||
|
element index.
|
||||||
|
(SET_VEC_ELEMENT): Likewise.
|
||||||
|
|
||||||
* memory.c: Trace memory reads when --trace-memory is enabled.
|
* memory.c: Trace memory reads when --trace-memory is enabled.
|
||||||
Remove float and double load and store functions.
|
Remove float and double load and store functions.
|
||||||
* memory.h (aarch64_get_mem_float): Delete prototype.
|
* memory.h (aarch64_get_mem_float): Delete prototype.
|
||||||
|
@ -345,7 +345,7 @@ aarch64_set_FP_long_double (sim_cpu *cpu, VReg reg, FRegister a)
|
|||||||
#define GET_VEC_ELEMENT(REG, ELEMENT, FIELD) \
|
#define GET_VEC_ELEMENT(REG, ELEMENT, FIELD) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
if (element > ARRAY_SIZE (cpu->fr[0].FIELD)) \
|
if (element >= ARRAY_SIZE (cpu->fr[0].FIELD)) \
|
||||||
{ \
|
{ \
|
||||||
TRACE_REGISTER (cpu, \
|
TRACE_REGISTER (cpu, \
|
||||||
"Internal SIM error: invalid element number: %d ",\
|
"Internal SIM error: invalid element number: %d ",\
|
||||||
@ -421,7 +421,7 @@ aarch64_get_vec_double (sim_cpu *cpu, VReg reg, unsigned element)
|
|||||||
#define SET_VEC_ELEMENT(REG, ELEMENT, VAL, FIELD, PRINTER) \
|
#define SET_VEC_ELEMENT(REG, ELEMENT, VAL, FIELD, PRINTER) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
if (ELEMENT > ARRAY_SIZE (cpu->fr[0].FIELD)) \
|
if (ELEMENT >= ARRAY_SIZE (cpu->fr[0].FIELD)) \
|
||||||
{ \
|
{ \
|
||||||
TRACE_REGISTER (cpu, \
|
TRACE_REGISTER (cpu, \
|
||||||
"Internal SIM error: invalid element number: %d ",\
|
"Internal SIM error: invalid element number: %d ",\
|
||||||
|
Loading…
Reference in New Issue
Block a user