mirror of https://github.com/xemu-project/xemu.git
fuzz: log the arguments used to initialize QEMU
This is useful for building reproducers. Instead checking the code or the QEMU_FUZZ_ARGS, the arguments are at the top of the crash log. Signed-off-by: Alexander Bulekov <alxndr@bu.edu> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20210117201014.271610-3-alxndr@bu.edu>
This commit is contained in:
parent
92381157dd
commit
61f90e0461
|
@ -159,6 +159,8 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
|
||||||
char *target_name;
|
char *target_name;
|
||||||
const char *bindir;
|
const char *bindir;
|
||||||
char *datadir;
|
char *datadir;
|
||||||
|
GString *cmd_line;
|
||||||
|
gchar *pretty_cmd_line;
|
||||||
bool serialize = false;
|
bool serialize = false;
|
||||||
|
|
||||||
/* Initialize qgraph and modules */
|
/* Initialize qgraph and modules */
|
||||||
|
@ -217,7 +219,7 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run QEMU's softmmu main with the fuzz-target dependent arguments */
|
/* Run QEMU's softmmu main with the fuzz-target dependent arguments */
|
||||||
GString *cmd_line = fuzz_target->get_init_cmdline(fuzz_target);
|
cmd_line = fuzz_target->get_init_cmdline(fuzz_target);
|
||||||
g_string_append_printf(cmd_line, " %s -qtest /dev/null ",
|
g_string_append_printf(cmd_line, " %s -qtest /dev/null ",
|
||||||
getenv("QTEST_LOG") ? "" : "-qtest-log none");
|
getenv("QTEST_LOG") ? "" : "-qtest-log none");
|
||||||
|
|
||||||
|
@ -226,6 +228,13 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
|
||||||
wordexp(cmd_line->str, &result, 0);
|
wordexp(cmd_line->str, &result, 0);
|
||||||
g_string_free(cmd_line, true);
|
g_string_free(cmd_line, true);
|
||||||
|
|
||||||
|
if (getenv("QTEST_LOG")) {
|
||||||
|
pretty_cmd_line = g_strjoinv(" ", result.we_wordv + 1);
|
||||||
|
printf("Starting %s with Arguments: %s\n",
|
||||||
|
result.we_wordv[0], pretty_cmd_line);
|
||||||
|
g_free(pretty_cmd_line);
|
||||||
|
}
|
||||||
|
|
||||||
qemu_init(result.we_wordc, result.we_wordv, NULL);
|
qemu_init(result.we_wordc, result.we_wordv, NULL);
|
||||||
|
|
||||||
/* re-enable the rcu atfork, which was previously disabled in qemu_init */
|
/* re-enable the rcu atfork, which was previously disabled in qemu_init */
|
||||||
|
|
Loading…
Reference in New Issue