Commit dfffe683 authored by Alexander Fedotov's avatar Alexander Fedotov Committed by Richard Earnshaw

Align libgloss/arm and libc/sys/arm sources: HeapInfo and __heap_limit

Applied changes from commit 8d98f956:

	* arm/crt0.S: Initialise __heap_limit when ARM_RDI_MONITOR is defined.
	* arm/syscalls.c: define __heap_limit global symbol.
	* arm/syscalls.c (_sbrk): Honour __heap_limit.

Applied changes from commit 8d98f956:
	Fixed semihosting for ARM when heapinfo not provided by debugger
parent 37e80fbb
......@@ -282,6 +282,13 @@
#endif
ldr r0, .LC0 /* Point at values read. */
/* Set __heap_limit. */
ldr r1, [r0, #4]
cmp r1, #0
beq .LC33
ldr r2, =__heap_limit
str r1, [r2]
.LC33:
ldr r1, [r0, #0]
cmp r1, #0
bne .LC32
......
......@@ -487,6 +487,9 @@ _getpid (void)
return (pid_t)1;
}
/* Heap limit returned from SYS_HEAPINFO Angel semihost call. */
uint __heap_limit = 0xcafedead;
void * __attribute__((weak))
_sbrk (ptrdiff_t incr)
{
......@@ -499,7 +502,9 @@ _sbrk (ptrdiff_t incr)
prev_heap_end = heap_end;
if (heap_end + incr > stack_ptr)
if ((heap_end + incr > stack_ptr)
/* Honour heap limit if it's valid. */
|| (__heap_limit != 0xcafedead && heap_end + incr > (char *)__heap_limit))
{
/* Some of the libstdc++-v3 tests rely upon detecting
out of memory errors, so do not abort here. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment