diff mbox

[for-2.0] vl.c: Fix OpenBSD compilation issue due to namespace collisions

Message ID 1395149962-31793-1-git-send-email-marcel.a@redhat.com
State New
Headers show

Commit Message

Marcel Apfelbaum March 18, 2014, 1:39 p.m. UTC
Machine rewriting added MACHINE macro which is
already in use by other OpenBSD library.
Since qemu/sockets.h exposes the OpenBSD namespace,
the minimalistic approach is to add it as the first QEMU include.

Reported-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
---
 vl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Peter Maydell March 18, 2014, 1:57 p.m. UTC | #1
On 18 March 2014 13:39, Marcel Apfelbaum <marcel.a@redhat.com> wrote:
> Machine rewriting added MACHINE macro which is
> already in use by other OpenBSD library.
> Since qemu/sockets.h exposes the OpenBSD namespace,
> the minimalistic approach is to add it as the first QEMU include.
>
> Reported-by: Brad Smith <brad@comstyle.com>
> Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
> ---
>  vl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/vl.c b/vl.c
> index f0fe48b..9f86e68 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -58,6 +58,7 @@ int main(int argc, char **argv)
>
>  #include <glib.h>
>
> +#include "qemu/sockets.h"
>  #include "hw/hw.h"
>  #include "hw/boards.h"
>  #include "hw/usb.h"
> @@ -103,7 +104,6 @@ int main(int argc, char **argv)
>
>  #include "disas/disas.h"
>
> -#include "qemu/sockets.h"
>
>  #include "slirp/libslirp.h"

I'm confused; why doesn't this just result in a compiler
error in the other direction when we try to #define
MACHINE in QEMU and it's already been defined by
the BSD headers?

thanks
-- PMM
Marcel Apfelbaum March 18, 2014, 2:05 p.m. UTC | #2
On Tue, 2014-03-18 at 13:57 +0000, Peter Maydell wrote:
> On 18 March 2014 13:39, Marcel Apfelbaum <marcel.a@redhat.com> wrote:
> > Machine rewriting added MACHINE macro which is
> > already in use by other OpenBSD library.
> > Since qemu/sockets.h exposes the OpenBSD namespace,
> > the minimalistic approach is to add it as the first QEMU include.
> >
> > Reported-by: Brad Smith <brad@comstyle.com>
> > Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
> > ---
> >  vl.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/vl.c b/vl.c
> > index f0fe48b..9f86e68 100644
> > --- a/vl.c
> > +++ b/vl.c
> > @@ -58,6 +58,7 @@ int main(int argc, char **argv)
> >
> >  #include <glib.h>
> >
> > +#include "qemu/sockets.h"
> >  #include "hw/hw.h"
> >  #include "hw/boards.h"
> >  #include "hw/usb.h"
> > @@ -103,7 +104,6 @@ int main(int argc, char **argv)
> >
> >  #include "disas/disas.h"
> >
> > -#include "qemu/sockets.h"
> >
> >  #include "slirp/libslirp.h"
> 
> I'm confused; why doesn't this just result in a compiler
> error in the other direction when we try to #define
> MACHINE in QEMU and it's already been defined by
> the BSD headers?
Maybe because there is usage of the "MACHINE" define by the BSD
library? (on Qemu context, of course! - meaning, it shouldn't even be
exposed in the first place!)

Thanks,
Marcel

