mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-17 21:26:13 -07:00
compiler: support Darwin weak references
Weakrefs only tell you if the symbol was defined elsewhere, so you need a further check at runtime to pick the default definition when needed. This could be automated by the compiler, but it does not do it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
2a0dfd004d
commit
1f001dc7bc
5 changed files with 71 additions and 48 deletions
|
|
@ -50,8 +50,15 @@
|
|||
# define __printf__ __gnu_printf__
|
||||
# endif
|
||||
# endif
|
||||
# define QEMU_WEAK_ALIAS(newname, oldname) \
|
||||
# if defined(__APPLE__)
|
||||
# define QEMU_WEAK_ALIAS(newname, oldname) \
|
||||
static typeof(oldname) weak_##newname __attribute__((unused, weakref(#oldname)))
|
||||
# define QEMU_WEAK_REF(newname, oldname) (weak_##newname ? weak_##newname : oldname)
|
||||
# else
|
||||
# define QEMU_WEAK_ALIAS(newname, oldname) \
|
||||
typeof(oldname) newname __attribute__((weak, alias (#oldname)))
|
||||
# define QEMU_WEAK_REF(newname, oldname) newname
|
||||
# endif
|
||||
#else
|
||||
#define GCC_ATTR /**/
|
||||
#define GCC_FMT_ATTR(n, m)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue