Consider this litmus test:
AArch64 GCSPOPM-fault
variant=shadowstack,fatal
{
SS(x,1) = ssval_t: {1};
0:GCSPR_EL1=&x[0];
}
P0 ;
L0: ;
GCSPOPM X1 ;
MOV X2,#1 ;
exists fault(P0:L0,GCS:POPM) /\ 0:X2=1
We would expect this to be forbidden, since if GCSPOPM faults then the following MOV should not get executed. However, currently herd7 reports with as allowed, with the following execution:
gcspopm.dot.pdf
Consider this litmus test:
We would expect this to be forbidden, since if
GCSPOPMfaults then the followingMOVshould not get executed. However, currentlyherd7reports with as allowed, with the following execution:gcspopm.dot.pdf