* 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.
This commit is contained in:
@@ -587,6 +587,9 @@ _getpid (int n __attribute__ ((unused)))
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Heap limit returned from SYS_HEAPINFO Angel semihost call. */
|
||||
uint __heap_limit = 0xcafedead;
|
||||
|
||||
caddr_t __attribute__((weak))
|
||||
_sbrk (int incr)
|
||||
{
|
||||
@@ -599,7 +602,9 @@ _sbrk (int 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 > __heap_limit))
|
||||
{
|
||||
/* Some of the libstdc++-v3 tests rely upon detecting
|
||||
out of memory errors, so do not abort here. */
|
||||
|
Reference in New Issue
Block a user