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 */ /* Main entry point */
int main(int argc, char **argv, char **envp) { classDiagram
class AFLCCMain {
aflcc_state_t *aflcc = malloc(sizeof(aflcc_state_t)); +main(argc, argv, envp)
aflcc_state_init(aflcc, (u8 *)argv[0]); +initializeState()
+checkEnvironmentVariables()
check_environment_vars(envp); +findDependencies()
+determineCompilerMode()
find_built_deps(aflcc); +determineInstrumentationMode()
+finalizeMode()
compiler_mode_by_callname(aflcc); +processParameters()
compiler_mode_by_environ(aflcc); +maybeShowUsage()
compiler_mode_by_cmdline(aflcc, argc, argv); +notifyMode()
+debugArguments()
instrument_mode_by_environ(aflcc); +editParameters()
+executeCompiler()
mode_final_checkout(aflcc, argc, argv); }
process_params(aflcc, 1, argc, argv);
maybe_usage(aflcc, argc, argv);
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) class CompilerModeHandler {
debugf_args((s32)aflcc->cc_par_cnt, (char **)aflcc->cc_params); +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]; class ModeFinalizer {
execvp(aflcc->cc_params[0], (char **)argv); +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