@@ -9,8 +9,9 @@ use ckb_vm_definitions::{
99 asm:: {
1010 FixedTrace , InvokeData , RET_CYCLES_OVERFLOW , RET_DECODE_TRACE , RET_DYNAMIC_JUMP ,
1111 RET_EBREAK , RET_ECALL , RET_INVALID_PERMISSION , RET_MAX_CYCLES_EXCEEDED , RET_OUT_OF_BOUND ,
12- RET_PAUSE , RET_SHADOW_STACK_SOFTWARE_CHECK_EXCEPTION , RET_SHADOW_STACK_STACK_OUT_OF_STACK ,
13- RET_SLOWPATH ,
12+ RET_PAUSE , RET_SHADOW_STACK_LABEL_WRONG , RET_SHADOW_STACK_LPAD_NOT_4BYTE_ALIGNED ,
13+ RET_SHADOW_STACK_NOT_LPAD , RET_SHADOW_STACK_STACK_OUT_OF_STACK ,
14+ RET_SHADOW_STACK_VALUE_WRONG , RET_SLOWPATH ,
1415 } ,
1516} ;
1617use rand:: { SeedableRng , prelude:: RngCore } ;
@@ -869,8 +870,18 @@ impl<R: AsmCoreMachineRevealer, D: TraceDecoder> DefaultMachineRunner for Abstra
869870 self . machine . pause . free ( ) ;
870871 return Err ( Error :: Pause ) ;
871872 }
872- RET_SHADOW_STACK_SOFTWARE_CHECK_EXCEPTION => {
873- return Err ( Error :: ShadowStackSoftwareCheckException ) ;
873+ RET_SHADOW_STACK_LPAD_NOT_4BYTE_ALIGNED => {
874+ // Should not be caught. The check occurs during the decoder phase.
875+ unreachable ! ( ) ;
876+ }
877+ RET_SHADOW_STACK_NOT_LPAD => {
878+ return Err ( Error :: ShadowStackNotLpad ) ;
879+ }
880+ RET_SHADOW_STACK_LABEL_WRONG => {
881+ return Err ( Error :: ShadowStackLabelWrong ) ;
882+ }
883+ RET_SHADOW_STACK_VALUE_WRONG => {
884+ return Err ( Error :: ShadowStackValueWrong ) ;
874885 }
875886 RET_SHADOW_STACK_STACK_OUT_OF_STACK => {
876887 return Err ( Error :: ShadowStackOutOfStack ) ;
@@ -938,8 +949,18 @@ impl<R: AsmCoreMachineRevealer, D: TraceDecoder> AbstractAsmMachine<R, D> {
938949 let instruction = decoder. decode ( self . machine . memory_mut ( ) , pc) ?;
939950 execute_instruction ( instruction, & mut self . machine ) ?;
940951 }
941- RET_SHADOW_STACK_SOFTWARE_CHECK_EXCEPTION => {
942- return Err ( Error :: ShadowStackSoftwareCheckException ) ;
952+ RET_SHADOW_STACK_LPAD_NOT_4BYTE_ALIGNED => {
953+ // Should not be caught. The check occurs during the decoder phase.
954+ unreachable ! ( ) ;
955+ }
956+ RET_SHADOW_STACK_NOT_LPAD => {
957+ return Err ( Error :: ShadowStackNotLpad ) ;
958+ }
959+ RET_SHADOW_STACK_LABEL_WRONG => {
960+ return Err ( Error :: ShadowStackLabelWrong ) ;
961+ }
962+ RET_SHADOW_STACK_VALUE_WRONG => {
963+ return Err ( Error :: ShadowStackValueWrong ) ;
943964 }
944965 RET_SHADOW_STACK_STACK_OUT_OF_STACK => {
945966 return Err ( Error :: ShadowStackOutOfStack ) ;
0 commit comments