diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2023-10-03 10:15:49 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2023-10-04 09:52:06 -0400 |
commit | 9afa888ce0f816d0f2cfc95eebe4f49244c518af (patch) | |
tree | b549bb1bc3c3c8dc693dd5c52be2280e94d49305 /include | |
parent | da1034094d375afe9e3d8ec8980550ea0f06f7e0 (diff) | |
download | qemu-9afa888ce0f816d0f2cfc95eebe4f49244c518af.zip qemu-9afa888ce0f816d0f2cfc95eebe4f49244c518af.tar.gz qemu-9afa888ce0f816d0f2cfc95eebe4f49244c518af.tar.bz2 |
osdep: set _FORTIFY_SOURCE=2 when optimization is enabled
Currently we set _FORTIFY_SOURCE=2 as a compiler argument when the
meson 'optimization' setting is non-zero, the compiler is GCC and
the target is Linux.
While the default QEMU optimization level is 2, user could override
this by setting CFLAGS="-O0" or --extra-cflags="-O0" when running
configure and this won't be reflected in the meson 'optimization'
setting. As a result we try to enable _FORTIFY_SOURCE=2 and then the
user gets compile errors as it only works with optimization.
Rather than trying to improve detection in meson, it is simpler to
just check the __OPTIMIZE__ define from osdep.h.
The comment about being incompatible with clang appears to be
outdated, as compilation works fine without excluding clang.
In the coroutine code we must set _FORTIFY_SOURCE=0 to stop the
logic in osdep.h then enabling it.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20231003091549.223020-1-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/qemu/osdep.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 18b940d..475a1c6 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -27,6 +27,10 @@ #ifndef QEMU_OSDEP_H #define QEMU_OSDEP_H +#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ && defined __linux__ +# define _FORTIFY_SOURCE 2 +#endif + #include "config-host.h" #ifdef NEED_CPU_H #include CONFIG_TARGET |