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).

>>
>> 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);
>>                           ^
> 

Reply via email to