[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xen: Don't use -nostdinc flags with CLANG

On 02/13/2014 11:24 AM, Tim Deegan wrote:
George: ping.

At 15:33 +0100 on 11 Feb (1392129226), Tim Deegan wrote:
At 14:24 +0000 on 11 Feb (1392125052), Julien Grall wrote:
If it's possible I'd like this patch goes in Xen 4.4 to fix build with
official version of clang (until 3.4).

Clang 3.5 is still under development, so I don't think it's important to
have support for it in Xen 4.4.
Fair enough.  In that case it needs a release ack from George.  It:
  - fixes a compile issue on some version s of clang;
  - might cause a regression with other compilers, but the regression
    is likely to be obvious (i.e. a compile-time failure).

So the main risk would be if stgarg.h contained something like the "__GNUC_PREREQ__(4, 5)" #ifdef-ery that we missed. Without this patch, we know it doesn't compile on the latest version of clang. I think that's probably worse than the risk of potentially not compiling on some compiler that doesn't end up being tested before the release:

Release-acked-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx>

And it needs an ack from Keir, for changing common code.

v2 is below, removing "-iwithprefix".  I've kept your tested-by; hope
that's OK.



commit 1d62fcb9ad8d2b409ac2cf0e8a3824e19ca3313f
Author: Tim Deegan <tim@xxxxxxx>
Date:   Tue Feb 11 12:44:09 2014 +0000

     xen: stop trying to use the system <stdarg.h> and <stdbool.h>
We already have our own versions of the stdarg/stdbool definitions, for
     systems where those headers are installed in /usr/include.
On linux, they're typically installed in compiler-specific paths, but
     finding them has proved unreliable.  Drop that and use our own versions
Signed-off-by: Tim Deegan <tim@xxxxxxx>
     Tested-by: Julien Grall <julien.grall@xxxxxxxxxx>

diff --git a/xen/Rules.mk b/xen/Rules.mk
index df1428f..3a6cec5 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -44,10 +44,7 @@ ALL_OBJS-$(x86)          += $(BASEDIR)/crypto/built_in.o
  CFLAGS += -fno-builtin -fno-common
  CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
  CFLAGS += -pipe -g -D__XEN__ -include $(BASEDIR)/include/xen/config.h
-# Solaris puts stdarg.h &c in the system include directory.
-ifneq ($(XEN_OS),SunOS)
-CFLAGS += -nostdinc -iwithprefix include
+CFLAGS += -nostdinc
diff --git a/xen/include/xen/stdarg.h b/xen/include/xen/stdarg.h
index d1b2540..0283f06 100644
--- a/xen/include/xen/stdarg.h
+++ b/xen/include/xen/stdarg.h
@@ -1,23 +1,21 @@
  #ifndef __XEN_STDARG_H__
  #define __XEN_STDARG_H__
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)
-   typedef __builtin_va_list va_list;
-#  ifdef __GNUC__
-#    define __GNUC_PREREQ__(x, y)                                       \
-        ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||                  \
-         (__GNUC__ > (x)))
-#  else
-#    define __GNUC_PREREQ__(x, y)   0
-#  endif
-#  if !__GNUC_PREREQ__(4, 5)
-#    define __builtin_va_start(ap, last)    __builtin_stdarg_start((ap), 
-#  endif
-#  define va_start(ap, last)    __builtin_va_start((ap), (last))
-#  define va_end(ap)            __builtin_va_end(ap)
-#  define va_arg                __builtin_va_arg
+#ifdef __GNUC__
+#  define __GNUC_PREREQ__(x, y)                                       \
+      ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||                  \
+       (__GNUC__ > (x)))
-#  include <stdarg.h>
+#  define __GNUC_PREREQ__(x, y)   0
+#if !__GNUC_PREREQ__(4, 5)
+#  define __builtin_va_start(ap, last)    __builtin_stdarg_start((ap), (last))
+typedef __builtin_va_list va_list;
+#define va_start(ap, last)    __builtin_va_start((ap), (last))
+#define va_end(ap)            __builtin_va_end(ap)
+#define va_arg                __builtin_va_arg
  #endif /* __XEN_STDARG_H__ */
diff --git a/xen/include/xen/stdbool.h b/xen/include/xen/stdbool.h
index f0faedf..b0947a6 100644
--- a/xen/include/xen/stdbool.h
+++ b/xen/include/xen/stdbool.h
@@ -1,13 +1,9 @@
  #ifndef __XEN_STDBOOL_H__
  #define __XEN_STDBOOL_H__
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)
-#  define bool _Bool
-#  define true 1
-#  define false 0
-#  define __bool_true_false_are_defined   1
-#  include <stdbool.h>
+#define bool _Bool
+#define true 1
+#define false 0
+#define __bool_true_false_are_defined   1
#endif /* __XEN_STDBOOL_H__ */

Xen-devel mailing list

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.