[LLDB][ARM] Extend testing for vpush emulation

https://reviews.llvm.org/D131658 found a bug in
ReadPseudoRegisterValue which would mean we read out
of bounds if the s register number was high enough.

This adds a memory check to vpush-1-thumb, which
should have been doing that anyway. Then copies that
test and uses the last 4 s registers instead.

Without the mentioned fix we see random values in
the final memory, with the fix it passes.

Reviewed By: fixathon

Differential Revision: https://reviews.llvm.org/D131663
This commit is contained in:
David Spickett 2022-08-11 09:00:26 +00:00
parent 726719e970
commit 14913fa5d0
2 changed files with 151 additions and 16 deletions

View File

@ -0,0 +1,121 @@
InstructionEmulationState={
assembly_string="vpush {s28, s29, s30, s31}"
triple=thumb-apple-ios
opcode=0xed2dea04
before_state={
registers={
r0=0x00000000
r1=0x00000001
r2=0x00000002
r3=0x00000003
r4=0x00000004
r5=0x00000005
r6=0x00000006
r7=0x2fdffe60
r8=0x00000008
r9=0x00000009
r10=0x0000000a
r11=0x0000000b
r12=0x0000000c
r13=0x2fdffe60
r14=0x00002f80
r15=0x00002ff8
cpsr=0x60000030
s0=0x00000000
s1=0x00000000
s2=0x00000000
s3=0x00000000
s4=0x00000000
s5=0x00000000
s6=0x00000000
s7=0x00000000
s8=0x00000000
s9=0x00000000
s10=0x00000000
s11=0x00000000
s12=0x00000000
s13=0x00000000
s14=0x00000000
s15=0x00000000
s16=0x00000000
s17=0x00000000
s18=0x00000000
s19=0x00000000
s20=0x00000000
s21=0x00000000
s22=0x00000000
s23=0x00000000
s24=0x00000000
s25=0x00000000
s26=0x00000000
s27=0x00000000
s28=0x11111111
s29=0x22222222
s30=0x33333333
s31=0x44444444
}
}
after_state={
memory={
address=0x2fdffe50
data_encoding=uint32_t
data=[
0x11111111
0x22222222
0x33333333
0x44444444
]
}
registers={
r0=0x00000000
r1=0x00000001
r2=0x00000002
r3=0x00000003
r4=0x00000004
r5=0x00000005
r6=0x00000006
r7=0x2fdffe60
r8=0x00000008
r9=0x00000009
r10=0x0000000a
r11=0x0000000b
r12=0x0000000c
r13=0x2fdffe50
r14=0x00002f80
r15=0x00002ffc
cpsr=0x60000030
s0=0x00000000
s1=0x00000000
s2=0x00000000
s3=0x00000000
s4=0x00000000
s5=0x00000000
s6=0x00000000
s7=0x00000000
s8=0x00000000
s9=0x00000000
s10=0x00000000
s11=0x00000000
s12=0x00000000
s13=0x00000000
s14=0x00000000
s15=0x00000000
s16=0x00000000
s17=0x00000000
s18=0x00000000
s19=0x00000000
s20=0x00000000
s21=0x00000000
s22=0x00000000
s23=0x00000000
s24=0x00000000
s25=0x00000000
s26=0x00000000
s27=0x00000000
s28=0x11111111
s29=0x22222222
s30=0x33333333
s31=0x44444444
}
}
}

View File

@ -43,19 +43,33 @@ s18=0x00000000
s19=0x00000000
s20=0x00000000
s21=0x00000000
s22=0x00000000
s23=0x00000000
s24=0x00000000
s25=0x00000000
s26=0x00000000
s27=0x00000000
s28=0x00000000
s29=0x00000000
s22=0x11111111
s23=0x22222222
s24=0x33333333
s25=0x44444444
s26=0x55555555
s27=0x66666666
s28=0x77777777
s29=0x88888888
s30=0x00000000
s31=0x00000000
}
}
after_state={
memory={
address=0x2fdffe40
data_encoding=uint32_t
data=[
0x11111111
0x22222222
0x33333333
0x44444444
0x55555555
0x66666666
0x77777777
0x88888888
]
}
registers={
r0=0x00000000
r1=0x00000001
@ -96,14 +110,14 @@ s18=0x00000000
s19=0x00000000
s20=0x00000000
s21=0x00000000
s22=0x00000000
s23=0x00000000
s24=0x00000000
s25=0x00000000
s26=0x00000000
s27=0x00000000
s28=0x00000000
s29=0x00000000
s22=0x11111111
s23=0x22222222
s24=0x33333333
s25=0x44444444
s26=0x55555555
s27=0x66666666
s28=0x77777777
s29=0x88888888
s30=0x00000000
s31=0x00000000
}