Browse Source

compiler: use weak aliases to provide default definitions

This is simpler and more portable.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
stable-1.3
Paolo Bonzini 14 years ago
parent
commit
67d223be90
  1. 2
      arch_init.h
  2. 11
      compiler.h
  3. 3
      qmp.c

2
arch_init.h

@ -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

11
compiler.h

@ -50,16 +50,13 @@
# 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 */

3
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)
{

Loading…
Cancel
Save