Message ID | 20240524-xkb-v4-2-2de564e5c859@daynix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix sanitizer errors with clang 18.1.1 | expand |
On 24/5/24 07:35, Akihiko Odaki wrote: > -fsanitize=undefined complains if function pointers are casted. It > also prevents enabling teh 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> > --- > include/qemu/lockable.h | 23 +++++++++++++++++++---- > 1 file changed, 19 insertions(+), 4 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 27/5/24 11:57, Philippe Mathieu-Daudé wrote: > On 24/5/24 07:35, Akihiko Odaki wrote: >> -fsanitize=undefined complains if function pointers are casted. It >> also prevents enabling teh strict mode of CFI which is currently s/teh/the/ (also next patch) >> 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> >> --- >> include/qemu/lockable.h | 23 +++++++++++++++++++---- >> 1 file changed, 19 insertions(+), 4 deletions(-) > > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> >
diff --git a/include/qemu/lockable.h b/include/qemu/lockable.h index 9823220446d9..c1b097c44879 100644 --- a/include/qemu/lockable.h +++ b/include/qemu/lockable.h @@ -43,15 +43,30 @@ qemu_null_lockable(void *x) 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++ it would be different, but then C++ wouldn't need QemuLockable * either... */ -#define QML_OBJ_(x, name) (&(QemuLockable) { \ - .object = (x), \ - .lock = (QemuLockUnlockFunc *) qemu_ ## name ## _lock, \ - .unlock = (QemuLockUnlockFunc *) qemu_ ## name ## _unlock \ +#define QML_OBJ_(x, name) (&(QemuLockable) { \ + .object = (x), \ + .lock = qemu_lockable_ ## name ## _lock, \ + .unlock = qemu_lockable_ ## name ## _unlock \ }) /**
-fsanitize=undefined complains if function pointers are casted. It also prevents enabling teh 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> --- include/qemu/lockable.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-)