From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43743) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VsqRW-000220-Ee for qemu-devel@nongnu.org; Tue, 17 Dec 2013 03:56:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VsqRQ-0002LF-F9 for qemu-devel@nongnu.org; Tue, 17 Dec 2013 03:55:54 -0500 Received: from mail.duskware.de ([91.199.88.144]:56973) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VsqRP-0002Kc-Ub for qemu-devel@nongnu.org; Tue, 17 Dec 2013 03:55:48 -0500 Date: Tue, 17 Dec 2013 09:55:40 +0100 From: Martin Husemann Message-ID: <20131217085540.GA7891@mail.duskware.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="TB36FDmn/VVEgNH/" Content-Disposition: inline Subject: [Qemu-devel] qemu 1.7.0 does not build on NetBSD (patch) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --TB36FDmn/VVEgNH/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 --TB36FDmn/VVEgNH/ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="patch-include_exec_softmmu__template.h" 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 --TB36FDmn/VVEgNH/--