@@ -9,7 +9,8 @@ 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_SLOWPATH ,
12+ RET_PAUSE , RET_SHADOW_STACK_SOFTWARE_CHECK_EXCEPTION , RET_SHADOW_STACK_STACK_OUT_OF_STACK ,
13+ RET_SLOWPATH ,
1314 } ,
1415} ;
1516use rand:: { SeedableRng , prelude:: RngCore } ;
@@ -864,6 +865,12 @@ impl<R: AsmCoreMachineRevealer, D: TraceDecoder> DefaultMachineRunner for Abstra
864865 self . machine . pause . free ( ) ;
865866 return Err ( Error :: Pause ) ;
866867 }
868+ RET_SHADOW_STACK_SOFTWARE_CHECK_EXCEPTION => {
869+ return Err ( Error :: ShadowStackSoftwareCheckException ) ;
870+ }
871+ RET_SHADOW_STACK_STACK_OUT_OF_STACK => {
872+ return Err ( Error :: ShadowStackOutOfStack ) ;
873+ }
867874 _ => return Err ( Error :: Asm ( result) ) ,
868875 }
869876 }
@@ -927,6 +934,12 @@ impl<R: AsmCoreMachineRevealer, D: TraceDecoder> AbstractAsmMachine<R, D> {
927934 let instruction = decoder. decode ( self . machine . memory_mut ( ) , pc) ?;
928935 execute_instruction ( instruction, & mut self . machine ) ?;
929936 }
937+ RET_SHADOW_STACK_SOFTWARE_CHECK_EXCEPTION => {
938+ return Err ( Error :: ShadowStackSoftwareCheckException ) ;
939+ }
940+ RET_SHADOW_STACK_STACK_OUT_OF_STACK => {
941+ return Err ( Error :: ShadowStackOutOfStack ) ;
942+ }
930943 _ => return Err ( Error :: Asm ( result) ) ,
931944 }
932945 Ok ( ( ) )
0 commit comments