[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 04/18] build-sys: compile with -Og or -O1 whe
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v3 04/18] build-sys: compile with -Og or -O1 when --enable-debug |
Date: |
Thu, 4 Jan 2018 14:17:38 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 01/04/2018 01:05 PM, Marc-André Lureau wrote:
> When --enable-debug is turned on, configure doesn't set -O level, and
> uses default compiler -O0 level, which is slow.
>
> Instead, use -Og if supported by the compiler (optimize debugging
> experience), or -O1 (keeps code somewhat debuggable and works around
> compiler bugs).
>
> Unfortunately, gcc has many false-positive maybe-uninitialized
> errors with Og and O1 (f27 gcc 7.2.1 20170915):
>
> /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c: In function
> ‘ipmi_kcs_ioport_read’:
> /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c:279:12: error: ‘ret’ may be
> used uninitialized in this function [-Werror=maybe-uninitialized]
> return ret;
> ^~~
> cc1: all warnings being treated as errors
> make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ipmi/isa_ipmi_kcs.o] Error
> 1
> make: *** Waiting for unfinished jobs....
> /home/elmarco/src/qemu/hw/ide/ahci.c: In function ‘ahci_populate_sglist’:
> /home/elmarco/src/qemu/hw/ide/ahci.c:903:58: error: ‘tbl_entry_size’ may be
> used uninitialized in this function [-Werror=maybe-uninitialized]
> if ((off_idx == -1) || (off_pos < 0) || (off_pos > tbl_entry_size)) {
> ~~~~~~~~~^~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ide/ahci.o] Error 1
> /home/elmarco/src/qemu/hw/display/qxl.c: In function ‘qxl_add_memslot’:
> /home/elmarco/src/qemu/hw/display/qxl.c:1397:52: error: ‘pci_start’ may be
> used uninitialized in this function [-Werror=maybe-uninitialized]
> memslot.virt_end = virt_start + (guest_end - pci_start);
> ~~~~~~~~~~~~~^~~~~~~~~~~~
> /home/elmarco/src/qemu/hw/display/qxl.c:1389:9: error: ‘pci_region’ may be
> used uninitialized in this function [-Werror=maybe-uninitialized]
> qxl_set_guest_bug(d, "%s: pci_region = %d", __func__, pci_region);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
>
> There seems to be a long list of related bugs in upstream GCC, some of
> them are being fixed very recently:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
>
> For now, let's workaround it by using Wno-maybe-uninitialized (gcc-only).
>
> Suggested-by: Paolo Bonzini <address@hidden>
> Signed-off-by: Marc-André Lureau <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> configure | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index de1f939a28..3953859314 100755
> --- a/configure
> +++ b/configure
> @@ -5160,8 +5160,19 @@ if test "$gcov" = "yes" ; then
> LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
> elif test "$fortify_source" = "yes" ; then
> CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
> -elif test "$debug" = "no"; then
> - CFLAGS="-O2 $CFLAGS"
> +elif test "$debug" = "yes"; then
> + if compile_prog "-Og" ""; then
> + CFLAGS="-Og $CFLAGS"
> + elif compile_prog "-O1" ""; then
> + CFLAGS="-O1 $CFLAGS"
> + fi
> + # Workaround GCC false-positive Wuninitialized bugs with Og or O1:
> + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
> + if cc_has_warning_flag "-Wno-maybe-uninitialized"; then
> + CFLAGS="-Wno-maybe-uninitialized $CFLAGS"
> + fi
> +else
> + CFLAGS="-O2 $CFLAGS"
> fi
>
> ##########################################
>
- [Qemu-devel] [PATCH v3 00/18] Various build-sys and sanitizer related fixes, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 01/18] build-sys: fix qemu-ga -pthread linking, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 02/18] build-sys: silence make by default or V=0, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 03/18] build-sys: add a rule to print a variable, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 04/18] build-sys: compile with -Og or -O1 when --enable-debug, Marc-André Lureau, 2018/01/04
- Re: [Qemu-devel] [PATCH v3 04/18] build-sys: compile with -Og or -O1 when --enable-debug,
Philippe Mathieu-Daudé <=
- [Qemu-devel] [PATCH v3 05/18] tests/docker: add some sanitizers to fedora dockerfile, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 06/18] tests/docker: add test-debug, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 07/18] build-sys: add some sanitizers when --enable-debug if possible, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 08/18] tests: fix check-qobject leak, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 09/18] vl: fix direct firmware directories leak, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 10/18] readline: add a free function, Marc-André Lureau, 2018/01/04
- [Qemu-devel] [PATCH v3 11/18] tests: fix migration-test leak, Marc-André Lureau, 2018/01/04