@@ -900,6 +900,20 @@ VgSchedReturnCode do_scheduler ( Int* exitcode, ThreadId* last_run_tid )
900
900
continue ; /* with this thread */
901
901
}
902
902
903
+ if (trc == VEX_TRC_JMP_EMWARN ) {
904
+ VexEmWarn ew
905
+ = (VexEmWarn )VG_ (threads )[tid ].arch .vex .guest_EMWARN ;
906
+ HChar * what
907
+ = (ew < 0 || ew >= EmWarn_NUMBER )
908
+ ? "unknown (?!)"
909
+ : LibVEX_EmWarn_string (ew );
910
+ VG_ (message )( Vg_UserMsg ,
911
+ "Emulation warning: unsupported action:" );
912
+ VG_ (message )( Vg_UserMsg , " %s" , what );
913
+ VG_ (pp_ExeContext ) ( VG_ (get_ExeContext ) ( tid ) );
914
+ continue ; /* with this thread */
915
+ }
916
+
903
917
if (trc == VEX_TRC_JMP_CLIENTREQ ) {
904
918
UWord * args = (UWord * )(CLREQ_ARGS (VG_ (threads )[tid ].arch ));
905
919
UWord reqno = args [0 ];
@@ -908,7 +922,7 @@ VgSchedReturnCode do_scheduler ( Int* exitcode, ThreadId* last_run_tid )
908
922
/* Are we really absolutely totally quitting? */
909
923
if (reqno == VG_USERREQ__LIBC_FREERES_DONE ) {
910
924
if (0 || VG_ (clo_trace_syscalls ) || VG_ (clo_trace_sched )) {
911
- VG_ (message )(Vg_DebugMsg ,
925
+ VG_ (message )(Vg_DebugMsg ,
912
926
"__libc_freeres() done; really quitting!" );
913
927
}
914
928
return VgSrc_ExitSyscall ;
@@ -923,7 +937,7 @@ VgSchedReturnCode do_scheduler ( Int* exitcode, ThreadId* last_run_tid )
923
937
continue ; /* with this thread */
924
938
else
925
939
goto stage1 ;
926
- }
940
+ }
927
941
928
942
if (trc == VEX_TRC_JMP_SYSCALL ) {
929
943
/* Do a syscall for the vthread tid. This could cause it
0 commit comments