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 <email address hidden>
Suggested-by: Peter Maydell <email address hidden>
Signed-off-by: Philippe Mathieu-Daudé <email address hidden>
---
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
When compiling with GCC 10 (Fedora 32) using CFLAGS=-O2 we get:
CC or1k-softmmu/ hw/openrisc/ openrisc_ sim.o openrisc_ sim.c: In function ‘openrisc_ sim_init’ : openrisc_ sim.c:87: 42: error: ‘cpu_irqs[0]’ may be used uninitialized in this function [-Werror= maybe-uninitial ized] connect_ irq(s, i, cpu_irqs[ i][irq_ pin]);
hw/openrisc/
hw/openrisc/
87 | sysbus_
| ~~~~~~~~^~~
While humans can tell smp_cpus will always be in the [1, 2] range, sim_machine_ init sets mc->max_cpus = 2), the compiler
(openrisc_
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 openrisc_ sim.c | 1 +
Reported-by: Martin Liška <email address hidden>
Suggested-by: Peter Maydell <email address hidden>
Signed-off-by: Philippe Mathieu-Daudé <email address hidden>
---
hw/openrisc/
1 file changed, 1 insertion(+)
diff --git a/hw/openrisc/ openrisc_ sim.c b/hw/openrisc/ openrisc_ sim.c .02f5259e5e 100644 openrisc_ sim.c openrisc_ sim.c sim_init( MachineState *machine)
index d08ce61811.
--- a/hw/openrisc/
+++ b/hw/openrisc/
@@ -134,6 +134,7 @@ static void openrisc_
int n;
unsigned int smp_cpus = machine->smp.cpus;
+ assert(smp_cpus >= 1 && smp_cpus <= 2); CPU(cpu_ create( machine- >cpu_type) );
for (n = 0; n < smp_cpus; n++) {
cpu = OPENRISC_
if (cpu == NULL) {
--
2.21.3