From bc66c233a9a58bdbba2c981e704326c6e244602c Mon Sep 17 00:00:00 2001 From: Blue Swirl Date: Sun, 18 Oct 2009 16:26:06 +0000 Subject: [PATCH] Suppress warnings about 'warn_unused_result' attribute directive Signed-off-by: Blue Swirl --- configure | 20 ++++++++++++++++++++ hw/qdev.h | 2 +- qemu-common.h | 5 +++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/configure b/configure index ca6d45c..7775b1b 100755 --- a/configure +++ b/configure @@ -1667,6 +1667,23 @@ if compile_prog "" "" ; then fi ########################################## +# check if the compiler understands attribute warn_unused_result +# +# This could be smarter, but gcc -Werror does not error out even when warning +# about attribute warn_unused_result + +gcc_attribute_warn_unused_result=no +cat > $TMPC << EOF +#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4) +#error gcc 3.3 or older +#endif +int main(void) { return 0;} +EOF +if compile_prog "" ""; then + gcc_attribute_warn_unused_result=yes +fi + +########################################## # check if we have fdatasync fdatasync=no @@ -1994,6 +2011,9 @@ fi if test "$need_offsetof" = "yes" ; then echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak fi +if test "$gcc_attribute_warn_unused_result" = "yes" ; then + echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak +fi if test "$fdatasync" = "yes" ; then echo "CONFIG_FDATASYNC=y" >> $config_host_mak fi diff --git a/hw/qdev.h b/hw/qdev.h index 8cd843e..6d61b3a 100644 --- a/hw/qdev.h +++ b/hw/qdev.h @@ -100,7 +100,7 @@ struct CompatProperty { DeviceState *qdev_create(BusState *bus, const char *name); DeviceState *qdev_device_add(QemuOpts *opts); -int qdev_init(DeviceState *dev) __attribute__((warn_unused_result)); +int qdev_init(DeviceState *dev) QEMU_WARN_UNUSED_RESULT; void qdev_init_nofail(DeviceState *dev); int qdev_unplug(DeviceState *dev); void qdev_free(DeviceState *dev); diff --git a/qemu-common.h b/qemu-common.h index 8551862..47272f5 100644 --- a/qemu-common.h +++ b/qemu-common.h @@ -3,6 +3,11 @@ #define QEMU_COMMON_H #define QEMU_NORETURN __attribute__ ((__noreturn__)) +#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT +#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +#define QEMU_WARN_UNUSED_RESULT +#endif /* Hack around the mess dyngen-exec.h causes: We need QEMU_NORETURN in files that cannot include the following headers without conflicts. This condition has -- 2.7.4