[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL v2 2/3] osdep: protect qemu/osdep.h with extern "C"
From: |
Peter Maydell |
Subject: |
Re: [PULL v2 2/3] osdep: protect qemu/osdep.h with extern "C" |
Date: |
Wed, 14 Apr 2021 19:39:49 +0100 |
On Wed, 14 Apr 2021 at 18:26, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Tue, Apr 13, 2021 at 06:08:49PM +0200, Paolo Bonzini wrote:
> > System headers may include templates if compiled with a C++ compiler,
> > which cause the compiler to complain if qemu/osdep.h is included
> > within a C++ source file's 'extern "C"' block. Add
> > an 'extern "C"' block directly to qemu/osdep.h, so that
> > system headers can be kept out of it.
> >
> > There is a stray declaration early in qemu/osdep.h, which needs
> > to be special cased. Add a definition in qemu/compiler.h to
> > make it look nice.
> >
> > config-host.h, CONFIG_TARGET, exec/poison.h and qemu/compiler.h
> > are included outside the 'extern "C"' block; that is not
> > an issue because they consist entirely of preprocessor directives.
> >
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > ---
> > disas/nanomips.cpp | 2 +-
> > include/qemu/compiler.h | 6 ++++++
> > include/qemu/osdep.h | 10 +++++++++-
> > 3 files changed, 16 insertions(+), 2 deletions(-)
> >
> > diff --git a/disas/nanomips.cpp b/disas/nanomips.cpp
> > index 2b09655271..8ddef897f0 100644
> > --- a/disas/nanomips.cpp
> > +++ b/disas/nanomips.cpp
> > @@ -27,8 +27,8 @@
> > * Reference Manual", Revision 01.01, April 27, 2018
> > */
> >
> > -extern "C" {
> > #include "qemu/osdep.h"
> > +extern "C" {
> > #include "disas/dis-asm.h"
> > }
> This and os-posix.h both include other system headers. We don't currently
> have problem, so this is ok as the minimal fix for 6.0, but long term we
> need more work on this header to further narrow the extern {} block.
The other path where we can include system headers inside extern "C"
is that the code above still has dis-asm.h inside the extern C block,
but dis-asm.h includes qemu/bswap.h (midway down the file!) and bswap.h
in turn includes some system headers.
thanks
-- PMM
- [PULL v2 0/3] osdep.h + QOM changes for QEMU 6.0-rc3, Paolo Bonzini, 2021/04/13
- [PULL v2 1/3] osdep: include glib-compat.h before other QEMU headers, Paolo Bonzini, 2021/04/13
- [PULL v2 3/3] qapi/qom.json: Do not use CONFIG_VIRTIO_CRYPTO in common code, Paolo Bonzini, 2021/04/13
- Re: [PULL v2 0/3] osdep.h + QOM changes for QEMU 6.0-rc3, no-reply, 2021/04/13
- Re: [PULL v2 0/3] osdep.h + QOM changes for QEMU 6.0-rc3, Peter Maydell, 2021/04/13
- Re: [PULL v2 0/3] osdep.h + QOM changes for QEMU 6.0-rc3, Peter Maydell, 2021/04/14