The linker scripts linage vary so we can't really help without seeing the part that deals with the heap and stack at the end of the linker script.
Here is a snipped of mine, for a different part:
MEMORY
{
/*
* The linker will place into the text memory region every section which
* is not explicitly mapped into a memory region, and is either
* read-only or executable.
*/
VECTORS (rx) : ORIGIN = 0x0, LENGTH = 0x000000C0
FLASHCFG (rx) : ORIGIN = 0x00000400, LENGTH = 16
FLASH (rx) : ORIGIN = 0x00000410, LENGTH = 128K - 1K - 0x410 /* Flash size - EEPROM Sim size - vectors and Flash Config bytes */
EEPROMSIM (rx) : ORIGIN = 0x0001FC00, LENGTH = 1K /* Smallest sector size that can be erased on this part. Place to store simulated EEPROM constants */
/*
NOINIT (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 0x200
*/
RAM (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K /* Internal SRAM. flash_kinetis_cmd executes out of RAM */
}
[everything else here that consumes Flash or RAM]
.heap :
{
. = ALIGN(4);
__end__ = .;
end = __end__;
__heap_start = .;
*(.heap*)
. = ALIGN(4);
__heap_end = .;
} > RAM
/* Set stack top to end of RAM */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - 1k;
PROVIDE(__stack = __StackTop);
/* Check if data + heap + stack exceeds RAM limit: */
ASSERT(__StackLimit >= __heap_end, "Region RAM overflowed with stack")