All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Husemann <martin@NetBSD.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] qemu 1.7.0 does not build on NetBSD (patch)
Date: Tue, 17 Dec 2013 09:55:40 +0100	[thread overview]
Message-ID: <20131217085540.GA7891@mail.duskware.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 345 bytes --]

On NetBSD int8_t and friends are preprocessor macros expanding to __int8_t
(which is a typedef provided by machine dependent headers).

include/exec/softmmu_template.h tries to safe 3 lines of code by using 
preprosseor concatenation, which only will work if int8_t is not a define,
or defined to int8_t.

The attached patch fixes this.

Martin

[-- Attachment #2: patch-include_exec_softmmu__template.h --]
[-- Type: text/plain, Size: 1170 bytes --]

Do not rely on int8_t (and friends) not being preprocessor symbols (or
symbols expanding to themselves). On NetBSD (for example) the
glue(u, SDATA_TYPE) results in u__int8_t, which is undefined. There is no
way to stop cpp expanding inner macros, so just add the few lines explicitly
and get rid of the magic.

--- include/exec/softmmu_template.h.orig	2013-11-27 23:15:55.000000000 +0100
+++ include/exec/softmmu_template.h	2013-12-16 20:57:50.000000000 +0100
@@ -30,23 +30,26 @@
 #define SUFFIX q
 #define LSUFFIX q
 #define SDATA_TYPE  int64_t
+#define DATA_TYPE  uint64_t
 #elif DATA_SIZE == 4
 #define SUFFIX l
 #define LSUFFIX l
 #define SDATA_TYPE  int32_t
+#define DATA_TYPE  uint32_t
 #elif DATA_SIZE == 2
 #define SUFFIX w
 #define LSUFFIX uw
 #define SDATA_TYPE  int16_t
+#define DATA_TYPE  uint16_t
 #elif DATA_SIZE == 1
 #define SUFFIX b
 #define LSUFFIX ub
 #define SDATA_TYPE  int8_t
+#define DATA_TYPE  uint8_t
 #else
 #error unsupported data size
 #endif
 
-#define DATA_TYPE   glue(u, SDATA_TYPE)
 
 /* For the benefit of TCG generated code, we want to avoid the complication
    of ABI-specific return type promotion and always return a value extended

             reply	other threads:[~2013-12-17  8:56 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-17  8:55 Martin Husemann [this message]
2013-12-17 10:15 ` [Qemu-devel] qemu 1.7.0 does not build on NetBSD (patch) Paolo Bonzini
2014-01-15 12:33   ` Paolo Bonzini
2014-01-18 13:47     ` [Qemu-devel] [PATCH v2] qemu 1.7.0 does not build on NetBSD Martin Husemann
2014-01-18 13:59       ` Peter Maydell
2014-01-21 15:38         ` Richard Henderson
2014-01-21 15:42       ` [Qemu-trivial] " Andreas Färber
2014-01-21 15:42         ` Andreas Färber
2014-01-21 18:11       ` [Qemu-trivial] " Michael Tokarev
2014-01-21 18:11         ` Michael Tokarev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131217085540.GA7891@mail.duskware.de \
    --to=martin@netbsd.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.