aboutsummaryrefslogtreecommitdiff
path: root/interceptor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'interceptor.cc')
-rw-r--r--interceptor.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/interceptor.cc b/interceptor.cc
index 30eab52..4d4e84c 100644
--- a/interceptor.cc
+++ b/interceptor.cc
@@ -179,6 +179,8 @@ class Analyzer {
virtual bool should_recurse(Command*) const { return true; }
virtual bool make_fake(Command*) const { return false; }
+ virtual std::string name() const { return "Generic"; };
+
protected:
virtual InputsOutputs determine_inputs_outputs(const Command&) const { return {}; }
};
@@ -220,6 +222,8 @@ int default_fake(Command* command) {
}
class CompileLinkerAnalyzer : public Analyzer {
+ std::string name() const final { return "CompilerLinker"; };
+
InputsOutputs determine_inputs_outputs(const Command& command) const final {
static constexpr std::array kSkipNextArguments{
"-isystem", "-I", "-L", "-m", "-soname", "-z",
@@ -276,6 +280,8 @@ class CompileLinkerAnalyzer : public Analyzer {
};
class ArchiverAnalyzer : public Analyzer {
+ std::string name() const final { return "Archiver"; };
+
InputsOutputs determine_inputs_outputs(const Command& command) const final {
InputsOutputs result;
@@ -301,6 +307,8 @@ class ArchiverAnalyzer : public Analyzer {
};
class FixdepAnalyzer : public Analyzer {
+ std::string name() const final { return "Fixdep"; };
+
InputsOutputs determine_inputs_outputs(const Command& command) const final {
InputsOutputs result;
const auto& arguments = command.arguments();
@@ -365,6 +373,7 @@ static std::optional<interceptor::Command> process_command(const char* filename,
auto command = interceptor::instantiate_command(filename, argv, envp);
const auto analyzer = interceptor::Analyzer::get(command);
+ command.set_analyzer(analyzer->name());
bool transformed = false;