On 200103 1115, Stefan Hajnoczi wrote: > On Fri, Nov 29, 2019 at 09:34:47PM +0000, Oleinik, Alexander wrote: > > +QTestState *qtest_inproc_init(QTestState **s, bool log, const char* arch, > > + void (*send)(void*, const char*)) > > +{ > > + QTestState *qts; > > + qts = g_new0(QTestState, 1); > > + *s = qts; /* Expose qts early on, since the query endianness relies on > > it */ > > + qts->wstatus = 0; > > + for (int i = 0; i < MAX_IRQ; i++) { > > + qts->irq_level[i] = false; > > + } > > + > > + qtest_client_set_rx_handler(qts, qtest_client_inproc_recv_line); > > + > > + /* send() may not have a matching protoype, so use a type-safe wrapper > > */ > > + qts->ops.external_send = send; > > + qtest_client_set_tx_handler(qts, send_wrapper); > > + > > + qts->big_endian = qtest_query_target_endianness(qts); > > + gchar *bin_path = g_strconcat("/qemu-system-", arch, NULL); > > + setenv("QTEST_QEMU_BINARY", bin_path, 0); > > + g_free(bin_path); > > Is this a dummy path that is needed to make other code happy? Or does > the user need to have an actual file at /qemu-system-ARCH?
Yes - with the inproc mode this is only needed to make qtest_get_arch happy, which simply returns the suffix of the env variable. Standard qtest initialization relies on it in qtest_init_without_qmp_handshake, but that function is not used by the fuzzer.