lockable: Do not cast function pointers
-fsanitize=undefined complains if function pointers are casted. It also prevents enabling the strict mode of CFI which is currently disabled with -fsanitize-cfi-icall-generalize-pointers. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2345 Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20240524-xkb-v4-2-2de564e5c859@daynix.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
2523baf7fb
commit
a3b3ad72e8
@ -43,6 +43,21 @@ qemu_null_lockable(void *x)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define QML_FUNC_(name) \
|
||||||
|
static inline void qemu_lockable_ ## name ## _lock(void *x) \
|
||||||
|
{ \
|
||||||
|
qemu_ ## name ## _lock(x); \
|
||||||
|
} \
|
||||||
|
static inline void qemu_lockable_ ## name ## _unlock(void *x) \
|
||||||
|
{ \
|
||||||
|
qemu_ ## name ## _unlock(x); \
|
||||||
|
}
|
||||||
|
|
||||||
|
QML_FUNC_(mutex)
|
||||||
|
QML_FUNC_(rec_mutex)
|
||||||
|
QML_FUNC_(co_mutex)
|
||||||
|
QML_FUNC_(spin)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In C, compound literals have the lifetime of an automatic variable.
|
* In C, compound literals have the lifetime of an automatic variable.
|
||||||
* In C++ it would be different, but then C++ wouldn't need QemuLockable
|
* In C++ it would be different, but then C++ wouldn't need QemuLockable
|
||||||
@ -50,8 +65,8 @@ qemu_null_lockable(void *x)
|
|||||||
*/
|
*/
|
||||||
#define QML_OBJ_(x, name) (&(QemuLockable) { \
|
#define QML_OBJ_(x, name) (&(QemuLockable) { \
|
||||||
.object = (x), \
|
.object = (x), \
|
||||||
.lock = (QemuLockUnlockFunc *) qemu_ ## name ## _lock, \
|
.lock = qemu_lockable_ ## name ## _lock, \
|
||||||
.unlock = (QemuLockUnlockFunc *) qemu_ ## name ## _unlock \
|
.unlock = qemu_lockable_ ## name ## _unlock \
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user