5757#include " ./centipede/runner_request.h"
5858#include " ./centipede/runner_result.h"
5959#include " ./centipede/runner_utils.h"
60+ #include " ./centipede/sancov_runtime.h"
6061#include " ./centipede/sancov_state.h"
6162#include " ./centipede/shared_memory_blob_sequence.h"
6263#include " ./common/defs.h"
@@ -395,10 +396,11 @@ static void ReadOneInputExecuteItAndDumpCoverage(const char *input_path,
395396 input_path);
396397 FILE *features_file = fopen (features_file_path, " w" );
397398 PrintErrorAndExitIf (features_file == nullptr , " can't open coverage file" );
398- // TODO(yamilmorales): Hide the raw sancov state objects and expose
399- // interface functions instead.
400- WriteFeaturesToFile (features_file, sancov_state->g_features .data (),
401- sancov_state->g_features .size ());
399+
400+ const SanCovRuntimeRawFeatureParts sancov_features =
401+ SanCovRuntimeGetFeatures ();
402+ WriteFeaturesToFile (features_file, sancov_features.features ,
403+ sancov_features.num_features );
402404 fclose (features_file);
403405}
404406
@@ -408,13 +410,15 @@ static bool StartSendingOutputsToEngine(BlobSequence &outputs_blobseq) {
408410 return BatchResult::WriteInputBegin (outputs_blobseq);
409411}
410412
411- // Copy all the `g_features` to `data` with given `capacity` in bytes.
412- // Returns the byte size of `g_features` .
413+ // Copy all the sancov features to `data` with given `capacity` in bytes.
414+ // Returns the byte size of sancov features .
413415static size_t CopyFeatures (uint8_t *data, size_t capacity) {
416+ const SanCovRuntimeRawFeatureParts sancov_features =
417+ SanCovRuntimeGetFeatures ();
414418 const size_t features_len_in_bytes =
415- sancov_state-> g_features . size () * sizeof (feature_t );
419+ sancov_features. num_features * sizeof (feature_t );
416420 if (features_len_in_bytes > capacity) return 0 ;
417- memcpy (data, sancov_state-> g_features . data () , features_len_in_bytes);
421+ memcpy (data, sancov_features. features , features_len_in_bytes);
418422 return features_len_in_bytes;
419423}
420424
@@ -441,9 +445,11 @@ static bool FinishSendingOutputsToEngine(BlobSequence &outputs_blobseq) {
441445 }
442446 }
443447
448+ const SanCovRuntimeRawFeatureParts sancov_features =
449+ SanCovRuntimeGetFeatures ();
444450 // Copy features to shared memory.
445- if (!BatchResult::WriteOneFeatureVec (sancov_state-> g_features . data () ,
446- sancov_state-> g_features . size () ,
451+ if (!BatchResult::WriteOneFeatureVec (sancov_features. features ,
452+ sancov_features. num_features ,
447453 outputs_blobseq)) {
448454 return false ;
449455 }
@@ -749,7 +755,6 @@ GlobalRunnerState::GlobalRunnerState() {
749755
750756 // TODO(kcc): move some code from CentipedeRunnerMain() here so that it works
751757 // even if CentipedeRunnerMain() is not called.
752- tls.OnThreadStart ();
753758 state->StartWatchdogThread ();
754759
755760 SetLimits ();
0 commit comments