]> git.proxmox.com Git - qemu.git/commitdiff
compiler: use weak aliases to provide default definitions
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 29 Oct 2012 14:11:30 +0000 (15:11 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 30 Oct 2012 08:18:43 +0000 (09:18 +0100)
This is simpler and more portable.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch_init.h
compiler.h
qmp.c

index d9c572aee860358fcdbddb89d7686821c38893e8..5fc780c63d08058dab041dc4030c1d038cebebaf 100644 (file)
@@ -34,6 +34,6 @@ int tcg_available(void);
 int kvm_available(void);
 int xen_available(void);
 
-CpuDefinitionInfoList GCC_WEAK_DECL *arch_query_cpu_definitions(Error **errp);
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp);
 
 #endif
index c734a71c67ac1a65d3ec45ccaceb6624226a5b68..58865d65e8126a431cd3a2980b6337c107f5b692 100644 (file)
 #   define __printf__ __gnu_printf__
 #  endif
 # endif
-#if defined(_WIN32)
-#define GCC_WEAK __attribute__((weak))
-#define GCC_WEAK_DECL GCC_WEAK
-#else
-#define GCC_WEAK __attribute__((weak))
-#define GCC_WEAK_DECL
-#endif
+# define QEMU_WEAK_ALIAS(newname, oldname) \
+        typeof(oldname) newname __attribute__((weak, alias (#oldname)))
 #else
 #define GCC_ATTR /**/
 #define GCC_FMT_ATTR(n, m)
+#define QEMU_WEAK_ALIAS(newname, oldname) \
+        _Pragma("weak " #newname "=" #oldname)
 #endif
 
 #endif /* COMPILER_H */
diff --git a/qmp.c b/qmp.c
index 31bc3bfdd161e70a5797b5ec43ff496e5ace5c04..df952b60bca477cf825445338f5f084f0096f195 100644 (file)
--- a/qmp.c
+++ b/qmp.c
@@ -466,11 +466,12 @@ DevicePropertyInfoList *qmp_device_list_properties(const char *typename,
     return prop_list;
 }
 
-CpuDefinitionInfoList GCC_WEAK *arch_query_cpu_definitions(Error **errp)
+static CpuDefinitionInfoList *default_arch_query_cpu_definitions(Error **errp)
 {
     error_set(errp, QERR_NOT_SUPPORTED);
     return NULL;
 }
+QEMU_WEAK_ALIAS(arch_query_cpu_definitions, default_arch_query_cpu_definitions);
 
 CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp)
 {