Eduardo Habkost <ehabk...@redhat.com> writes: > On Wed, Aug 07, 2019 at 08:05:50PM +0200, Philippe Mathieu-Daudé wrote: >> On 8/7/19 7:57 PM, Eduardo Habkost wrote: >> > On Wed, Aug 07, 2019 at 07:26:56PM +0200, Philippe Mathieu-Daudé wrote: >> >> On 8/6/19 5:14 PM, Markus Armbruster wrote: >> >>> hw/boards.h pulls in almost 60 headers. The less we include it into >> >>> headers, the better. As a first step, drop superfluous inclusions, >> >>> and downgrade some more to what's actually needed. Gets rid of just >> >>> one inclusion into a header. >> >>> >> >>> Cc: Eduardo Habkost <ehabk...@redhat.com> >> >>> Cc: Marcel Apfelbaum <marcel.apfelb...@gmail.com> >> >>> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> >>> --- >> > [...] >> >>> diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c >> >>> index bcacdd1d8f..34a9f6f7a9 100644 >> >>> --- a/target/i386/hax-all.c >> >>> +++ b/target/i386/hax-all.c >> >>> @@ -33,7 +33,6 @@ >> >>> #include "sysemu/reset.h" >> >>> #include "sysemu/sysemu.h" >> >>> #include "qemu/main-loop.h" >> >>> -#include "hw/boards.h" >> >>> >> >>> #define DEBUG_HAX 0 >> >> >> >> include/sysemu/hax.h misses to include "hw/boards.h": >> > >> > I don't understand. I don't see any reason for the sysemu/hax.h >> > header to include hw/boards.h. >> >> Ah, you are right, the AccelClass is defined in include/sysemu/accel.h: >> >> typedef struct AccelClass { >> /*< private >*/ >> ObjectClass parent_class; >> /*< public >*/ >> >> const char *name; >> int (*init_machine)(MachineState *ms); >> ... >> >> So this is where "hw/boards.h" has to be included (it is where >> MachineState is defined). > > As far as I can see, accel.h doesn't need the full MachineState > struct definition and doesn't need boards.h. It just needs the > MachineState typedef, which is defined at typedefs.h. > > hax-all.c, on the other hand, needs the full MachineState struct > definition and is expected to include hw/boards.h.
Yes, and I'll fix it. Thanks! >> >> target/i386/hax-all.c: In function 'hax_accel_init': >> >> target/i386/hax-all.c:354:26: error: dereferencing pointer to incomplete >> >> type 'MachineState {aka struct MachineState}' >> >> int ret = hax_init(ms->ram_size);