From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:33092) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJ6SQ-0002kK-Ih for qemu-devel@nongnu.org; Wed, 26 Oct 2011 12:36:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RJ6SP-0002pm-Bg for qemu-devel@nongnu.org; Wed, 26 Oct 2011 12:36:02 -0400 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:59479) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJ6SP-0002oL-6F for qemu-devel@nongnu.org; Wed, 26 Oct 2011 12:36:01 -0400 Message-ID: <4EA836BC.40409@weilnetz.de> Date: Wed, 26 Oct 2011 18:35:08 +0200 From: Stefan Weil MIME-Version: 1.0 References: <1319487523-19978-1-git-send-email-sw@weilnetz.de> <20111026125431.GC27267@stefanha-thinkpad.localdomain> In-Reply-To: <20111026125431.GC27267@stefanha-thinkpad.localdomain> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] Fix compiler warning (always return a value), introduce qemu_abort? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: Stefan Hajnoczi , qemu-devel@nongnu.org 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 >> --- >> 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: #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). Cheers, Stefan W.