On 13.07.21 11:31, Julien Grall wrote: > > > On 13/07/2021 10:27, Juergen Gross wrote: >> On 13.07.21 11:20, Julien Grall wrote: >>> From: Julien Grall >>> >>> Commit 0dbb4be739c5 add the inclusion of xenctrl.h from private.h and >>> wreck the build in an interesting way: >>> >>> In file included from xen/stubdom/include/xen/domctl.h:39:0, >>>                   from xen/tools/include/xenctrl.h:36, >>>                   from private.h:4, >>>                   from minios.c:29: >>> xen/include/public/memory.h:407:5: error: expected >>> specifier-qualifier-list before ‘XEN_GUEST_HANDLE_64’ >>>       XEN_GUEST_HANDLE_64(const_uint8) buffer; >>>       ^~~~~~~~~~~~~~~~~~~ >>> >>> This is happening because xenctrl.h defines __XEN_TOOLS__ and therefore >>> the public headers will start to expose the non-stable ABI. However, >>> xen.h has already been included by a mini-OS header before hand. So >>> there is a mismatch in the way the headers are included. >>> >>> For now solve it in a very simple (and gross) way by including >>> xenctrl.h before the mini-os headers. >>> >>> Fixes: 0dbb4be739c5 ("tools/libs/foreignmemory: Fix PAGE_SIZE >>> redefinition error") >>> Signed-off-by: Julien Grall >>> >>> --- >>> >>> Cc: Andrew Cooper >>> >>> I couldn't find a better way with would not result to revert the patch >>> (and break build on some system) or involve a longer rework of the >>> headers. >> >> Just adding a "#define __XEN_TOOLS__" before the #include statements >> doesn't work? > It works but if someone decides to the rework the header and drop > __XEN_TOOLS__ we would still define in minios.c (we technically don't > need it). So I find the solution a lot worse than what I wrote. Hmm, yes. Juergen