Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: syzygy/instrument/instrumenters/afl_instrumenter.h

Issue 2951713003: adds the afl instrumenter. (Closed)
Patch Set: addressed feedback Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « syzygy/instrument/instrument.gyp ('k') | syzygy/instrument/instrumenters/afl_instrumenter.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: syzygy/instrument/instrumenters/afl_instrumenter.h
diff --git a/syzygy/instrument/instrumenters/afl_instrumenter.h b/syzygy/instrument/instrumenters/afl_instrumenter.h
new file mode 100644
index 0000000000000000000000000000000000000000..0a0518c27bc065a342d6436419bde09b4184fda8
--- /dev/null
+++ b/syzygy/instrument/instrumenters/afl_instrumenter.h
@@ -0,0 +1,79 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Declare the AFL instrumenter.
+
+#ifndef SYZYGY_INSTRUMENT_INSTRUMENTERS_AFL_INSTRUMENTER_H_
+#define SYZYGY_INSTRUMENT_INSTRUMENTERS_AFL_INSTRUMENTER_H_
+
+#include <string>
+#include <unordered_set>
+
+#include "base/command_line.h"
+#include "syzygy/instrument/instrumenters/instrumenter_with_agent.h"
+#include "syzygy/instrument/mutators/add_indexed_data_ranges_stream.h"
+#include "syzygy/instrument/transforms/afl_transform.h"
+#include "syzygy/pe/pe_relinker.h"
+
+namespace instrument {
+namespace instrumenters {
+
+class AFLInstrumenter : public InstrumenterWithRelinker {
+ public:
+ typedef InstrumenterWithRelinker Super;
+
+ AFLInstrumenter() : Super() {}
+
+ // From InstrumenterWithRelinker
+ bool InstrumentPrepare() override;
+ bool InstrumentImpl() override;
+ const char* InstrumentationMode() override;
+ bool DoCommandLineParse(const base::CommandLine* command_line) override;
+
+ protected:
+ // Force decomposition flag.
+ bool force_decomposition_;
+
+ // Thread-safe instrumentation flag.
+ bool multithread_mode_;
+
+ // Store the whitelist / blacklist of functions to instrument or not.
+ std::unordered_set<std::string> target_set_;
+ bool whitelist_mode_;
+
+ // Path to the JSON describing the instrumentation properties.
+ base::FilePath config_path_;
+
+ // Cookie check hook flag.
+ bool cookie_check_hook_;
+
+ // The transform for this agent.
+ std::unique_ptr<instrument::transforms::AFLTransform> transformer_;
+
+ // The PDB mutator for this agent.
+ std::unique_ptr<instrument::mutators::AddIndexedDataRangesStreamPdbMutator>
+ add_bb_addr_stream_mutator_;
+
+ private:
+ // Helper routines to read the JSON configuration file.
+ bool ReadFromJSON(const std::string& json);
+ bool ReadFromJSONPath(const base::FilePath& path);
+
+ DISALLOW_COPY_AND_ASSIGN(AFLInstrumenter);
+};
+
+} // namespace instrumenters
+} // namespace instrument
+
+#endif // SYZYGY_INSTRUMENT_INSTRUMENTERS_AFL_INSTRUMENTER_H_
« no previous file with comments | « syzygy/instrument/instrument.gyp ('k') | syzygy/instrument/instrumenters/afl_instrumenter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698