All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: qemu-devel@nongnu.org, "Martin Liška" <mliska@suse.cz>,
	"Eric Blake" <eblake@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>, "Jia Liu" <proljc@gmail.com>,
	qemu-trivial@nongnu.org, "Markus Armbruster" <armbru@redhat.com>,
	1874073@bugs.launchpad.net,
	"Christophe de Dinechin" <dinechin@redhat.com>,
	"Stafford Horne" <shorne@gmail.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: [PATCH] hw/openrisc/openrisc_sim: Add assertion to silent GCC warning
Date: Mon,  8 Jun 2020 09:14:09 +0200	[thread overview]
Message-ID: <20200608071409.17024-1-philmd@redhat.com> (raw)

When compiling with GCC 10 (Fedora 32) using CFLAGS=-O2 we get:

    CC      or1k-softmmu/hw/openrisc/openrisc_sim.o
  hw/openrisc/openrisc_sim.c: In function ‘openrisc_sim_init’:
  hw/openrisc/openrisc_sim.c:87:42: error: ‘cpu_irqs[0]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     87 |         sysbus_connect_irq(s, i, cpu_irqs[i][irq_pin]);
        |                                  ~~~~~~~~^~~

While humans can tell smp_cpus will always be in the [1, 2] range,
(openrisc_sim_machine_init sets mc->max_cpus = 2), the compiler
can't.

Add an assertion to give the compiler a hint there's no use of
uninitialized data.

Buglink: https://bugs.launchpad.net/qemu/+bug/1874073
Reported-by: Martin Liška <mliska@suse.cz>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/openrisc/openrisc_sim.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index d08ce61811..02f5259e5e 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -134,6 +134,7 @@ static void openrisc_sim_init(MachineState *machine)
     int n;
     unsigned int smp_cpus = machine->smp.cpus;
 