> 
> thanks
> -- PMM
Marcel Apfelbaum March 18, 2014, 2:27 p.m. UTC | #3
On Tue, 2014-03-18 at 16:05 +0200, Marcel Apfelbaum wrote:
> On Tue, 2014-03-18 at 13:57 +0000, Peter Maydell wrote:
> > On 18 March 2014 13:39, Marcel Apfelbaum <marcel.a@redhat.com> wrote:
> > > Machine rewriting added MACHINE macro which is
> > > already in use by other OpenBSD library.
> > > Since qemu/sockets.h exposes the OpenBSD namespace,
> > > the minimalistic approach is to add it as the first QEMU include.
> > >
> > > Reported-by: Brad Smith <brad@comstyle.com>
> > > Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
> > > ---
> > >  vl.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/vl.c b/vl.c
> > > index f0fe48b..9f86e68 100644
> > > --- a/vl.c
> > > +++ b/vl.c
> > > @@ -58,6 +58,7 @@ int main(int argc, char **argv)
> > >
> > >  #include <glib.h>
> > >
> > > +#include "qemu/sockets.h"
> > >  #include "hw/hw.h"
> > >  #include "hw/boards.h"
> > >  #include "hw/usb.h"
> > > @@ -103,7 +104,6 @@ int main(int argc, char **argv)
> > >
> > >  #include "disas/disas.h"
> > >
> > > -#include "qemu/sockets.h"
> > >
> > >  #include "slirp/libslirp.h"
> > 
> > I'm confused; why doesn't this just result in a compiler
> > error in the other direction when we try to #define
> > MACHINE in QEMU and it's already been defined by
> > the BSD headers?
> Maybe because there is usage of the "MACHINE" define by the BSD
> library? (on Qemu context, of course! - meaning, it shouldn't even be
> exposed in the first place!)
I meant "there is *no* usage of the..."

> 
> Thanks,
> Marcel
> 
> > 
> > thanks
> > -- PMM
> 
>
Peter Maydell March 18, 2014, 2:28 p.m. UTC | #4
On 18 March 2014 14:27, Marcel Apfelbaum <marcel.a@redhat.com> wrote:
> On Tue, 2014-03-18 at 16:05 +0200, Marcel Apfelbaum wrote:
>> On Tue, 2014-03-18 at 13:57 +0000, Peter Maydell wrote:
>> > I'm confused; why doesn't this just result in a compiler
>> > error in the other direction when we try to #define
>> > MACHINE in QEMU and it's already been defined by
>> > the BSD headers?
>> Maybe because there is usage of the "MACHINE" define by the BSD
>> library? (on Qemu context, of course! - meaning, it shouldn't even be
>> exposed in the first place!)
> I meant "there is *no* usage of the..."

But we'll still see
#define MACHINE something
and then later
#define MACHINE something-else

right? The compiler ought to complain about that, at point
of the second #define; use or otherwise of the macro isn't
relevant here.

thanks
-- PMM
Marcel Apfelbaum March 18, 2014, 2:42 p.m. UTC | #5
On Tue, 2014-03-18 at 14:28 +0000, Peter Maydell wrote:
> On 18 March 2014 14:27, Marcel Apfelbaum <marcel.a@redhat.com> wrote:
> > On Tue, 2014-03-18 at 16:05 +0200, Marcel Apfelbaum wrote:
> >> On Tue, 2014-03-18 at 13:57 +0000, Peter Maydell wrote:
> >> > I'm confused; why doesn't this just result in a compiler
> >> > error in the other direction when we try to #define
> >> > MACHINE in QEMU and it's already been defined by
> >> > the BSD headers?
> >> Maybe because there is usage of the "MACHINE" define by the BSD
> >> library? (on Qemu context, of course! - meaning, it shouldn't even be
> >> exposed in the first place!)
> > I meant "there is *no* usage of the..."
> 
> But we'll still see
> #define MACHINE something
> and then later
> #define MACHINE something-else
> 
> right? The compiler ought to complain about that, at point
> of the second #define; use or otherwise of the macro isn't
> relevant here.
Right! Sorry.
As Andreas said in IRC, BSDs do not build with -Werror

> 
> thanks
> -- PMM
>
diff mbox

Patch

diff --git a/vl.c b/vl.c
index f0fe48b..9f86e68 100644
--- a/vl.c
+++ b/vl.c
@@ -58,6 +58,7 @@  int main(int argc, char **argv)
 
 #include <glib.h>
 
+#include "qemu/sockets.h"
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "hw/usb.h"
@@ -103,7 +104,6 @@  int main(int argc, char **argv)
 
 #include "disas/disas.h"
 
-#include "qemu/sockets.h"
 
 #include "slirp/libslirp.h"