[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/52] build-sys: compile with -Og or -O1 when --enab
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 12/52] build-sys: compile with -Og or -O1 when --enable-debug |
Date: |
Fri, 12 Jan 2018 12:30:36 +0100 |
From: Marc-André Lureau <address@hidden>
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>
Message-Id: <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
configure | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index ac392d2..6f1b7cd 100755
--- a/configure
+++ b/configure
@@ -5194,8 +5194,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
##########################################
--
1.8.3.1
- [Qemu-devel] [PULL 01/52] scsi-generic: Add share-rw option, (continued)
- [Qemu-devel] [PULL 01/52] scsi-generic: Add share-rw option, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 06/52] chardev: use backend chr context when watch for fe, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 02/52] scsi: fix scsi_convert_sense crash when in_buf == NULL && in_len == 0, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 03/52] pc: fail memory hot-plug/unplug with -no-acpi and Q35 machine type, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 04/52] hpet: recover timer offset correctly, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 05/52] i386/cpu/kvm: look at PMU's CPUID before setting MSRs, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 07/52] chardev: let g_idle_add() be with chardev gcontext, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 08/52] chardev: introduce qemu_chr_timeout_add_ms(), Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 15/52] build-sys: add some sanitizers when --enable-debug if possible, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 10/52] build-sys: silence make by default or V=0, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 12/52] build-sys: compile with -Og or -O1 when --enable-debug,
Paolo Bonzini <=
- [Qemu-devel] [PULL 09/52] build-sys: fix qemu-ga -pthread linking, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 14/52] tests/docker: add test-debug, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 16/52] tests: fix check-qobject leak, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 13/52] tests/docker: add some sanitizers to fedora dockerfile, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 11/52] build-sys: add a rule to print a variable, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 17/52] vl: fix direct firmware directories leak, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 18/52] readline: add a free function, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 20/52] crypto: fix stack-buffer-overflow error, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 19/52] tests: fix migration-test leak, Paolo Bonzini, 2018/01/12
- [Qemu-devel] [PULL 23/52] ucontext: annotate coroutine stack for ASAN, Paolo Bonzini, 2018/01/12