From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:34731) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QBqTI-0000Mn-As for qemu-devel@nongnu.org; Mon, 18 Apr 2011 11:34:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QBqTD-0006ML-Sv for qemu-devel@nongnu.org; Mon, 18 Apr 2011 11:34:40 -0400 Received: from mnementh.archaic.org.uk ([81.2.115.146]:38149) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QBqTD-0006LB-M3 for qemu-devel@nongnu.org; Mon, 18 Apr 2011 11:34:35 -0400 From: Peter Maydell Date: Mon, 18 Apr 2011 16:34:25 +0100 Message-Id: <1303140866-29348-3-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1303140866-29348-1-git-send-email-peter.maydell@linaro.org> References: <1303140866-29348-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 2/3] arm-semi.c: Use correct check for failure of do_brk() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Riku Voipio , patches@linaro.org In the ARM semihosting implementation of SYS_HEAPINFO, use the correct check for whether do_brk() has failed -- it does not return -1 but the previous value of the break limit. Signed-off-by: Peter Maydell --- arm-semi.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arm-semi.c b/arm-semi.c index e9e6f89..5a62d03 100644 --- a/arm-semi.c +++ b/arm-semi.c @@ -440,15 +440,16 @@ uint32_t do_arm_semihosting(CPUState *env) /* Some C libraries assume the heap immediately follows .bss, so allocate it using sbrk. */ if (!ts->heap_limit) { - long ret; + abi_ulong ret; ts->heap_base = do_brk(0); limit = ts->heap_base + ARM_ANGEL_HEAP_SIZE; /* Try a big heap, and reduce the size if that fails. */ for (;;) { ret = do_brk(limit); - if (ret != -1) + if (ret >= limit) { break; + } limit = (ts->heap_base >> 1) + (limit >> 1); } ts->heap_limit = limit; -- 1.7.1