Five 1 month ago
parent 175f65771d
commit b40f83fd8b

Binary file not shown.

@ -3613,50 +3613,86 @@ static void edit_params(aflcc_state_t *aflcc, u32 argc, char **argv,
}
/* Main entry point */
int main(int argc, char **argv, char **envp) {
aflcc_state_t *aflcc = malloc(sizeof(aflcc_state_t));
aflcc_state_init(aflcc, (u8 *)argv[0]);
check_environment_vars(envp);
find_built_deps(aflcc);
compiler_mode_by_callname(aflcc);
compiler_mode_by_environ(aflcc);
compiler_mode_by_cmdline(aflcc, argc, argv);
instrument_mode_by_environ(aflcc);
mode_final_checkout(aflcc, argc, argv);
process_params(aflcc, 1, argc, argv);
maybe_usage(aflcc, argc, argv);
classDiagram
class AFLCCMain {
+main(argc, argv, envp)
+initializeState()
+checkEnvironmentVariables()
+findDependencies()
+determineCompilerMode()
+determineInstrumentationMode()
+finalizeMode()
+processParameters()
+maybeShowUsage()
+notifyMode()
+debugArguments()
+editParameters()
+executeCompiler()
}
mode_notification(aflcc);
class AFLCCState {
-cc_params: char**
-cc_par_cnt: u32
-passthrough: u8
-debug: u8
+aflcc_state_init(state, prog_name)
}
if (aflcc->debug) debugf_args(argc, argv);
class EnvironmentChecker {
+check_environment_vars(envp)
}
edit_params(aflcc, argc, argv, envp);
class DependencyFinder {
+find_built_deps(aflcc)
}
if (aflcc->debug)
debugf_args((s32)aflcc->cc_par_cnt, (char **)aflcc->cc_params);
class CompilerModeHandler {
+compiler_mode_by_callname(aflcc)
+compiler_mode_by_environ(aflcc)
+compiler_mode_by_cmdline(aflcc, argc, argv)
}
if (aflcc->passthrough) {
class InstrumentationModeHandler {
+instrument_mode_by_environ(aflcc)
}
argv[0] = aflcc->cc_params[0];
execvp(aflcc->cc_params[0], (char **)argv);
class ModeFinalizer {
+mode_final_checkout(aflcc, argc, argv)
}
} else {
class ParameterProcessor {
+process_params(aflcc, start_idx, argc, argv)
}
execvp(aflcc->cc_params[0], (char **)aflcc->cc_params);
class UsageNotifier {
+maybe_usage(aflcc, argc, argv)
}
}
class ModeNotifier {
+mode_notification(aflcc)
}
FATAL("Oops, failed to execute '%s' - check your PATH", aflcc->cc_params[0]);
class Debugger {
+debugf_args(argc, argv)
}
return 0;
class ParameterEditor {
+edit_params(aflcc, argc, argv, envp)
}
}
class Executor {
+execute_compiler(aflcc, argv)
}
AFLCCMain --> AFLCCState : 使
AFLCCMain --> EnvironmentChecker : 使
AFLCCMain --> DependencyFinder : 使
AFLCCMain --> CompilerModeHandler : 使
AFLCCMain --> InstrumentationModeHandler : 使
AFLCCMain --> ModeFinalizer : 使
AFLCCMain --> ParameterProcessor : 使
AFLCCMain --> UsageNotifier : 使
AFLCCMain --> ModeNotifier : 使
AFLCCMain --> Debugger : 使
AFLCCMain --> ParameterEditor : 使
AFLCCMain --> Executor : 使
Loading…
Cancel
Save