Skip to content
Snippets Groups Projects
  • Daniel P. Berrangé's avatar
    9afa888c
    osdep: set _FORTIFY_SOURCE=2 when optimization is enabled · 9afa888c
    Daniel P. Berrangé authored
    
    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: default avatarDaniel P. Berrangé <berrange@redhat.com>
    Message-id: 20231003091549.223020-1-berrange@redhat.com
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    9afa888c
    History
    osdep: set _FORTIFY_SOURCE=2 when optimization is enabled
    Daniel P. Berrangé authored
    
    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: default avatarDaniel P. Berrangé <berrange@redhat.com>
    Message-id: 20231003091549.223020-1-berrange@redhat.com
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>