On Wed, Oct 26, 2011 at 16:35, Stefan Weil <s...@weilnetz.de> wrote: > Am 26.10.2011 14:54, schrieb Stefan Hajnoczi: >> >> On Mon, Oct 24, 2011 at 10:18:43PM +0200, Stefan Weil wrote: >>> >>> For compilations with -DNDEBUG, the default case did not return >>> a value which caused a compiler warning. >>> >>> Signed-off-by: Stefan Weil <s...@weilnetz.de> >>> --- >>> hw/ppce500_spin.c | 11 ++++++++--- >>> 1 files changed, 8 insertions(+), 3 deletions(-) >>> >>> diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c >>> index cccd940..5b5ffe0 100644 >>> --- a/hw/ppce500_spin.c >>> +++ b/hw/ppce500_spin.c >>> @@ -168,17 +168,22 @@ static uint64_t spin_read(void *opaque, >>> target_phys_addr_t addr, unsigned len) >>> { >>> SpinState *s = opaque; >>> uint8_t *spin_p = &((uint8_t*)s->spin)[addr]; >>> + uint64_t result = 0; >>> >>> switch (len) { >>> case 1: >>> - return ldub_p(spin_p); >>> + result = ldub_p(spin_p); >>> + break; >>> case 2: >>> - return lduw_p(spin_p); >>> + result = lduw_p(spin_p); >>> + break; >>> case 4: >>> - return ldl_p(spin_p); >>> + result = ldl_p(spin_p); >>> + break; >>> default: >>> assert(0); >> >> I would replace assert(3) with abort(3). If this ever happens the >> program is broken - returning 0 instead of an undefined value doesn't >> help. >> >> Stefan > > Alex, do you agree on replacing assert() by abort()? > > I personally don't like abort() because it does not show the > reason for the failure. > > Most users don't know how to get a core dump or how to > use gdb. And even for those who know, a crash caused > by an abort() which cannot be reproduced usually happens > on a system were ulimit disables core dumps... > > I'd like to have a qemu_abort() macro in qemu-common.h which > replaces all abort() calls used today:
Also assert(0) calls. > #define qemu_abort() \ > do { \ > fprintf(stderr, "QEMU aborted in %s, %s:%u\n", __func__, __FILE__, > __LINE__); > abort(); > } while (0) > > (The macro could also call a function which handles fprintf and abort). There could be also a version with additional error message parameter.