Lines Matching full:flags

1 //===- FuzzerDriver.cpp - FuzzerDriver function and flags -----------------===//
67 } Flags;
73 {#Name, Description, Default, &Flags.Name, nullptr, nullptr},
76 nullptr, nullptr, &Flags.Name},
78 {#Name, Description, 0, nullptr, &Flags.Name, nullptr},
150 Printf("INFO: libFuzzer ignores flags that start with '--'\n");
164 if (Flags.verbosity >= 2)
170 if (Flags.verbosity >= 2)
175 if (Flags.verbosity >= 2)
185 "use -help=1 to list all flags\n\n", Param);
204 Flags.len_control = 0;
212 if (Flags.ignore_remaining_args)
240 if (Flags.verbosity) {
329 if (Flags.print_full_coverage) {
358 if (Inputs->size() != 1 || !Flags.exact_artifact_path) {
364 std::string OutputFilePath = Flags.exact_artifact_path;
423 if (Flags.runs <= 0 && Flags.max_total_time == 0) {
456 Flags.exact_artifact_path
457 ? Flags.exact_artifact_path
466 if (Flags.exact_artifact_path) {
467 CurrentFilePath = Flags.exact_artifact_path;
479 if (Flags.exact_artifact_path) {
480 CurrentFilePath = Flags.exact_artifact_path;
529 {}, &NewCov, CFPath, true, Flags.set_cover_merge);
533 if (!Flags.merge_control_file)
610 if (Flags.seed_inputs[0] == '@')
611 SeedInputs = FileToString(Flags.seed_inputs + 1); // File contains list.
613 SeedInputs = Flags.seed_inputs; // seed_inputs contains the list.
662 if (Flags.help) {
667 if (Flags.close_fd_mask & 2)
669 if (Flags.close_fd_mask & 1)
672 if (Flags.jobs > 0 && Flags.workers == 0) {
673 Flags.workers = std::min(NumberOfCpuCores() / 2, Flags.jobs);
674 if (Flags.workers > 1)
675 Printf("Running %u workers\n", Flags.workers);
678 if (Flags.workers > 0 && Flags.jobs > 0)
679 return RunInMultipleProcesses(Args, Flags.workers, Flags.jobs);
682 Options.Verbosity = Flags.verbosity;
683 Options.MaxLen = Flags.max_len;
684 Options.LenControl = Flags.len_control;
685 Options.KeepSeed = Flags.keep_seed;
686 Options.UnitTimeoutSec = Flags.timeout;
687 Options.ErrorExitCode = Flags.error_exitcode;
688 Options.TimeoutExitCode = Flags.timeout_exitcode;
689 Options.IgnoreTimeouts = Flags.ignore_timeouts;
690 Options.IgnoreOOMs = Flags.ignore_ooms;
691 Options.IgnoreCrashes = Flags.ignore_crashes;
692 Options.MaxTotalTimeSec = Flags.max_total_time;
693 Options.DoCrossOver = Flags.cross_over;
694 Options.CrossOverUniformDist = Flags.cross_over_uniform_dist;
695 Options.MutateDepth = Flags.mutate_depth;
696 Options.ReduceDepth = Flags.reduce_depth;
697 Options.UseCounters = Flags.use_counters;
698 Options.UseMemmem = Flags.use_memmem;
699 Options.UseCmp = Flags.use_cmp;
700 Options.UseValueProfile = Flags.use_value_profile;
701 Options.Shrink = Flags.shrink;
702 Options.ReduceInputs = Flags.reduce_inputs;
703 Options.ShuffleAtStartUp = Flags.shuffle;
704 Options.PreferSmall = Flags.prefer_small;
705 Options.ReloadIntervalSec = Flags.reload;
706 Options.OnlyASCII = Flags.only_ascii;
707 Options.DetectLeaks = Flags.detect_leaks;
708 Options.PurgeAllocatorIntervalSec = Flags.purge_allocator_interval;
709 Options.TraceMalloc = Flags.trace_malloc;
710 Options.RssLimitMb = Flags.rss_limit_mb;
711 Options.MallocLimitMb = Flags.malloc_limit_mb;
714 if (Flags.runs >= 0)
715 Options.MaxNumberOfRuns = Flags.runs;
716 if (!Inputs->empty() && !Flags.minimize_crash_internal_step) {
722 ValidateDirectoryExists(Options.OutputCorpus, Flags.create_missing_dirs);
725 Options.ReportSlowUnits = Flags.report_slow_units;
726 if (Flags.artifact_prefix) {
727 Options.ArtifactPrefix = Flags.artifact_prefix;
736 ValidateDirectoryExists(ArtifactPathDir, Flags.create_missing_dirs);
738 if (Flags.exact_artifact_path) {
739 Options.ExactArtifactPath = Flags.exact_artifact_path;
741 Flags.create_missing_dirs);
744 if (Flags.dict)
745 if (!ParseDictionaryFile(FileToString(Flags.dict), &Dictionary))
747 if (Flags.verbosity > 0 && !Dictionary.empty())
751 !RunIndividualFiles || Flags.minimize_crash_internal_step;
752 Options.PrintNewCovPcs = Flags.print_pcs;
753 Options.PrintNewCovFuncs = Flags.print_funcs;
754 Options.PrintFinalStats = Flags.print_final_stats;
755 Options.PrintCorpusStats = Flags.print_corpus_stats;
756 Options.PrintCoverage = Flags.print_coverage;
757 Options.PrintFullCoverage = Flags.print_full_coverage;
758 if (Flags.exit_on_src_pos)
759 Options.ExitOnSrcPos = Flags.exit_on_src_pos;
760 if (Flags.exit_on_item)
761 Options.ExitOnItem = Flags.exit_on_item;
762 if (Flags.focus_function)
763 Options.FocusFunction = Flags.focus_function;
764 if (Flags.data_flow_trace)
765 Options.DataFlowTrace = Flags.data_flow_trace;
766 if (Flags.features_dir) {
767 Options.FeaturesDir = Flags.features_dir;
768 ValidateDirectoryExists(Options.FeaturesDir, Flags.create_missing_dirs);
770 if (Flags.mutation_graph_file)
771 Options.MutationGraphFile = Flags.mutation_graph_file;
772 if (Flags.collect_data_flow)
773 Options.CollectDataFlow = Flags.collect_data_flow;
774 if (Flags.stop_file)
775 Options.StopFile = Flags.stop_file;
776 Options.Entropic = Flags.entropic;
778 (size_t)Flags.entropic_feature_frequency_threshold;
780 (size_t)Flags.entropic_number_of_rarest_features;
781 Options.EntropicScalePerExecTime = Flags.entropic_scale_per_exec_time;
795 unsigned Seed = Flags.seed;
800 if (Flags.verbosity)
803 if (Flags.collect_data_flow && Flags.data_flow_trace && !Flags.fork &&
804 !(Flags.merge || Flags.set_cover_merge)) {
806 return CollectDataFlow(Flags.collect_data_flow, Flags.data_flow_trace,
809 return CollectDataFlow(Flags.collect_data_flow, Flags.data_flow_trace,
825 StartRssThread(F, Flags.rss_limit_mb);
828 Options.HandleAbrt = Flags.handle_abrt;
829 Options.HandleAlrm = !Flags.minimize_crash;
830 Options.HandleBus = Flags.handle_bus;
831 Options.HandleFpe = Flags.handle_fpe;
832 Options.HandleIll = Flags.handle_ill;
833 Options.HandleInt = Flags.handle_int;
834 Options.HandleSegv = Flags.handle_segv;
835 Options.HandleTerm = Flags.handle_term;
836 Options.HandleXfsz = Flags.handle_xfsz;
837 Options.HandleUsr1 = Flags.handle_usr1;
838 Options.HandleUsr2 = Flags.handle_usr2;
839 Options.HandleWinExcept = Flags.handle_winexcept;
845 if (Flags.minimize_crash)
848 if (Flags.minimize_crash_internal_step)
851 if (Flags.cleanse_crash)
856 int Runs = std::max(1, Flags.runs);
876 Options.ForkCorpusGroups = Flags.fork_corpus_groups;
877 if (Flags.fork)
878 FuzzWithFork(F->GetMD().GetRand(), Options, Args, *Inputs, Flags.fork);
880 if (Flags.merge || Flags.set_cover_merge)
881 Merge(F, Options, Args, *Inputs, Flags.merge_control_file);
883 if (Flags.merge_inner) {
887 assert(Flags.merge_control_file);
888 F->CrashResistantMergeInternalStep(Flags.merge_control_file,
889 !strncmp(Flags.merge_inner, "2", 1));
893 if (Flags.analyze_dict) {
914 auto CorporaFiles = ReadCorpora(*Inputs, ParseSeedInuts(Flags.seed_inputs));
917 if (Flags.verbosity)