]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/xen.git/commitdiff
tools: Do not expose all builds to unstable hypercall APIs by default
authorIan Campbell <ian.campbell@citrix.com>
Wed, 3 Feb 2016 16:10:49 +0000 (16:10 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 4 Feb 2016 15:20:40 +0000 (15:20 +0000)
Currently __XEN_TOOLS__ is defined in the global CFLAGS used for tools
builds, exposing them all to the various unstable hypercall interfaces.

However there are places where we do not want this (in particular all
the stable libraries now under tools/libs), and there is a risk of
such uses slipping in unnoticed (currently there are none, but I
tripped over the mixed nature of the HVMOPs just now in some new code
I was putting together).

Instead only define __XEN_TOOLS__ for things which explicitly want the
unstable APIs. The vast majority of these are consumers of libxenctrl,
which have opted into unstable interfaces by using libxenctrl already,
so adding -D__XEN_TOOLS__ to CFLAGS_libxenctrl covers these without
needing to patch the dozen or so tools manually.

The libxc build itself, which doesn't use CFLAGS_libxenctrl, now needs
the define too. As does gdbsx's own low level hypercall binding
library xg.

hvmloader no longer needs to undefine the symbol.

The ocaml evtchn bindings don't actually need sysctl.h and therefore
don't actually need __XEN_TOOLS__ either.

qemu-xen-traditional doesn't use CFLAGS_libxenctrl and so we pass the
define there (via --extra-cflags) too.

Having removed __XEN_TOOLS__ replace it with
__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ so that in
tree code is always using the latest APIs.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
tools/Makefile
tools/Rules.mk
tools/debugger/gdbsx/xg/Makefile
tools/firmware/hvmloader/Makefile
tools/libxc/Makefile
tools/ocaml/libs/eventchn/xeneventchn_stubs.c

index 3d3fd603e5d2270dcc179497fd342d21bbee563d..cb8652c79610433c65d4763b20e42fafd3efab0b 100644 (file)
@@ -194,7 +194,7 @@ qemu-traditional-recurse = \
 subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
        $(call qemu-traditional-recurse,\
                $(QEMU_ROOT)/xen-setup \
-               --extra-cflags="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
+               --extra-cflags="-D__XEN_TOOLS__ $(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
                $(IOEMU_EXTRA_LDFLAGS) \
                --cpu=$(IOEMU_CPU_ARCH) \
                $(IOEMU_CONFIGURE_CROSS); \
index d47fa45198a7ec4788b8549b9cac73958bd23d22..9ef0b478f1f7b77eeed89dfd849d3f04792008d7 100644 (file)
@@ -108,7 +108,9 @@ CFLAGS_libxenforeignmemory = -I$(XEN_LIBXENFOREIGNMEMORY)/include $(CFLAGS_xenin
 LDLIBS_libxenforeignmemory = $(XEN_LIBXENFOREIGNMEMORY)/libxenforeignmemory$(libextension)
 SHLIB_libxenforeignmemory  = -Wl,-rpath-link=$(XEN_LIBXENFOREIGNMEMORY)
 
-CFLAGS_libxenctrl = -I$(XEN_LIBXC)/include $(CFLAGS_libxentoollog) $(CFLAGS_libxenforeignmemory) $(CFLAGS_xeninclude)
+# code which compiles against libxenctrl get __XEN_TOOLS__ and
+# therefore sees the unstable hypercall interfaces.
+CFLAGS_libxenctrl = -I$(XEN_LIBXC)/include $(CFLAGS_libxentoollog) $(CFLAGS_libxenforeignmemory) $(CFLAGS_xeninclude) -D__XEN_TOOLS__
 SHDEPS_libxenctrl = $(SHLIB_libxentoollog) $(SHLIB_libxenevtchn) $(SHLIB_libxengnttab) $(SHLIB_libxengntshr) $(SHLIB_libxencall) $(SHLIB_libxenforeignmemory)
 LDLIBS_libxenctrl = $(SHDEPS_libxenctrl) $(XEN_LIBXC)/libxenctrl$(libextension)
 SHLIB_libxenctrl  = $(SHDEPS_libxenctrl) -Wl,-rpath-link=$(XEN_LIBXC)
@@ -159,7 +161,7 @@ SHDEPS_libxenlight = $(SHLIB_libxenctrl) $(SHLIB_libxenstore) $(SHLIB_libblktapc
 LDLIBS_libxenlight = $(SHDEPS_libxenlight) $(XEN_XENLIGHT)/libxenlight$(libextension)
 SHLIB_libxenlight  = $(SHDEPS_libxenlight) -Wl,-rpath-link=$(XEN_XENLIGHT)
 
-CFLAGS += -D__XEN_TOOLS__
+CFLAGS += -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
 
 # Get gcc to generate the dependencies for us.
 CFLAGS += -MMD -MF .$(if $(filter-out .,$(@D)),$(subst /,@,$(@D))@)$(@F).d
index 78b4021ce9b02eb6eaba4fdf6f052751770cfad7..6a8937b8f9f7e7b353b8066a834412d79e268009 100644 (file)
@@ -4,6 +4,7 @@ include ../Rules.mk
 XG_HDRS := xg_public.h 
 XG_OBJS := xg_main.o 
 
+CFLAGS += -D__XEN_TOOLS__
 CFLAGS += $(CFLAGS_xeninclude)
 
 
index 0560a7b59a8c68edef0f15d12987053c6337c6e0..f2f4791055063067b7ffa743521ec2cac9d42276 100644 (file)
@@ -31,7 +31,7 @@ SMBIOS_REL_DATE ?= $(shell date +%m/%d/%Y)
 CFLAGS += $(CFLAGS_xeninclude)
 
 # We mustn't use tools-only public interfaces.
-CFLAGS += -U__XEN_TOOLS__ -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
+CFLAGS += -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
 
 OBJS  = hvmloader.o mp_tables.o util.o smbios.o 
 OBJS += smp.o cacheattr.o xenbus.o vnuma.o
index ca8bab7233cd92b58a42ef61bb266dc9e2af8656..0a8614c9528144c98bf5b75e2917de25d740cc04 100644 (file)
@@ -105,6 +105,7 @@ endif
 
 CFLAGS   += -Werror -Wmissing-prototypes
 CFLAGS   += -I. -I./include $(CFLAGS_xeninclude)
+CFLAGS   += -D__XEN_TOOLS__
 
 # Needed for posix_fadvise64() in xc_linux.c
 CFLAGS-$(CONFIG_Linux) += -D_GNU_SOURCE
index b711fd8bbd342bdba9d2ef08edf9efb373dc8a10..45a385dedf2f7cc96f7e79841e271040c74c9329 100644 (file)
@@ -21,7 +21,6 @@
 #include <errno.h>
 #include <stdint.h>
 #include <sys/ioctl.h>
-#include <xen/sysctl.h>
 #include <xen/xen.h>
 #include <xen/sys/evtchn.h>
 #include <xenevtchn.h>