+    assert(smp_cpus >= 1 && smp_cpus <= 2);
     for (n = 0; n < smp_cpus; n++) {
         cpu = OPENRISC_CPU(cpu_create(machine->cpu_type));
         if (cpu == NULL) {
-- 
2.21.3



WARNING: multiple messages have this Message-ID (diff)
From: "Philippe Mathieu-Daudé" <1874073@bugs.launchpad.net>
To: qemu-devel@nongnu.org
Subject: [Bug 1874073] [PATCH] hw/openrisc/openrisc_sim: Add assertion to silent GCC warning
Date: Mon, 08 Jun 2020 07:14:09 -0000	[thread overview]
Message-ID: <20200608071409.17024-1-philmd@redhat.com> (raw)
Message-ID: <20200608071409.6QpgSIZwiLKuQBvuuHh7KvH7jOWWkLm4P-caYfoJ8es@z> (raw)
In-Reply-To: 158747496330.1952.6391008472811579405.malonedeb@chaenomeles.canonical.com

When compiling with GCC 10 (Fedora 32) using CFLAGS=-O2 we get:

    CC      or1k-softmmu/hw/openrisc/openrisc_sim.o
  hw/openrisc/openrisc_sim.c: In function ‘openrisc_sim_init’:
  hw/openrisc/openrisc_sim.c:87:42: error: ‘cpu_irqs[0]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     87 |         sysbus_connect_irq(s, i, cpu_irqs[i][irq_pin]);
        |                                  ~~~~~~~~^~~

While humans can tell smp_cpus will always be in the [1, 2] range,
(openrisc_sim_machine_init sets mc->max_cpus = 2), the compiler
can't.

Add an assertion to give the compiler a hint there's no use of
uninitialized data.

Buglink: https://bugs.launchpad.net/qemu/+bug/1874073
Reported-by: Martin Liška <mliska@suse.cz>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/openrisc/openrisc_sim.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index d08ce61811..02f5259e5e 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -134,6 +134,7 @@ static void openrisc_sim_init(MachineState *machine)
     int n;
     unsigned int smp_cpus = machine->smp.cpus;
 
+    assert(smp_cpus >= 1 && smp_cpus <= 2);
     for (n = 0; n < smp_cpus; n++) {
         cpu = OPENRISC_CPU(cpu_create(machine->cpu_type));
         if (cpu == NULL) {
-- 
2.21.3


** Changed in: qemu
     Assignee: (unassigned) => Philippe Mathieu-Daudé (philmd)

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1874073

Title:
  openrisc_sim.c:87:42: error: 'cpu_irqs[0]' may be used uninitialized
  in this function [-Werror=maybe-uninitialized]

Status in QEMU:
  Confirmed

Bug description:
  I see the warning since gcc10:

  static void openrisc_sim_init(MachineState *machine):
  ...
      qemu_irq *cpu_irqs[2];
  ...

  
      serial_mm_init(get_system_memory(), 0x90000000, 0, serial_irq,
                     115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);

  I would initialize cpu_irqs[2] with {}.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1874073/+subscriptions


             reply	other threads:[~2020-06-08  7:15 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-08  7:14 Philippe Mathieu-Daudé [this message]
2020-06-08  7:14 ` [Bug 1874073] [PATCH] hw/openrisc/openrisc_sim: Add assertion to silent GCC warning Philippe Mathieu-Daudé
2020-06-08  7:16 ` Thomas Huth
2020-06-08 15:33 ` Eric Blake
2020-06-08 15:33   ` [Bug 1874073] " Eric Blake
2020-06-09 20:42   ` Stafford Horne
2020-06-09 20:49     ` Stafford Horne
2020-06-09 20:49     ` Eric Blake
2020-06-09 20:49       ` [Bug 1874073] " Eric Blake
  -- strict thread matches above, loose matches on Subject: below --
2020-05-26 18:51 [PATCH] or1k: Fix compilation hiccup Eric Blake
2020-05-26 23:21 ` no-reply
2020-05-27  2:58   ` Eric Blake
2020-05-27  5:29 ` Thomas Huth
2020-05-27  7:27 ` Philippe Mathieu-Daudé
2020-05-27  7:27   ` [Bug 1874073] " Philippe Mathieu-Daudé
2020-05-29 16:21 ` Christophe de Dinechin
2020-05-29 16:40   ` Peter Maydell
2020-06-02  7:43     ` Markus Armbruster
2020-06-08  6:03       ` Markus Armbruster
2020-06-08  6:22         ` Philippe Mathieu-Daudé
2020-06-08  9:15           ` Markus Armbruster
2020-06-08 15:43             ` Eric Blake
2020-04-21 13:16 [Bug 1874073] [NEW] openrisc_sim.c:87:42: error: 'cpu_irqs[0]' may be used uninitialized in this function [-Werror=maybe-uninitialized] Martin Liska
2020-04-21 13:25 ` [Bug 1874073] " Martin Liska
2020-04-21 13:37 ` Peter Maydell
2020-04-21 14:08 ` Martin Liska
2020-04-21 14:36 ` Peter Maydell
2020-04-21 15:08 ` Philippe Mathieu-Daudé
2020-05-27  7:54 ` Martin Liska
2020-06-08  6:25 ` Philippe Mathieu-Daudé
2020-06-08 16:06 ` [PATCH v2] hw/openrisc/openrisc_sim: Add assertion to silence GCC warning Philippe Mathieu-Daudé
2020-06-08 16:06   ` [Bug 1874073] " Philippe Mathieu-Daudé
2020-06-08 19:42   ` Richard Henderson
2020-06-09 17:44   ` [Bug 1874073] " Laurent Vivier
2020-06-09 17:44     ` Laurent Vivier
2020-07-02  8:50 ` [Bug 1874073] Re: openrisc_sim.c:87:42: error: 'cpu_irqs[0]' may be used uninitialized in this function [-Werror=maybe-uninitialized] Philippe Mathieu-Daudé
2020-08-20 14:39 ` Thomas Huth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200608071409.17024-1-philmd@redhat.com \
    --to=philmd@redhat.com \
    --cc=1874073@bugs.launchpad.net \
    --cc=armbru@redhat.com \
    --cc=dinechin@redhat.com \
    --cc=eblake@redhat.com \
    --cc=mliska@suse.cz \
    --cc=peter.maydell@linaro.org \
    --cc=proljc@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-trivial@nongnu.org \
    --cc=shorne@gmail.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.